일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- texture
- world position
- accumulation
- Vertex Animation
- dissolve
- Ice
- 오블완
- UI
- UV
- normal
- raymarching
- snow
- Liquid
- particle
- vignette
- 티스토리챌린지
- Swamp
- bug fix
- character
- optimization
- post process
- particle simulation
- ghost
- noise
- burn
- pivot painter
- sphere mask
- vertex offset
- sampling
- WOOD
- Today
- Total
SuHong Log
Normal Map의 방향 구분하는 법 본문
일전에 게임 엔진의 좌표계 포스트에서 3D 좌표계에 대해 다루었습니다.
게임 엔진의 좌표계
게임 엔진과 3D 툴을 사용하려면 컴퓨터 그래픽스의 기본인 좌표계의 개념에 익숙해져야 합니다. 좌표계(Coordinate System)란 공간에서의 위치를 나타내기 위한 체계입니다. 이론 상 1차원, 2차원에
suhonglog.tistory.com
여기서 OpenGL과 Vulkan은 오른손 좌표계, DirectX는 왼손 좌표계를 사용한다고 언급했는데요. 둘은 서로 다른 좌표계를 사용하기 때문에 하나의 좌표계에서 만든 아트 리소스를 다른 쪽으로 옮기면 Z 축이 뒤집힙니다.
그 외에도 문제가 하나 더 있습니다. 바로 Normal Map이 뒤집힌다는 점인데요. 둘은 G 채널의 값이 반대이기 때문입니다.
이런 문제 때문에 모델링과 텍스처를 제작할 때 헷갈린 적이 많으셨을 것 같습니다.
이 둘을 간단하게 판별하는 방법을 알려드리겠습니다.
노말 맵은 빛이 반사되는 표면의 법선 벡터를 표시한 텍스처입니다. 즉, 텍스처에 빛이 반사되는 각도값이 들어있는 것입니다.
노말 맵의 RGB 채널을 나누어 본 모습입니다. RGB 는 각각 XYZ 축에 대응됩니다.
따라서 R 채널은 X 축, G 채널은 Y 축, B 채널은 Z 축 기준의 명암표현 이라고 생각하시면 됩니다.
텍스처를 보면 R 채널은 오른쪽, G 채널은 위쪽, B 채널은 정면에서 빛을 비추었을 때의 모습을 표현합니다.
두 좌표계의 차이가 발생하는 지점은 G 채널입니다.
OpenGL에서는 위에서 빛을 비춘 명암이라고 생각하시면 되고, 반대로 DirectX에서는 아래에서 빛을 비춘 명암라고 생각하시면 됩니다.
이렇게 구분하면 노말 맵 텍스처에서 초록색이 주로 어디에 위치한지를 보고 어떤 좌표계인지 유추할 수 있습니다.
더불어서, G 채널 값을 뒤집으면 (포토샵에서는 Ctrl + i 단축키) 노말맵의 좌표계를 손쉽게 바꿀 수 있습니다.
사용하려는 텍스처가 위로 튀어나온 형태인지, 안으로 패인 형태인지에 따라서도 방향이 달라지기 때문에 이 점도 유의하셔야 겠습니다.
참고 자료
Babylon.js docs
doc.babylonjs.com
노멀 맵(범프 매핑) - Unity 매뉴얼
노멀 맵은 Bump Map 타입이며, 실제 지오메트리로 표현되는 것처럼 광원을 받는 범프, 홈 및 스크래치 등의 표면 디테일을 모델에 추가하는 데 사용할 수 있는 특별한 텍스처 종류입니다.
docs.unity3d.com
DirectX vs. OpenGL normal maps
I'm curious which type of normal map works better? DirectX or OpenGL normal maps? Which one to use for cycles and eevee?
blender.stackexchange.com
'Tech Art' 카테고리의 다른 글
Normal Map 텍스처 제작하는 법 (2) Painting (3) | 2024.11.30 |
---|---|
Normal Map 텍스처 제작하는 법 (1) Baking (2) | 2024.11.24 |
셰이더? 쉐이더? Shader 란 무엇인가 (6) | 2024.11.17 |
게임 엔진의 좌표계 (0) | 2024.11.11 |