[CC] 유리창에서 데칼이 안 먹는 이유! #Unreal #rendering #material #shader

제가 운영하는 채널입니다. 많은 방문 부탁드립니다.

채널바로가기

📌 언리얼 엔진에서 반투명 오브젝트에 데칼이 적용되지 않는 이유는 무엇인가?

데칼은 사전에 배치된 오브젝트의 신 댑스 값을 이용하여 겹쳐진 영역에 배치되는 원리인데, 반투명 오브젝트는 신 댑스 값에서 빠지기 때문에 겹쳐진 영역을 구할 수 없어 렌더링이 불가능하기 때문입니다

💡 반투명 오브젝트에 데칼과 유사한 효과를 적용하는 방법은?

매쉬와 데칼 머트리얼을 혼합하여 사용하면 데칼을 적용한 것과 비슷한 느낌의 효과를 만들 수 있습니다

목차

이 튜토리얼은 언리얼 엔진에서 데칼이 반투명 오브젝트에 적용되지 않는 이유와 해결 방법을 설명합니다. 핵심은 데칼이 신 댑스(Scene Depth) 정보를 활용하여 렌더링되는데, 반투명 오브젝트는 신 댑스에 포함되지 않기 때문입니다. 해결책으로, 데칼 머티리얼을 메시(Mesh)에 직접 적용하는 방법을 제시하며, 이를 통해 데칼과 유사한 효과를 낼 수 있습니다. 이 튜토리얼은 언리얼 엔진에서 데칼을 효과적으로 사용하는 방법을 제시하여, 렌더링 문제를 해결하고 시각적 완성도를 높이는 데 도움을 줍니다.

1. 🪟 데칼이 반투명 오브젝트에 적용되지 않는 문제와 실질적 대안

  • 데칼은 포스터, 그래피티, 벽의 균열 등 배경을 자연스럽게 꾸미기 위해 자주 사용되는 시각적 효과다.
  • 그러나 데칼을 반투명 오브젝트(예: 유리창)에는 바로 적용할 수 없다는 문제가 있다.
  • 실제로 반투명에 적용된 것처럼 보여도, 이는 반투명 오브젝트가 아니라 바닥에 데칼이 적용된 경우다.
  • 이 문제를 해결하기 위해서는 매쉬와 데칼 머티리얼을 혼합해서 사용하는 전략이 필요하다.
  • 스태틱 매쉬(플랜)에 데칼용 머티리얼을 직접 적용하면, 데칼이 적용된 것과 매우 유사한 효과를 얻을 수 있다.

2. 🪟 데칼이 반투명 오브젝트에 적용되지 않는 근본적 이유

  • 데칼이 반투명한 질감에 적용되지 않는 이유는, 반투명 오브젝트가 신 댑스(Depth) 정보에 포함되지 않기 때문임을 확인할 수 있다.
  • 신 댑스는 카메라로부터 3D 오브젝트가 얼마나 멀리 떨어졌는지를 나타내는 값이며, 이 모드를 통해 버퍼 비주얼라이제이션에서 확인 가능하다.
  • 오페이크(Opaque)나 마스크드(Material Masked) 오브젝트는 신 댑스 값에 포함되기 때문에 데칼이 정상적으로 렌더링된다.
  • 그러나 트랜스루센트(Translucent), 즉 반투명 오브젝트는 신 댑스 값에서 제외되어 데칼의 겹치는 좌표 영역을 계산할 수 없어 데칼 적용이 되지 않는다.
  • 실험적으로, 데칼이 적용된 오브젝트를 허공에 배치하면 머티리얼만 적용된 경우와 다르게 데칼의 동작을 직접 관찰할 수 있다.

3. 🧩 매쉬 기반 데칼 적용과 G파이팅 문제

  • 트랜슬루센트(반투명) 오브젝트는 데칼의 바운딩 박스 범위와 무관하게 항상 렌더링되어 멀어져도 보인다
  • 트랜슬루센트 오브젝트의 두께가 거의 0에 가까워서 거리 변화가 시각적으로 잘 드러나지 않는다
  • 이미지가 반투명이고 글씨가 투명인 이유는 명확히 알 수 없어 추가적인 조사가 필요하다
  • 데칼 머티리얼을 매시에 적용한 경우와 일반 머티리얼을 적용한 기본 오브젝트를 비교하는 두 가지 예시가 있다
  • 트랜슬루센트 머티리얼과 오페이크(불투명) 머티리얼이 겹쳐 있으면 누가 먼저 렌더링될지 알 수 없어 G파이팅이 발생한다

4. 📝 데칼 처리 방식 및 추가 연구 방향

  • **오페이크(Opaque)**와 **데칼(Decal)**의 경우, 먼저 오브젝트를 그리고 그 위에 데칼을 덮는 명확한 순서로 인해 **깊이 파이팅(z-fighting)**이 발생하지 않는다
  • 데칼을 제한적으로 활용할 수 있으며, UV 정리에 신경을 써야 하지만 데칼을 전혀 사용하지 못하는 것보다는 낫다
  • 데칼 적용과 관련된 문제나 궁금증이 생길 경우, 이메일로 문의하면 된다

Leave a Comment