GDC 2017에서 스퀘어 에닉스는 Achieving High-Quality, Low-Cost Skin : An Environment Approach. 품질은 높게, 부하는 낮게 피부를 실현하기: 환경을 통한 접근. 이란 제목의 강연을 했습니다.
스퀘어 에닉스의 게임 엔진인 Luminous Studio의 테크 데모로 만든 Agni 's Philosophy를 기억하시나요? 프리 렌더링으로 만든 CG 영화 수준의 영상을 실시간 CG로 재현하는 프로젝트입니다.
여기에서 사용하는 얼굴의 텍스처는 2K x 2K나 4K x4K, 심지어 그 이상의 큰 해상도를 사용해 128x128 크기의 작은 기미, 주근깨를 타일 텍스처로 겹쳐 디테일을 높였습니다. 그러나 이렇게 만들면 아무리 가까이 들여다 봐도 모공까지 보이진 않죠. 그리고 지금 보면 그렇게 그래픽이 좋은 것 같지도 않고.
최근에는 게임 렌더링 해상도에서도 4K가 나와 인물 표현에 더욱 디테일이 요구되는 상황입니다. 지금까지의 방법이라면 서로 다른 얼굴마다 다른 텍스처를, 그리고 갈수록 더 큰 텍스처를 필요로 할 것입니다. 그러니 차세대 게임에는 맞지 않죠.
그런데 정말 모공까지 그려내는 디테일만 포기한다면 얼굴을 구성하는 정보의 대부분은 더 낮은 해상도의 텍스처로도 제대로 표현할 수 있다네요. 커다란 면적에 여러 작은 텍스처를 쓰는 게 Environment texturing입니다.
예를 들어 큰 바위를 만들 경우 바위 하나하나에 따로 텍스처럴 준비하지 않습니다. 타일 텍스처를 기본으로 거기에 디테일을 혼합해 다양한 바위를 만듭니다. 이처럼 환경을 그려내는 방법을 캐릭터 얼굴에도 쓸수 없을까..라는 게 기본 발상입니다.
얼굴을 환경을 그려내는 관점에서 보면 기본 질감을 타일로 사용해, 피부 모공의 반복을 찾아 적용하면 됩니다. 모양과 배치에 따라 일반적인 모공 패턴을 찾으면 되는 겁니다.
모공과 잔주름을 보면 이런 피부의 디테일은 점과 선으로 일반화할 수 있으며, 복잡한 형상도 이들 조합으로 가능하다는 결론이 섰습니다.
그리고 그 배치는 피부의 부위에 따라 특징이 있다는 것도 나왔습니다.
모공과 잔주름은 방향에도 규칙이 있습니다.
이런 연구 끝에 나온 건 캐릭터 한명에게 거대한 얼굴 텍스처를 쓰는 게 아니라, 범용 디테일 텍스처를 저종해서 적용한다는 것입니다. 그럼 거대한 텍스처를 쓰는 것보다 메모리 사용량은 줄이고 표현 향상도 기대할 수 있습니다.
일단 얼굴 패턴은 512x512나 1024x1024로도 충분하고, 중간에 큰 흉터 정도를 넣는 게 전부입니다. 이 시점에는 모공 수준까지 넣진 않습니다. 세부 작업이 필요 없으니 제작 시간은 40% 줄어듭니다.
디테일은 작은 텍스처로 만듭니다. 이를 추가해서 미세 표현을 더해갑니다.
모공의 유형, 강도, 크기를 버텍스 컬러에 따라 배치해 나갑니다.
머리에 실제로 적용한 사례.
모공과 잔주름은 256x256 픽셀 텍스처로 제어.
이건 기존 방법으로 만든 머리.
이건 새로운 방법으로 만든 머리.
기존 방식
새로운 방식.
앞으로는 비트맵을 따로 제공하지 않고 미들웨어에서 생성하거나, 얼굴의 움직임에 따라 모공도 삐뚤어지도록 만들어 나갈 거라고 합니다.
역시 비주얼 깡패답네요 -_-b