Unity
[Unity] Shader Graph에서 Texture 좌표를 UV좌표 대신 World Position으로 적용
주완짱
2025. 5. 31. 22:35
증상
- Dissolve적용 시 머리, 팔, 몸통 등 큰 파츠 단위로 사라짐
- 사라지는 경계가 거칠고 불연속적임
원인
- Noise Texture의 UV좌표가 World Position 기반 노이즈가 아니라 Local UV 기반으로 들어감
해결 방법
- Noise 좌표를 UV 대신 World Position으로 변경하여 공간 기반으로 적용
① Position 노드 추가
- Space 설정:
- World (자연스러운 공간 기준, 추천)
- 또는 Object (모델의 로컬 기준)
- 대부분의 경우 World 기준이 시각적으로 자연스럽습니다.
② Split → 원하는 축만 사용
- Position 노드의 출력 → Split
- 보통 X, Z만 사용해서 평면 기반 Noise 적용
- X, Z를 Vector2로 Combine해서 사용
③ 좌표 스케일 조절
- Multiply 노드 사용 → Position 값 × 작은 float (예: 0.5~1.0)
→ Noise가 너무 크게 적용되지 않도록 조정
④ Sample Texture2D (Noise Texture)
- 텍스처 좌표 입력을 Position 기반으로 변경
→ 기존의 UV → 삭제 or 미사용
→ Sample Texture2D의 UV에 (Scaled) World Position.xy 입력
결과
- Noise가 오브젝트의 형태나 UV에 의존하지 않고, 공간 기준으로 적용됨
- 머리/몸/다리 구간이 아니라, XYZ 좌표를 따라 자연스럽게 사라짐