UDN
Search public documentation:

TranslucentHairSortingKR
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

UE3 홈 > 스켈레탈 메시 > 반투명 헤어 소팅
UE3 홈 > 캐릭터 아티스트 > 반투명 헤어 소팅

반투명 헤어 소팅


문서 변경내역: Jack Porter 작성; 홍성진 번역.

개요


게임에서 헤어를 한 올 한 올 실시간 렌더하려면 꽤나 비싸기에, 보통은 그 위에다 헤어같아 보이는 폴리곤 층을 놓는 식으로 해결하고 있습니다. 그런 다음 폴리곤에다가 반투명 에지 헤어 가닥으로 텍스처를 입히는 것입니다. 이 방법에서 생길 수 있는 문제라면 폴리곤이 서로 교차할 수가 있다는 것인데, 그렇게 하지 않으면 캐릭터 머리 위에 얹어 놓은 헬멧 같아 보일 수가 있으니 어쩔 수 없습니다. 폴리곤이 교차해 버리면 많은 실시간 렌더러에서는 폴리곤을 올바른 순서대로 그리지 못하므로 폴리곤이 반짝이거나 튀어보이게 됩니다. 언리얼 엔진 3 에서는 아티스트가 스켈레탈 메시 안에서 폴리곤 렌더링 순서를 직접 조절할 수 있게 하여 이 문제를 해결하고 있습니다.

물론 헤어는 머리칼이나 털 뿐만 아니라 가죽이나 이끼같은 것으로 바꿔도 됩니다.

반투명 헤어 소팅 기능 접근법


헤어 소팅 기능은 애님세트 에디터 를 통해 접할 수 있습니다. 여기서 소팅 모드를 포함해 반투명 헤어가 될 부분 작업을 하면 됩니다.

트라이앵글 소팅 모드


TRISORT_None

인덱스 버퍼에 소팅이 적용된 적이 없고, 트라이앵글 그리기 순서는 버텍스 캐시에 대해 최적화된 대로입니다.

TRISORT_CenterRadialDistance (중심 방사형 거리)

이 머티리얼/섹션에 대한 모든 버텍스 중심을 찾습니다. 그리고서 에지를 공유하는 연속된 트라이앵글 스트립을 간추립니다. 그런 다음 메시 중심에 가까운 스트립을 시작으로 밖으로 나가며 그 다음으로 가까운 스트립을 그립니다. 낮은 레이어가 먼저 렌더되기에, 보통 플레이어 머리에 좋습니다.

TRISORT_Random

테스트용 모드로, 트라이앵글을 임의로 소팅합니다.

TRISORT_Tootle

이 모드는 TRISORT_CenterRadialDistance 와 유사한 소팅을 위해 AMD의 오버드로-최소화 Tootle 라이브러리를 사용합니다.

TRISORT_MergeContiguous (인접 병합)

이 모드는 기존 그리기 순서를 최대한 유지하되, 어떤 트라이앵글 스트립이 (에지를 공유하거나 해서) 물리적으로 연결되었는데도 인덱스 버퍼에는 (그리기 순서가) 붙어있지 않은 경우, 트라이앵글 스트립을 붙이기 위해 병합시킵니다. 이 방법은 메시 임포트 직후 디폴트 그리기 순서가 꽤나 괜찮은데 인접되지 않은 스트립이 조금 있을 때 좋습니다. 일단 스트립이 인접되면 TRISORT_Custom 으로 스트립 그리기 순서를 조절하면 됩니다.

TRISORT_Custom

트라이앵글 개별 스트립을 선택하고 소팅 순서를 바꿔, 항상 다른 헤어 스트립 앞이나 뒤에 렌더링되도록 할 수 있는 옵션입니다.

보통 헤어에 가장 좋은 방법은, TRISORT_CenterRadialDistance 로 소팅(1)하여 적절한 헤어 그리기 순서를 얻습니다. 그런데 가끔은 특정 헤어 스트립을 다른 스트립 앞뒤에 렌더링하도록 바꾸는게 나을 수가 있습니다. 아래 예제에서, 원형 헤어 스트립(2)을 그 옆의 헤어 스트립 뒤에 렌더하고 싶다 칩시다.

이를 위해, TRISORT_Custom 으로 바꾸고서 ASV 툴바 아이콘으로 커스텀 소팅 편집 모드를 켭니다.

커스텀 소팅 모드에 들어가면 헤어 스트립을 클릭하여 선택할 수 있습니다. 헤어 스트립이란 최소 하나 이상의 에지가 공유된 메시 안의 트라이앵글 세트를 말합니다. 선택된 것은 헤어 위에 하양 와이어프레임으로 그려지며, 뒤로 이동시키면 다른 스트립 뒤에 그려지고, 앞으로 이동시키면 다른 헤어 스트립 앞에 그려지게 됩니다.

뒤로 이동시키려면 B키를 누르고서 마우스를 다른 헤어 스트립 위로 움직입니다. 커서 아래의 스트립이 파래지며, 현재 선택된 스트립 뒤에 있음을 나타냅니다. 계속 B를 누른 채로 왼쪽 마우스 버튼을 클릭하면, 하양 선택 스트립의 그리기 순서가 바뀌어 파랑 스트립 뒤에 렌더됩니다.

앞으로 이동시키려면 F키를 누르고서 마우스를 다른 헤어 스트립 위로 움직입니다. 이번에는 현재 선택 스트립 앞에 있는 스트립만 파랗게 반전되게 됩니다. 파랑 스트립을 클릭하면 선택 헤어의 그리기 순서가 바뀌어 파랑 스트립 앞에 렌더됩니다.

뷰포트 하단의 노랑 텍스트를 통해 각 단계별로 뭘 해야할 지 알 수 있습니다.

드디어 헤어 스트립이 원하는 순서대로 렌더되었습니다:

TRISORT_CustomLeftRight

이 옵션은 TRISORT_Custom과 하는 일이 완전 똑같으나, 그리기 순서를 둘 저장합니다: 하나는 모델의 왼편에서 볼 때, 하나는 오른편에서 볼 때 입니다. 뷰어가 메시를 보고 있는 방향에 따라 그리기 순서가 실행시간에 선택되게 됩니다. 이 옵션은 섹션의 트라이앵글 당 6 Byte만큼 메모리 사용량이 늘어납니다.

툴바에 있는 버튼으로 좌우 그리기 순서를 바꿀 수 있습니다.

  • CustomLeftRightBoneName (커스텀 좌우 본 이름) - 어느 쪽의 헤어를 표시할지를 정하기 위해 좌표와 축 등을 기준점으로 사용할 본의 이름입니다. 보통은 머리 본입니다. None 으로 설정된 경우, 원점과 메시의 로컬 공간이 사용됩니다.
  • CustomLeftRightAxis (커스텀 좌우 축) - 카메라가 메시를 향할 때 오른쪽을 향하는 본 축입니다. 스켈레톤 렌더링과 선택적으로 본 이름을 켜면 각 본에 대한 축을 시각화시켜 볼 수 있습니다. 각 본에는 3색선이 있으며, X 는 빨강, Y 는 초록, Z 는 파랑 입니다.

트라이앵글 그리기 순서 시각화 슬라이더


이 슬라이더로 트라이앵글 그리기 순서를 시각화시켜 볼 수 있습니다. 슬라이더를 왼쪽으로 끌면 표시되는 반투명 트라이앵글 수가 렌더링되는 순서대로 차차 감소되며, 오른쪽으로 끌면 증가됩니다. 이를 통해 다른 스트립에 가려진 스트립 선택을 위해 반투명 레이어를 서서히 벗겨볼 수도 있겠습니다.

반투명 블렌드 모드인 머티리얼에만 효과과 있습니다.

스켈레탈 메시 리임포팅 관련 공지


커스텀 소팅을 가진 스켈레탈 메시를 리임포트할 때, 언리얼은 커스텀 소팅 순서 백업 및 복원을 시도합니다. 버텍스 순서도 같을 필요는 없습니다. 대신 새 메시의 각 헤어 스트립에 있는 각각의 트라이앵글에 대한 참조 포즈 위치가 구형 메시와 비교됩니다. 스트립의 트라이앵글 전부가 일치하면, 스트립의 그리기 순서는 유지됩니다. 버텍스가 수정된 헤어 스트립이거나 새로 추가된 헤어 스트립의 경우는 수동으로 소팅해야 하나, 나머지 스트립의 순서는 유지됩니다. 구형 메시의 스트립이 새 메시와 일치하지 않는 게 있으면, 경고창을 통해 얼마나 일치하지 않는지 유저에게 알려주게 됩니다.

원패스 헤어 라이팅


반투명 라이팅을 패스 여러번으로 처리하면, 같은 메시에 레어이가 여럿 겹쳐버려 결과물이 너무 밝아지게 됩니다. 스켈레탈 메시 시네마틱 액터 에 기본값인 원패스 라이팅 설정이 새로 생겼으니, 에디터에서 라이팅을 미리보려면 스켈레탈 메시 시네마틱 액터 를 놓아 보면 됩니다. 원패스 라이팅을 사용하려면 게임플레이 스켈레탈 메시 컴포넌트 상의 스크립트에 bUseOnePassLightingOnTranslucency (반투명에 원패스 라이팅 사용여부) 플랙을 참으로 설정해야 합니다.

상세 정보는 2010/08/04 콘텐츠 블로그 게시물을 참고하시기 바랍니다.