
Imposter (임포스터)란 플립북 스타일의 텍스처를 사용하여 가능한 모든 시야, 아니면 텍스처 시트에 편안하게 들어맞을 수 있는 최소 갯수의 시야에서 스태틱 메시를 본 것을 저장하는 스프라이트를 말합니다. 그 결과 머티리얼과 라이팅 관점에서 원본 메시와 매우 잘 맞아 떨어지는 스프라이트가 나오게 되지만, 프레임 사이에 약간 튀는 부분이 생깁니다. 즉 모든 적용 상황에 완벽하지 않다는 뜻입니다. 엄청나게 많은 오브젝트를 렌더링해야 하는데 카메라 가까이 천천히 지나지 않는 경우, 매우 유용할 수 있습니다.
초기 셋업
임포스터 스프라이트를 만들기 전, 임포스터 텍스처 시리즈를 구워야 합니다. 그러기 위해서는 RenderToTexture_LevelBP 의 Render Type 을 Render 3D Imposter Sprites 로 설정하고, Capture Settings 를 선택한 다음, render 3D Imposter Sprite 세팅을 조절해야 합니다.

프로퍼티 | 설명 |
---|---|
Imposter Static Mesh | 임포스터를 만들려는 스태틱 메시입니다. |
Imposter Material Array | 하나 이상의 머티리얼 ID 를 가진 메시의 각 인덱스에 머티리얼을 지정할 수 있도록 하기 위한 배열입니다. 임포스터 머티리얼 배열 내 머티리얼에 대한 노멀맵 입력에 "Tangent to Local" 설정된 Transform 노드를 사용해야 합니다. 그 이유는, 모두 이 내려보기 방식이 강제하는 같은 카메라를 사용하는 대신, 카메라가 바라봤으면 하는 방향으로 월드 노멀을 표현하고 싶기 때문입니다. 노멀맵 텍스처가 없는 경우, 단순히 0,0,1 트랜스폼이 적용된 탄젠트->월드 를 사용하면 됩니다. |
Frames around Z | 임포스터가 Z 주변으로 몇 프레임이나 저장할지 결정하는 세팅입니다. 수치가 클 수록 모션 도중 최종 결과의 '팝핑' 이 줄어들지만 텍스처 해상도가 줄어들거나 크기가 매우 큰 텍스처를 사용해야 하는 경우가 생깁니다. |
Mesh Scale | 최종 임포스터 스프라이트 머티리얼에 에지가 새는 문제가 있는 경우 메시의 스케일을 살짝 낮출 수 있습니다. 메시가 구체 바운드에 매우 밀접하게 일치되어 메시가 각 그리드 셀의 에지에 가까워지는 희귀한 경우에만 필요합니다. 스케일이 작을 수록 손실되는 해상도도 커지므로, 필요할 때만 조절하세요. |
Aspect Ratio 1 by | 비균등 텍스처를 만들 수 있도록 해 주는 세팅입니다. 기본값 1 에서 임포스터 그리드는 정사각형입니다. 2 가 되면, 종횡비가 2:1 이 되며, 4 면 4:1 식입니다. "풀 3D 임포스터" 의 경우 종횡비를 정사각형으로 유지하지만, "단일 회전축" 모드 사용시에만 변경하는 것이 좋습니다. 주: 이름이 부적절하므로, 곧 개선될 것으로 기대합니다. |
Imposter Enum | 임포스터 굽기의 두 가지 유형인 "Full 3D Imposters" (풀 3D 임포스터)와 "Single Rotation Axis" (단일 회전축) 사이에서 선택할 수 있도록 해주는 드롭다운 리스트입니다. 풀 3D 임포스터는 위와 아래를 포함한 모든 각도에서 표현됩니다. "단일 회전축" 은 Z 축만을 중심으로 회전하는데, 나무, 거대한 빌딩이나 일반적인 스카이박스 요소처럼 수평선에 서있는 것들에 대한 원거리 LOD 를 만들기에 이상적입니다. 단일 회전축은 저장에 필요한 공간이 많지 않아 텍스처 메모리를 더욱 효율적으로 사용할 수 있습니다. |
Single Rotation Axis rotation | 단일 회전축 옵션이 선택되었을 때만 사용되는 초기 회전 세팅입니다. 카메라를 기준으로 메시의 방향을 맞출 수 있습니다. |
메시 노멀
임포스터를 만들고자 하는 메시의 머티리얼에는 몇 가지 트윅 작업이 필요합니다.
- 임포스터를 만들려 하는 스태틱 메시의 머티리얼을 엽니다.
- 머티리얼 노드를 선택합니다.
- 탄젠트 스페이스 노멀 을 끕니다.
-
머티리얼 그래프의 노멀 맵/계산과 머티리얼 노드의 노멀 입력 핀 사이에 Transform 노드를 추가합니다.
노멀 맵 또는 노멀 계산이 없는 경우, 0,0,1 (파랑) 으로 설정된 벡터를 추가하여 대신 사용해도 됩니다.
- Transform 노드에서 Source 프로퍼티를 Tangent 로 설정합니다.
- Transform 노드에서 Destination 프로퍼티를 Local 로 설정합니다.

임포스터 렌더
임포스터에 원하는 프레임 수를 환경설정해 준 이후, 임포스터 텍스처 렌더링은 원본 "타일링 머티리얼" 과 똑같습니다.
캡처 세팅 아래 원하는 버퍼 타깃을 선택합니다. 고해상도 스크린샷 창이 열려있는지, 버퍼 시각화 포함 옵션이 켜져있는지 확인합니다. 새 창 에서 게임을 플레이 하고, ~ 키를 눌러 콘솔 을 띄운 다음 "ke * rendertextures" 를 입력합니다.

이미지가 저장되었다는 메시지가 뜰 것입니다. 그 메시지는 사실 클릭하면 해당 폴더 위치로 이동되는 링크입니다. 제때 링크를 클릭할 수 없었다면, 저장된 텍스처는 다음 위치에서 찾을 수 있습니다:
\YourProject\Saved\Screenshots\Windows\
노멀맵이 거의 파랑에 연빨강/초록 조금인 것으로 보인다면, 스태틱 메시의 머티리얼에서 탄젠트를 로컬 스페이스 노멀로 변환하는 단계를 생략했기 때문일 수 있습니다.
임포스터 임포트
언리얼 엔진 4 의 고해상도 스크린샷 기능이 .bmp 파일을 익스포트하므로, 이미지 편집 툴에서 로드하고 .tga 파일로 저장하면, 다른 텍스처처럼 임포트할 수 있습니다.
노멀 맵 텍스처 조절
노멀 맵 텍스처에 프로퍼티를 몇 가지 변경해 줘야 합니다:
- 콘텐츠 브라우저 에서 노멀맵을 더블클릭 하여 엽니다.
- sRGB 프로퍼티를 끕니다.
- Compression Settings 을
TC_Default
로 설정합니다. - 텍스처를 저장합니다.

임포스터 머티리얼 제작
렌더링된 임포스터 이미지 시리즈가 생겼습니다. 이 텍스처를 활용하려면, 콘텐츠 브라우저 에서 ImposterUVs 머티리얼 함수를 클릭한 뒤 임포스터 머티리얼 그래프에 끌어놓아 머티리얼을 만들어 줘야 합니다.


이 함수는 머티리얼에 대한 UV, 노멀, WorldPositionOffset 을 셋업해 줍니다. 임포스터 셋업에 일치시키기 위해 정의해 줘야 하는 파라미터가 몇 가지 있습니다:
입력 핀 | 설명 |
---|---|
Frames X (S) | 임포스터에 대한 X 축 상의 프레임 수가 되어야 합니다. 예를 들어 Z 축으로 16 로테이션을 지정했다면, X 축에 16 프레임일 것입니다. |
Fixed Z (B) | "단일 회전축" 임포스터 사용시에만 True 로 설정해야 하는 부울 옵션입니다. 계산 비용이 훨씬 저렴해 집니다. |
Frames Y (S) | Y 축의 프레임 수여야 합니다. 정사각 종횡비의 경우 항상 Y 프레임과 일치해야 합니다. 종횡비가 2:1 인 경우, Y 프레임 수는 X 프레임 절반이어야 합니다. |
SpriteWidth (S) | 결과 스프라이트의 폭입니다. |
SpriteHeight (S) | 결과 스프라이트의 높이입니다. |
Position (V3) | 기본으로 AbsoluteWorldPosition (절대 월드 위치)이며, 대부분의 경우 놔둬야 합니다. 이상한 각도로 임포스터를 표시하거나, 커스텀 데이터로 위치를 나타내고자 하는 경우 대안으로 사용할 수 있습니다. |
VertexShaderZrotation (S) | 디버그 전용 세팅입니다. 스프라이트의 Z 회전을 전체 범위에 걸쳐 부드럽게 보간하기 보다는 구분된 단계 세트별로 나눕니다. 임포스터를 굽는 방식으로 인해 팝핑이 더욱 안좋아 보이는 것을 방지합니다. 부드러운 스프라이트 보간으로는, 각 프레임 전환마다 임포스터의 회전이 넘어가는 것으로 보입니다. 값이 1 이면 그러한 현상을 고칩니다. 0 으로 설정하면 꺼진 상태에서 어때 보이나 확인할 수 있습니다. 임포스터 메시 위에서 가장 눈에 띕니다. |
Rotation (S) | 임포스터 스프라이트는 지정된 축을 중심으로 회전 가능합니다. 이를 통해 월드의 동일한 임포스터 스프라이트의 여러 사본을 임의로 회전시켜 같아 보이지 않도록 합니다. |
Rotation Axis (V3) | 이 세팅은 현재 꺼져있습니다. 회전축은 항상 0,0,1 또는 Z 축입니다. 그 이외의 회전축을 지원하려 할 때 문제가 있었으며, 나중에 지원될 수도 있습니다. |
Normals (V3) | 노멀맵 텍스처여야 합니다. 노멀을 회전시켜 지정된 회전 값에 일치시킵니다. |
출력 핀 | 설명 |
---|---|
TransformedNormals | 트랜스폼 적용된 노멀맵이 들어있으며, 머티리얼 노멀 입력에 연결됩니다. |
WorldPositionOffset | 카메라를 향하는 스프라이트에 대한 WPO 가 들어있으며, 월드 포지션 오프셋 입력에 연결됩니다. |
UVs | 임포스터 텍스처에 대한 UV 입니다. 머티리얼에 배치하는 임포스터 텍스처는 이 출력을 UV 로 가져야 합니다. 거기에는 노멀맵이 포함되며, 그렇게 되면 "노멀" 입력의 함수로 반복해 돌아가는 것으로 보입니다. |
Phase2UVs | 실험단계 기능으로 완전히 구현되지 않았습니다. 한 페이즈 앞 및/또는 뒤의 텍스처 룩업 둘 이상을 두고 희미하게/녹아들게 만들어 팝핑을 줄이는 기능의 초기 단계입니다. |
머티리얼은 이런 모습일 것입니다:
노멀 맵 텍스처에서 입력을 받는 Constant Bias Scale 노드가 보일 것입니다. 월드 스페이스 노멀에 대해 컬러 밸런스를 다시 맞춰야 합니다.
풀 3D 임포스터 예제:

단일 회전축 임포스터 예제:
