UDN
Search public documentation:

SpeedTreeKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

스피드 트리

문서 요약: 에디터에서 SpeedTree(스피드트리) 액터를 사용하는 방법입니다. 스피드트리 5 에 맞게 업데이트되었습니다.

문서 변경내역: Ryan Brucks 작성. Daniel Wright, Jordan Walker 업데이트. 홍성진 번역.

넓은 개념

스피드트리 5.0 에는 세 가지 컴포넌트가 있는데, 스피드트리 모델러, 스피드트리 컴파일러, UE3 게임/에디터 통합 입니다. 모델러에서는 나무의 모양, 바람, 충돌 등에 대해 반복처리할 수 있습니다. 모델러는 외부 어플리케이션을 사용하여 렌더링하기에 UE3에서 보는 것과 일치하지 않을 수 있습니다. 모델러는 .SPM 파일을 내보내며, 컴파일러를 통해서만 읽을 수 있습니다. 컴파일러는 .SPM 파일을 받아다가 텍스처 아틀라스(atlas), 버텍스 데이터, 그 외 나무에 관련된 정보 등을 생성합니다. 텍스처를 제외한 모든 것을 .SRT 파일 속에다 저장하며, 이것을 UE3 속으로 가져오게 됩니다.

아트스트의 경우: 꼭 IDV의 문서를 읽어 보시기 바랍니다:
%speedtree apps folder%/Content/Tools/5.0/SpeedTree_Applications_v5.0_Full/Documentation

프로그래머의 경우: IDV의 스피드트리 SDK 문서를 읽어 보시기 바랍니다.

아틀라스

스피드트리는 모든 텍스처를 아틀라스 위에 결합하기를 좋아합니다. 빌보드 이미지를 아틀라스 위에 결합하기만 한다면 게임에는 최적입니다. 이를 통해 복수의 나무에 나뭇잎과 줄기 텍스처를 공유시켜 메모리를 절약할 수 있습니다. 나무간에 공유시킬 껍질과 나뭇잎에 대한 아틀라스를 포토삽에서 직접 만들려는 경우, 컴파일러에서의 아틀라스 생성 단계는 건너뛰시기 바랍니다.

나뭇잎

스피드트리는 나뭇잎에 빌보드 사용을 지원합니다만, 매우 비효율적입니다. 메시를 나뭇잎이나 가지의 그룹으로 정의하는 것이 훨씬 낫습니다.

가지

가지는 마스킹된 머티리얼을 사용한 잎사귀 모양 메시보다는 그냥 메시를 쓰는 것이 모양에도 성능에도 좋습니다. 메시를 쓰면 오버드로도 줄고 원거리 최적화도 되고 일석이조입니다.

컴파일하기

컴파일하기는 꽤나 간단합니다. 스피드트리를 띄우시고요. 텍스처 아틀라스가 아닌, 빌보드 아틀라스를 생성하십시오. 완료 선택. 왼쪽 창에서 Texture Copy 선택을 해제하십시오. 안그러면 나무에 사용된 텍스처가 항상 내보내기 디렉토리로 복사됩니다. 아틀라스 파일 유형에 사용가능한 파일 유형(보통 .tga)을 고르십시오. 그런 다음 Session->Compile Now 를 선택합니다.

LOD

스피드트리 5.0에는 둘 이상의 지오메트리 LOD가 있으며, 최종 LOD가 빌보드입니다. 상위 디테일 지오메트리 LOD는 에디터에서 구성한 SpeedtreeActor 의 파라미터와 거리에 따라 하위 디테일 지오메트리 LOD로 변이(morph)됩니다. 그리고서 빌보드 스크린도어가 페이드 인 되고, 하위 디테일 지오메트리 LOD는 페이드 아웃 됩니다.

모델러에서의 LOD 구성

'Object Properties - Tree' 아래, 'Level of Detail' 범주에 있는 'Enabled' 를 체크합니다. 'Count' 값은 원하는 대로 바꿉니다. 'Preview style' 을 'Use near and far' 로 변환하고, 마우스 휠을 사용하거나 왼쪽+가운데 클릭후 끌기를 통해 줌 인 / 아웃 합니다. 이 범주 아래의 LOD 거리를 바꿔서 지오메트리 LOD 이행을 미리볼 수 있습니다만, 유념할 것은 빌보드 이행은 볼 수 없으며 여기에 설정된 값은 UE3에 사용되지 않는다는 것입니다.

컴파일러에서의 LOD 구성

컴파일러에서 나무을 열기 전에, 모델러에서 불러올 때 에러가 없는지 확인하십시오. 컴파일러는 에러 검사를 하지 않으며, 내보내기가 알아채기 어려운 식으로 망가지게 됩니다. 예를 들어 나뭇잎 메시가 컴파일할때 빠져있는 경우, 빌보드는 중앙에서 벗어나 내보내지기에 일부만 둘러싸이게 됩니다. 불러오기에 실패한 메시는 Output 창에 통지됩니다.

세션을 새로 만들고 나무를 선택할 때, 'Compilation Settings' 대화창에서 이와 같이 설정하십시오:

CompilationSettings.jpg

Finish를 클릭합니다. (Finish and Compile 이 아닙니다.)

에디터에서 가져올 수 있도록 Compilation Image를 tga 로 출력하도록 합니다.

아래 스크린샷의 좌상단 부분에서 보이는 것처럼, 에디터에서 거리가 멀 때 빌보드 주위에 깜빡이는 헤어라인 부작용이 생기는 경우, 빌보드 보더(경계)를 키우십시오:

BillboardAtlasArtifact.jpg

마지막으로 Start Compilation 을 클릭하고, 다음 단계에서 쓸 출력 파일에 대해 컴파일러가 뭐라 그러는지 기록 유지하시기 바랍니다.

UE3에서 LOD 구성

.SRT 파일을 컴파일러에서 가져옵니다. 다음으로 BillboardAtlas_Diffuse.tga 를 가져오기 위해 임포트 대화창이 뜰 때, 'Dither Mip-maps alpha' 를 체크합니다. 빌보드를 페이딩하기 위한 스크린도어에 쓸 노이즈를 알파 채널과 TextureAtlas_Diffuse.tga 에도 만들어 줍니다. 브랜치도 페이딩을 디더링하려는 경우, 브랜치 텍스처를 가져올 때도 똑같이 해 주시면 됩니다. 가지가 있는 곳의 부시는 멀리서 잘 보이지 않으니, 디더링은 건너뛰고 불투명 머티리얼을 사용하는 것이 훨씬 효율적입니다. BillboardAtlas_Normal 을 가져올 때는 압축을 TC_Normalmap 로 해야 한다는 것 기억하시고요.

나뭇잎용 머티리얼을 만듭니다. LOD 작업 도중의 페이딩을 디더링하기 위한 최소한의 구성은 이와 같습니다:

BranchMaterial.jpg

스피드트리 런타임은 이 작업을 위해 LOD 값을 버텍스 컬러 알파 속으로 전달합니다. 빌보드 머티리얼도 같은 식으로 구성합니다. 가져온 USpeedtree 애셋을 열고 새로 만든 머티리얼들을 할당해 줍니다.

레벨에 SpeedTreeActor 를 놓고 Lod Level Override 를 -1로 설정합니다. 다양한 LOD 거리(Lod 3DStart 등)를 통해 LOD 이행을 제어합니다.

또다른 방법은 스피드트리의 나뭇잎과 가지 스케일링 및 쳐내기(scaling and pruning of leaves and branches)를 활용하는 것입니다. 이는 시각적으로도 그럴듯하며, 머티리얼 작업도 덜합니다. 스피드트리 모델러에서 설정할 수 있는 옵션입니다.