▲ 강연 주제인 포토그래메트리 기법을 사용한 '스타워즈: 배틀프론트1'

'월드 오브 워크래프트' 팀에서 배경 오브젝트 제작을 하는 개발자. 그는 회사에서 귀엽고 아기자기한 배경 에셋을 만들고 있었지만, 당시 그가 즐겼던 게임은 ‘메탈 기어 솔리드5’였다. 하는 일과 좋아하는 게임의 모습이 달랐던 그는 10년 뒤 미래를 고민하기 시작했다. 그리고 실사와 같은 그래픽 구현에 관심을 가지기 시작했다.

개발자는 사진을 하나 두고 똑같이 만들고자 했다. 그렇게 사진 한 장을 구현하는데 걸린 기간은 무려 3개월. 그때 그의 시선을 사로잡은 게임이 있었다. 마치 실사와 같은 배경 그래픽을 자랑하는 ‘스타워즈 배틀프론트’였다. 그리고 게임에 쓰인, 사진 속 물체를 3D 텍스처로 구현하는 포토그래메트리를 알게 됐다.

이번 강연은 블리자드의 이규영 아티스트가 지난 2년간 8,000여 장의 사진, 15곳의 로케이션 촬영의 시행착오를 겪으며 익힌 포토그래메트리 툴 포토스캔에 대한 가이드이다. 그는 자신처럼 실사 같은 그래픽을 구현하고자 포토스캔 공부에 뛰어든 개발자들에게 도움이 되었으면 한다고 말을 이으며 강연을 시작했다.

▲ 블리자드의 이규영 아티스트

포토스캔은 러시아 Agisoft에서 개발한 포토그래메트리 프로그램이다. 프로그램은 불러온 사진을 연산해서 3D 모델링 텍스처로 구현한다. 이때 필요한 사진은 하나의 물체를 다각도에서 찍은 다수가 필요하다.

그 과정은 ‘사진 촬영 - 포토스캔 연산 - 3D 모델링 & 텍스처 표면 구현’으로 단순하다. 이규영 아티스트는 두 가지 과정을 더 진행한다. 하나는 촬영한 사진을 보정하는 과정이고 다른 하나는 완성된 텍스처를 디라이팅하는 과정이다. 이를 순서로 표현하면 ‘사진 촬영 - 사진 보정 - 포토스캔 연산 - 3D 모델링 & 텍스처 표면 구현 - 디라이팅’이 된다.


찍는 사진이 많다 보니 고려해야 할 점도 많다. 생각해야 할 점은 크게 '언제, 어디서, 무엇을, 어떻게' 등 4가지다. 이중 가장 중요한 것은 어떤 물체를 찍을지 판단하는 것이다. 핵심은 움직이지 않는 물체를 찍는 것이다. 찍을 물체가 움직이면 연산과 구현이 매 사진 다시 진행되어 일반적인 방법으로는 표현 구현이 불가능하게 된다. 크기도 너무 작거나 크지 않은 것이 중요한데 손가락보다 크고 사람 키보다 작은 정도의 물체가 적합하다.

촬영 시기도 중요하다. 그중 꼭 기억해야 할 점은 직사광선이 없는 날에 촬영해야 한다는 점이다. 포토스캔은 매우 밝거나 어두운 물체는 평면으로 인식해 표면을 구현하지 못한다. 직사광선이 강한 날은 빛이 물체에 라이팅을 줘 결과물에 영향을 준다. 비나 눈이 오는 날도 물체가 반짝거려 하이라이트가 계속 들어가 촬영에 적합하지 않다.

촬영 장소는 물체를 다각도로 찍기 위해 사방이 트인 야외가 적합하다. 특히 결과물의 완성도를 높이기 위해 재촬영하는 경우가 있어 언제든 쉽게 갈 수 있는 장소를 선택해야 한다. 인적이 많은 곳은 피해야 한다. 혹 사람의 몸이 사진에 찍히면 포토스캔이 이를 물체로 인식하고 재연산 작업을 한다. 작은 발하나가 찍혀 물체가 두 개가 되는 불상사가 발생할 수 있다.

사진은 최대한 선명하게 찍어야 한다. 그렇기에 손 떨림을 방지할 수 있는 삼각대 사용은 꼭 필요하다. 또한, 조리개를 최대한 조이고, 낮은 ISO로 찍어야 한다. 저장 포맷은 손실이 적은 RAW 파일로 한다.



위 사진 중 숨을 쉬거나 가만히 있기 어려운 사람, 반짝거려 물체의 라이팅이 변하는 갑옷, 두께가 지나치게 얇고 바람에 따라 움직임이 생기는 풀무더기는 좋지 않은 촬영 모델이다. 해태 석상은 적당한 크기에 움직이지 않은 무광 소재이기에 촬영이 용이하다. 사람을 촬영하고자 한다면 석고 모형을 뜬 후 사진을 찍는다. 모델 사방에 수많은 카메라를 두고 한 번에 찍어도 되지만 이런 촬영 환경을 갖추기가 쉽지 않다.


같은 물체라도 장소나 시간에 따라 촬영물의 색이 달라진다. 이는 빛이 달라지기 때문인데 석양이나 조명 종류, 반사체 등에 영향을 받는다.이를 해결하기 위한 방법이 사진 보정이다.

사진 보정에는 언제나 동일한 색감을 찾을 수 있도록 도와주는 컬러 체크 패스포트와 보정 프로그램이 필요하다. 컬러 체크 패스포트를 1시간이나 30분 간격, 혹은 장소가 바뀔 때마다 찍어 프로파일화 한 후 이 파일을 보정 프로그램에서 사용하면 다수의 이미지를 손쉽게 동일한 색감으로 변경할 수 있다.


▲ 컬러 체크 패스포트와 라이트룸을 이용한 사진 보정 시연

사진 보정 후 해당 사진을 이용해 포토스캔으로 연산하는 과정이 필요하다. 연산은 우선 앞서 보정한 사진 목록 작성한 후 사진 정렬을 한다. 이때 포토스캔은 사진들을 분석해 점들의 집합인 포인트 클라우드를 생성한다. 이후 이 점들이 연결된 고밀도 클라우드를 다시 생성한다.

여기까지만 보면 이미 충분히 완성된 결과물을 얻은 것 같지만, 고밀도 클라우드는 사실 촘촘한 점의 반복으로 이루어져 있다. 게임에 사용하기 위해서는 텍스처로 생성하는 표면 구현 단계를 거쳐야 한다. 실제로 연산 과정을 거친 작업물들을 확대해서 보면 점과 점의 집합체, 그리고 텍스처의 차이를 알 수 있다.


▲ 실제 포토스캔 연산 작업과 설정 시연

마지막 작업은 완성된 모델링과 텍스처에 간접광을 제거하는 디라이팅이 필요하다. 간접광이 존재하는 텍스처를 게임에 적용하면 디라이팅 한 텍스처와 큰 차이를 보인다. 간접광이 없으면 개발 시 의도한 부분에만 빛이 가해지지만 간접광이 있으면 의도하지 않은 방향도 마치 빛을 받은 것처럼 밝게 빛나게 된다. 또한 밝은 부분이 2개 이상 표시되어 광원 효과의 효율도 낮아지게 된다.


디라이팅은 총 3가지 방법으로 진행할 수 있다.

우선 포토스캔의 자체 라이팅 제거툴을 이용하는 방법이다. 이 툴은 별도의 텍스처가 필요 없고 디라이팅 방법도 간편하다. 하지만 연산이 오래 걸릴 수 있다. 또한, 미리 보기가 불가능해 연산이 끝날 때까지는 결과를 예측하기가 어렵다. 반면 유니티엔진은 높은 퀄리티를 자랑하지만 5종류의 텍스처를 베이크해서 유니티와 연동해야 하고 다시 추출해야 하는 등 과정이 번거롭다. 서브스텐스 디자이너를 이용하면 비교적 적은 텍스처만을 이용하고 조절도 상세하게 할 수 있지만, 프로그램에 대한 별도의 전문 지식이 필요하다.

이규영 아티스트는 중요한 오브젝트는 유니티 엔진 디라이팅 툴로 작업하고 일반적으로 포토스캔 라이팅 기능을 사용한다고 밝혔다.


▲ 간접광 제거를 위한 디라이팅 시연