https://youtu.be/F3XSKXhIAuU?si=HlmmXtIA_nZ94bRz


요약

  1. 문제 개요 – 나나이트 + 레이트레이싱 그림자 오류
    UE5에서 나나이트(Nanite) 메시에 레이트레이싱 그림자를 사용할 경우, 검은 얼룩(splotches)이나 이상한 그림자가 생기는 현상이 발생함. 이는 버그가 아니라 나나이트와 레이트레이싱의 작동 방식 때문임. (00:00)

  2. 해결법 1 – 레이트레이싱 그림자 비활성화
    라이트(예: Directional Light)를 선택 후 Details 패널에서 “Cast Raytraced Shadows”를 Disabled 또는 Use Project Settings로 설정하면 얼룩이 사라짐. 빠르고 간단한 해결법. (00:33)

  3. 해결법 2 – 콘솔 명령어로 그림자 방식 제어
    r.raytracing.shadows.enableTwoSidedGeometry 0 을 설정하면, 그림자 얼룩이 제거되면서 레이트레이싱 그림자를 유지 가능. 단점은 단면(One-sided) 메시는 그림자를 캐스팅하지 않음. (01:42)

  4. 단면 메시 이슈 설명
    One-sided 메시(예: Plane)는 enableTwoSidedGeometry가 0일 경우 그림자를 생성하지 않음. 방향을 바꾸거나 설정을 다시 1로 바꾸면 그림자 생성 가능. (02:17)

  5. 왜 이런 문제가 발생하는가 – 폴백 메시(Fallback Mesh)
    레이트레이싱은 실제 나나이트 메시가 아닌 Fallback Mesh (이전 명칭: Proxy Mesh)를 기준으로 그림자를 계산함. 이 메시가 나나이트 메시보다 해상도가 낮고 형상이 약간 달라서 문제 발생. (02:52)

  6. 해결법 3 – Fallback Relative Error 조정
    Static Mesh Editor에서 Fallback Relative Error 값을 0으로 설정 후 Apply하면, Fallback Mesh가 원본 메시와 거의 동일해지고 그림자 얼룩이 줄어듦. 성능에 영향이 있을 수 있음. (03:57)

  7. 결과 비교 및 주의사항
    이 방법은 메시에 따라 효과가 다를 수 있음. 일부 메시에는 효과적이지만 일부 메시에는 여전히 약간의 그림자 문제가 남을 수 있음. (04:30)

  8. 요약 정리
    • 해결법 1: 라이트에서 레이트레이싱 그림자 비활성화
    • 해결법 2: 콘솔 명령어 r.raytracing.shadows.enableTwoSidedGeometry 0 사용
    • 해결법 3: Fallback Relative Error = 0 적용
      각 방법마다 장단점이 있으며 프로젝트 상황에 따라 선택해야 함. (05:02)
  9. 기술적 원인 – 뒤집힌 노멀과 저해상도 폴백 메시
    Fallback Mesh는 낮은 폴리곤 수와 뒤집힌 법선(normals)을 가지며, 이로 인해 그림자 방향이 이상하게 생성됨. 그래서 두 번째 해결법이 효과적인 것임. (06:09)

  10. 마무리 조언
    이 그림자 문제는 설계상의 동작이며 버그가 아니므로, 각 해결법의 특징을 이해하고 상황에 맞게 조정하는 것이 중요함. (06:49)

 


  • 라이트 옵션중 '레이트레이싱 셰도 드리우기'를 Disable 로 변경해서 해결되는 경우 있으나, 이마저도 해결이 안되거나 레이트레이스 쉐도우를 사용해야하는 상황을 전제로 함.
    오브젝트 이외 랜드스케이프 나나이트를 활성화 한 경우도 그림자 아티팩트 발생.

  • 레이트레이스 활성화 + 나나이트 사용시 엔진 버전 5.4.x 와 5.5.4 에서 계속 재현되고 있음.
  •  r.raytracing.shadows.enableTwoSidedGeometry 0 명령은 만능이 아님.
    랜드스케이프에 나나이트를 적용한 경우 지면과 배치된 오브젝트간에 빛샘 현상 발생할 수 있음.

  • 이를 해결하려면 디렉셔널 라이트에 contact shadow 값을 0.1~0.3 가량으로 조정해야 빛샘 현상을 해결할수 있음.

  • 만약 UDS(UltraDynamicSky) 같은 툴을 설치해서 사용하는 경우 contact shadow 값을 조절하는 옵션이 없는데.
    이때는 custom light 를 불러와서 컨택트 쉐도우를 조절하거나.
    UDS 블루프린트 컴포넌트로 있는 디렉셔널 라이트의 컨택트 쉐도우 값을 조절 해야한다. 다만 이 경우 UDS 블루프린트가 강제로 값을 초기화 시킬수도 있으니 컨택트 쉐도우 값이 변경되는지 모니터링 필요.

  • 현재 열려있는 씬에서  r.raytracing.shadows.enableTwoSidedGeometry 상태가 어떤지 확인 하는건 콘솔명령에  r.raytracing.shadows.enableTwoSidedGeometry  를 입력 하면 콘솔창에 결과를 보여줌
    (틸트키를 한번 더 눌러 콘솔창을 키워야 보임) 

'Study' 카테고리의 다른 글

Arnold 렌더러 스터디 자료 링크  (0) 2022.03.31

+ Recent posts