UDN
Search public documentation:
UsingDecalsKR
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
日本語訳
中国翻译
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
데칼 사용하기
문서 변경내역: Dave Burke 작성. 홍성진 번역.
개요
데칼이란 무엇인가
"스태틱" 데칼
"스태틱"(Static, 가만히 있는) 데칼은 언리얼 에디터에서 레벨에 놓은 데칼을 말합니다. 스태틱 데칼의 런타임 비용은 스태틱 메시와 거의 같습니다만, 데칼쪽이 폴리가 훨씬 적으면서 충돌하지도 않고 막지도 않으며 그림자를 드리우지도 않습니다."다이내믹" 데칼
"다이내믹"(Dynamic) 데칼은 게임플레이 도중 스폰되는 데칼로, 예를 들자면 무기에 맞은 효과 정도입니다. 게임에 스폰되는 데칼은 처음에 한 번 생성 비용이 들고, 그 이후의 프레임별 비용은 스태틱 데칼과 (드로 콜 뿐이니) 같습니다.데칼 머티리얼
- 투명한 머티리얼을 사용하는 데칼은 포그에 관련해서 다른 투명 메시형과는 다르게 렌더됩니다.
- 라이팅된(lit) 머티리얼을 사용하는 데칼은 머티리얼 안에서 계산한 노멀을 데칼 탄젠트 프레임으로 변환(transform)해야 합니다.
- 데칼과 함께 사용되지 않는 셰이더(, 예를 들면 그림자, z-only, 속도 등)는 데칼 머티리얼에 대해서는 컴파일되지 않습니다. 즉 데칼이 아닌 메시(non-decal mesh)에 적용된 데칼 머티리얼은 바르게 그림자를 드리우거나, 모션 블러에 들어가거나 하지 않는다는 뜻입니다.
데칼 머티리얼 만들기
보통의 머티리얼과 마찬가지로 데칼 머티리얼은 콘텐츠 브라우저의 빈 곳에 우클릭한 후 새 DecalMaterial 을 선택하면 됩니다. 머티리얼에 새 이름과 대상 패키지를 지정해 주고 OK 를 누릅니다. 그러면 콘텐츠 브라우저에 데칼 머티리얼 오브젝트가 새로 생깁니다. 그 위에 더블클릭하면 머티리얼 에디터가 머티리얼을 편집할 수 있는 상태로 열립니다.데칼을 레벨에 추가하기
데칼 만들기
씬에 데칼을 가장 쉽게 추가하는 방법은, 콘텐츠 브라우저에서 데칼 머티리얼을 선택한 다음 퍼스펙티브 뷰포트에서 'D' 키를 누르고 표면에 왼클릭하면 됩니다. 그러면 그 표면에 쏴지는 데칼이 생깁니다. 다른 방법으로는 보통의 우클릭 메뉴에서 액터 추가 옵션을 통해 데칼을 만들 수도 있지만, 그렇게 인스턴싱한 데칼의 위치와 방향은 수동으로 잡아줘야 합니다.크기, 타일링, 오프셋 조절하기
데칼을 만들고 나면 트랜슬레이션과 로테이션 위젯을 사용하여 위치와 방향을 잡아주면 됩니다. 비균등 스케일 위젯으로 데칼 볼륨의 폭, 높이, 먼-평면(far-plane) 거리를 조절합니다. 데칼 머티리얼은 OffsetX, OffsetY, TileX, TileY 프로퍼티를 설정하여 타일링과 오프셋(이동)이 가능합니다. 이들 프로퍼티는 비균등 스케일 위젯에도 연결되어 있는데, 데칼 머티리얼의 비균등 스케일 위젯을 드래그할 때 Shift 키를 누르면 타일링이, Alt 키를 누르면 오프셋이 조절됩니다. 아래 이미지에서 보니, 넓은 타일링 데칼이 BSP 사이의 이음새를 덮어주고 있습니다.받는 표면 조절하기
DecalFilter 프로퍼티 카테고리에는 데칼을 쏴줄 수 있는 표면을 조절하는 데 사용할 수 있는 프로퍼티 목록이 포함되어 있습니다. BSP, 스켈레탈 메시, 스태틱 메시, 터레인 등 어디에 데칼을 쏴줄 수 있는지 조절하는 체크박스가 있습니다. 아래 이미지에서 BSP 에는 쏘지 말라고 데칼에 설정해 놨기 때문에, 스태틱 메시에 있는 데칼 부분만 보이고 있습니다. 데칼에는 액터별로 쏴줄 수 있는 것을 조절할 수 있는 프로퍼티 Filter 와 FilterMode 도 있습니다. 아래 예제에서 보면 FilterMode = FM_Ignore 옵션으로 스태틱 메시가 추가되었는데, 그 스태틱 메시만 데칼이 무시한다는 뜻입니다.프로그래머 대상
고민 해결
밉맵과 충돌(conflict)
데칼 텍스처에 밉맵 기능을 켜면 데칼 에지(가장자리) 주변에 부작용이 생길 수 있습니다: 이 문제에 대한 자세한 설명과 그 회피 방법은 이렇습니다: 데칼 텍스처 좌표는 데칼 이미지 평면 위에 받는 지오메트리를 쏴서 계산합니다. 받는 지오메트리가 데칼 프러스텀에 대해 클리핑되(clipped, 잘리)면 (디폴트 행위), 데칼 프러스텀 외부는 필되(fill, 채워지)지 않으며, 모든 데칼 텍스처 좌표는 [0,1] 범위 안에 있게 됩니다. 데칼 컴포넌트를 터레인 위에 쏘고 있고 UDecalComponent::bNoClip (U 데칼 컴포넌트::클리핑 않음) 옵션이 참으로 설정된 경우, 데칼 지오메트리는 데칼 프러스텀에 대해 클리핑되지 않으며, 오히려 원래 메시의 버텍스를 '데칼 버텍스'로 사용합니다. 디폴트 방식과 비교했을때 'NoClip' 방식에 필(fill)이 추가되기는 하지만, 클리핑이 없어 관련되는 시간은 짧아집니다. 'NoClip' 접근법에서 주의할 점은, 데칼 이미지 평면 외부에 쏴 지는 버텍스는 음수값 텍스처 좌표를 사용하기에, 데칼 머티리얼에 사용되는 텍스처의 어드레스 모드에 클램프(clamp, 일정 범위로 제한)된 텍스처 어드레싱을 사용해 줘야 한다는 점입니다. 줄무늬(streaking)가 생기는 이유는, 더 낮은 레벨의 밉을 계산하는 데 사용된 필터링이 0 이 아닌 색을 에지 텍셀로 새 나가게 만들고, 텍스처의 클램프된 어드레싱 때문에 그 텍셀이 다른 파편(fragment)에 걸쳐 버리기 때문입니다. 이 줄무늬를 고치려면, 데칼 머티리얼 안의 텍스처에 대한 텍스처 프로퍼티를 열고, 텍스처 상의 bPreserveBorderR/G/B/A (테두리 보존) 플랙을 설정하여 더 낮은 밉에서도 투명한 테두리 픽셀이 보존되게 하면 됩니다.렌더링 안됨
데칼이 에디터나 게임에서 보이지 않을 때 점검해 볼 사항은:- 뷰포트가 '라이팅포함'(Lit) 뷰모드로 설정되었는지 (데칼은 라이팅이 없으면 표시되지 않습니다).
- 데칼이 받는 것과 같은 레벨에 있는지 (아니면 여러 개의 레벨에 있는 받는 것에 쏴 줘야 하는 경우 각 레벨마다 복제했는지).
- 받는 메시 컴포넌트에서 bAcceptsStaticDecals (스태틱 데칼 수용) 옵션이 참으로 설정되었는지.
- 데칼에 bProjectsOnBSP/StaticMeshes/등의 옵션이 적합하게 설정되었는지.
- 데칼의 필터 안에 아무것도 없는지.