UDN
Search public documentation:

TexturingGuidelinesKR
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

UE3 홈 > 머티리얼과 텍스처 > 에픽 게임스 텍스처 지침
UE3 홈 > 텍스처 아티스트 > 에픽 게임스 텍스처 지침

에픽 게임스 텍스처 지침


개요


저희가 텍스처를 만들면서 얻은 교훈을 모아놓은 문서입니다. 글로벌 일루미네이션 라이팅 솔루션을 라이트매스로 전환하고나서 보니, 만들어 놓은 텍스처 다수가 너무 어둡거나, 대비가 너무 심하거나, 노이즈가 너무 많이 끼어 있거나 하는 것을 발견할 수 있었습니다.

여기 공유된 정보를 보시면, 괜찮아 보이는 것을 만드는 작업이 생산성과는 거리가 조금 있구나 하는 느낌을 받으실 것입니다. 한가지 기억하실 점이라면, 저희는 과거 하나의 텍스처에서 여러가지 질감을 내는 텍스처를 만들었었기에, 많은 데이터를 하나의 텍스처에 "구워"(bake) 넣었습니다. 라이팅과 머티리얼이 복잡해져 감에 따라, 현실적인 방식으로 질감을 표현해 낼 수 있도록 그 데이터 중 일부를 분리해 내야 했습니다.

감마 공간과 선형 공간


바로 텍스처와 관련 기술에 대해 알아보기 전에, 텍스처를 포토샵에서 조작하여 언리얼 엔진으로 임포트할 때 무슨 일이 벌어지는지 이해할 필요가 있습니다. 포토샵에서 텍스처를 만들 때 sRGB 컬러 프로파일을 사용해야 합니다. 무슨 뜻이냐면 텍스처에 감마 커브가 적용된 상태로, 소위 감마 공간(Gamma Space)에 저장된다는 뜻입니다. 이 텍스처를 (sRGB 값이 켜진) 디폴트 세팅으로 UE3 에 임포트할 때면, 엔진더러 라이팅 계산 전 텍스처를 선형 공간(Linear Space)으로 변환하라 이르는 것입니다. 여기서 벌어지는 현상과 그렇게 하는 이유, 그 이면에는 많은 양의 계산과 기술적인 정보가 있습니다만, 한 가지 중요한 점은 감마 공간에 칠한 값은 선형 공간에서 더욱 어두워 진다 는 점입니다. 예를 들어 빛을 50% 반사하는 표면을 칠하려는 경우, 포토샵은 50% 회색이 127,127,127 이라 할 것입니다. 감마 공간의 127,127,127 은 선형 공간에서 55,55,55 또는 21% 빛 반사로 변환됩니다. 즉 글로벌 일루미네이션 계산시 의도했던 것보다 씬이 어두워지며, 빛 반사도 훨씬 적어진다는 뜻입니다.

아래 커브는 감마 공간과 선형 공간에서의 분포 값을 나타낸 것입니다. 포토샵에서 이미지를 칠할 때, 이 커브를 사용하여 이미지를 저장하고 밝기를 측정하는 것입니다.

gamma_curve.jpg

감마 공간과 선형 공간에서 측정한 50% 회색이 어때 보이는가에 대한 예제는 이와 같습니다.

gamma_vs_Linear.jpg

디퓨즈 텍스처


디퓨즈 텍스처를 만들 때 가장 먼저 고려해야할 것은, 표면의 최종 이미지를 칠하지 않는다는 것입니다. 여러 각으로 반사되는 빛을 나타내는 표면의 프로퍼티를 칠하는 것입니다. 즉 디퓨즈 텍스처는 그림자나 빛 편차 값이 크지 않아야 한다는 뜻입니다. 앰비언트 오클루전의 커다란 부분은 LightmassAO 나 SSAO 로 표현해야 합니다. 간혹 노멀맵에 표현된 디테일은 디퓨즈 텍스처에 소량의 AO로 표현해 줘야 하기는 해도, 이 값이 너무 어둡지는 않을 것입니다.

둘째, 디퓨즈 텍스처는 밝고 대비값이 낮아야 합니다. 텍스처를 너무 어둡게 만들면, 게임에서는 아무리 용을 써도 밝아질 수가 없는 것입니다. 기억해야 할 것은, 제작중인 텍스처는 100% 밝기의 하양 빛으로 밝혔을 때 표면이 얼마나 밝은가를 나타낸다는 것입니다. 또한 텍스처를 너무 어둡게 칠하거나 너무 어두은 앰비언트 오클루전을 포함시키면, 표면에 빛이나 그림자를 표현하는 기능이 제한된다는 점도 고려하십시오. 텍스처에 노이즈가 너무 심하거나 대비가 너무 높아도 표면의 모양이나 라이팅을 읽기 어려워 집니다.

렌더했을 때 포토샵에서 중간 회색을 지침으로 삼으려면, 막대그래프에서 186 을 "중간"으로 사용하면 됩니다.

histogram.jpg

너무 어두워서 채도 증가를 통해 얼마나 밝게 해야할 지 비교해 본 예제는 이와 같습니다.

dark_textures.jpg

dark_spheres.jpg

원본 텍스처 값 평균은 46 이었는데, 선형 공간으로 변환하면 2% 의 빛만 튕겨낸다는 소리입니다! 조절된 텍스처의 평균은 150 으로, 받는 빛의 31% 를 튕겨낸다는 뜻인데, 벽돌벽에는 적당합니다. 조절된 텍스처에는 셰이딩 역시 훨씬 나아 보이는데, 완전히 빛을 받은 상태와 그늘진 상태의 차이가 훨씬 크기 때문입니다.

아래는 어두운 텍스처가 라이팅에 어떠한 영향을 끼치는지 실전 예제입니다. 맨위 그림은 어두운 원본 텍스처를 사용한 것입니다. 둘째 그림은 라이트 명암도(intensity)를 2 에서 12 로 올려 이미지 밝기를 수정해 본 것입니다. 글로벌 일루미네이션이나 어두운 지역에는 전혀 도움이 되지 않는 것을 확인할 수 있습니다. 마지막 그림은 라이트 밝기를 2 로 올려 조절한 텍스처를 사용한 것입니다. 일단 텍스처가 너무 어두워 버리면 라이트 밝기를 가지고 어떻게 해 보려 해도 괜찮은 라이팅을 얻기 힘들다는 것을, 이 그림을 통해 알 수 있습니다.

gamma_affects_on_Lighting.jpg

스페큘러 텍스처


여러가지 이유로 과거에는 (선형 공간이 아닌 렌더러를 사용하고 단순 라이팅으로 복잡한 머티리얼을 추정하여) 아티스트가 색의 양이 가변적인 스페큘러 맵을 칠했었습니다. 피부가 좋은 예지요. 과거 아티스트는 파랑, 가끔은 주황 스페큘러 텍스처를 칠했었습니다. 피부의 스페큘러 반응은 사실 흰색입니다. 극소수의 머티리얼에나 컬러 스페큘러가 있으며, 그 대부분은 메탈입니다. 여기서 스페큘러 반사가 흰색임을 확인할 수 있습니다.

detail_difference.jpg

모든 표면에는 일정한 형태의 스페큘러 반사가 있다는 것을 기억해 두는 것이 중요합니다. 무디고 명암도가 낮을 수도 있는데, 그렇다면 자체 텍스처가 보장받지 못할 수도 있습니다. 그러한 경우 디퓨즈 텍스처를 사용할 수는 있겠지만, 머티리얼에 있는 텍스처의 채도를 낮추거나, 컬러 채널 중 하나만 뽑아 스페큘러에 사용하거나 해야 할 것입니다.

스페큘러 파워/마스크


스페큘러 파워와 마스크는 종종 두 값을 선형보간하는 데 사용합니다. 보통 이 텍스처가 감마-보정 프로세스를 거치지 않게 하고자 한다는 뜻입니다. 이러한 텍스처는 (감마 보정되지 않는) 알파 채널에 패킹해 넣거나, 채널에 함께 패킹해 넣은 다음 그 텍스처 프로퍼티에서 []sRGB 를 체크 해제해 주거나 하면 됩니다. 이렇게 할 때 값이 0 이면 A 값을 100%, 255 면 B 값을 100%, 127 이면 둘 다 50% 씩 블렌딩한다는 뜻입니다.

이미시브 텍스처


이미시브 텍스처는 압축이나 정밀도 관련 부작용을 피하기 위해 전체 범위 값을 사용해 봐야 합니다. 과거 일부 이미시브 텍스처는 어두운 텍스처로 만든 다음 머티리얼에서 큰 수를 곱해주어 보정시킨 적이 있습니다. 그리 되면 이미시브 렌더링시 띠 현상이나 색이 잘못되는 현상이 나타났습니다. 최선의 방법은 이미시브 텍스처를 만든 다음, 포토샵의 Levels 나 Curves 툴을 사용하여 활용 범위를 최대화시키는 것입니다. 아래는 작은 범위값을 사용한 이미시브 텍스처에 머티리얼에서 매우 큰 수를 곱해준 것과, 큰 범위값을 사용한 이미시브 텍스처에 머티리얼에서 적당한 수를 곱해준 것을 비교한 것입니다.

emissive.jpg

노멀맵


노멀맵 수정시 중요한 것 한 가지는, 항상 블렌딩 연산을 정규화(normalize)시키는 것이 좋다는 것입니다. Crazybump 를 사용하여 노멀맵을 블렌딩하거나, 포토샵에서 블렌딩했다면 Crazybump 로 임포트한 다음 다시 익스포트하거나 하면 맵이 정규화됩니다.

또 한가지 기억할 것은, 디테일 노멀 맵에 1,1,0 보다 높은 값을 곱해주면 DXT 압축 부작용이 드러나게 되어 어떤 상황에도 제대로 라이팅되지 않는 머티리얼이 생성된다는 점입니다.

피부 관련


피부는 복잡한 머티리얼이라 퐁보다 복잡한 라이팅 모델로 표현합니다. DX11 에서는 스크린 스페이스 서브-서피스 스캐터링으로, DX9 에서는 커스텀 라이팅을 통해 노멀을 부드럽게 하여 라이팅을 감쇠시켜( 서브-서피스 스캐터링을 흉내내는 식으로) 이루어 냅니다. 두 기법 모두 디퓨즈 텍스처를 표피층으로 받은 다음 거기에 피부 아래 고기같은 붉은 빛이 감돌도록 착색시키는 것입니다. 즉 피부에 대한 디퓨즈 텍스처는 일반적으로 만드는 것보다 빛을 많이 주어 창백하게 만들어야 한다는 뜻입니다. 피부 사진에는 그 안에 "머티리얼"이 있어 SSS 가 만들어낸 붉은 끼가 이미 내포되어 있다 볼 수 있기에, 머티리얼이 그 작업을 처리하도록 하려면 텍스처를 만들 때 텍스처에서 그 붉은 끼를 제거해 줘야 하는 것입니다.

skin.jpg