Unity 검색

공유

Is this article helpful for you?

Thank you for your feedback!

사진측량과 다이내믹 조명을 사용하여 사실적이고 생생한 가상 현실(VR) 환경을 구현한 Varjo 팀의 제작 비하인드 스토리를 소개합니다.

실제 사물 또는 공간을 촬영한 여러 사진을 사용하여 디지털 에셋을 만드는 사진측량 기술은 모든 분야에 적용될 수 있습니다. 사진측량은 게임 업계뿐만 아니라 산업 부문에서도 그 효과를 입증하고 있습니다. 

예를 들어, 사진측량으로 생성된 포인트 클라우드는 건축, 엔지니어링 및 건설(AEC) 분야에서 필수 요소가 되었습니다. 또한 자동차와 교통 및 제조업 분야의 경우 사진측량을 통해 물리적 프로토타입을 만들고 디지털 CAD 모델과 비교하여 실제 환경과 가상 환경이 일치하도록 하고 있습니다.

실제 환경을 더욱 정확하게 시뮬레이션하고 전문적인 용도로서의 사진측량의 잠재력을 보여주기 위해, Varjo 팀은 최근에 일본 최대 규모의 공동묘지를 사진측량으로 스캔한 후 VR로 디지털 트윈을 구현했습니다. 아래에는 이 프로젝트의 제작 과정이 나와있습니다. 

고야산의 오쿠노인 공동묘지 씬 제작 과정

건물, 건축 현장 또는 기타 여러 공간을 섬세하게 구현한 Varjo VR-1은 실제 눈으로 보는 듯한 사실적인 해상도를 제공하는 최초의 VR 헤드셋입니다. 20/20 해상도는 사진측량 기술을 이용한 VR 사용 사례를 산업용으로까지 확장합니다. 

Varjo 팀은 역동적인 초고해상도의 VR 사진측량 기술을 이용하여 일본 고야산의 오쿠노인 공동묘지를 동적으로 보여주는 데모를 만들었습니다. 아래에서 그 과정을 확인해보세요.

사진측량 장소 선택

이 섹션은 Varjo의 3D 사진측량 전문가 자니 일리넨(Jani Ylinen)이 작성했습니다.

사진측량은 적절한 촬영 장소 또는 대상을 선정하는 것에서 시작됩니다. 아무 장소나 사물을 선택한다고 해서 사진측량을 할 수 있는 것은 아닙니다. 저희는 일본 고야산의 오래된 공동묘지를 최종적으로 선택했습니다. 문화적으로 중요한 장소이면서도 데모에서 보여줄 만한 세부적인 요소들이 많았기 때문이죠. 사진측량은 야외에서 진행했기 때문에 조건을 제어하기가 매우 까다로웠습니다. 하지만 Varjo는 도전을 즐깁니다. 

이번 사진측량에서 가장 다루기 어려웠던 부분은 다음과 같습니다.

  1. 움직임: 고야산 오쿠노인 공동묘지는 규모가 크고 오래된 곳입니다. 이곳에는 매일 수많은 여행객들이 방문하며 삼각대에 카메라를 설치해두면 아주 많은 사람들이 관심을 가집니다. 하지만 사진측량을 할 때는 측량하는 장면이 완전히 정적인 상태여야 하며 어떠한 움직임도 있어서는 안 됩니다. 규모가 큰 대상을 측량할 경우 측량 대상이 움직이지 않더라도 광원인 태양이 움직이기 때문에 문제가 될 수 있습니다. 게다가 수 시간 넘게 촬영이 이어지면 명암이 크게 변할 수도 있습니다.
  2. 날씨: 야외 측량을 진행할 때는 날씨가 흐려야 합니다. 또한 측량 전이나 측량하는 동안 비가 와서는 안 됩니다. 젖은 표면은 마른 표면과 다르게 보이며, 측량 내내 씬은 일관된 모습이어야 합니다.
  3. 바닥면: 측량 장소인 공동묘지의 바닥면은 짧은 소나무 가지와 잔가지들로 가득했으며, 사람들이 걸어다닐 때마다 가지들의 위치가 변했기 때문에 촬영하기가 굉장히 까다로웠습니다.

사진측량을 할 때 일반적인 원칙은 인접한 사진끼리 최소한 30% 이상 겹쳐야 한다는 점입니다. 주된 목표는 피사체를 최대한 여러 각도에서 촬영하고 이미지가 최대한 많이 겹치도록 하는 것입니다. 

고야산의 촬영 장소는 방 하나를 스캔하는 것과 유사하게 촬영했습니다. 이 씬을 위해 2,500여장의 사진이 촬영되었습니다.

Unity로 역동적인 3D 씬 만들기

이 섹션은 Varjo의 선임 3D 아티스트이자 전 Unity 비주얼 이펙트 아티스트 유하니 칼슨(Juhani Karlsson)이 작성했습니다.  

사진측량은 사실적이고 몰입도 높은 시각적 효과를 구현할 수 있지만, 정적인 조명으로 인해 실제로 활용되는 사례가 많지 않습니다. 따라서 이 프로젝트에서는 동적인 조명을 활용하여 사실적인 환경을 시뮬레이션하고 싶었습니다. Unity는 워크플로를 손쉽게 자동화할 수 있어 세부적인 묘사를 포함하는 씬을 만들고 렌더링하기 좋은 플랫폼입니다.

Unity를 통해 탁월한 디라이팅(De-Lighting) 툴을 사용했으며 Unity 에셋 스토어에서 그때그때 필요한 요소들을 가져왔습니다. 유니티의 사자의 서(Book Of The Dead) 에셋에서 나무와 돌을 가져와 사용하기도 했습니다. 

장소를 촬영하는 동안에는 3D 구현에 소요되는 시간을 최소화하기 위해 계속해서 파일을 전송했습니다. 먼저, Reality Capture라는 소프트웨어를 사용하여 사진으로 구성된 3D 씬을 만들었습니다.

메시 프로세싱 및 UV 

3D 씬은 Reality Capture를 통해 98x8k 텍스처 세트를 포함하는 단일 1,000만 폴리곤 메시로 익스포트되었습니다.

먼저 Houdini에서 Voronoi Fracture를 사용하여 이 메시를 더 작고 관리 가능한 크기로 분할했습니다. 그런 다음 공유되는 UV로 다양한 디테일 수준(LOD)이 구현되었습니다. 이 과정은 LOD 간 텍스처 팝핑(popping) 현상을 방지하기 위함입니다.

이로써 Unity에서 구현할 수 있을 정도로 텍스처 규모가 감소했으며, Umbra 오클루전 컬링을 사용할 수 있게 되었습니다. 텍스처가 작을수록 UV를 생성하기에 부담이 적습니다.

또한 서로 다른 텍스처를 베이크하기 위해 셰이더가 생성되었습니다. Unity의 디라이팅 툴을 사용하려면 최소한 알베도, 앰비언트 오클루전, 노멀, 벤트 노멀(bent normal) 및 포지션 맵이 있어야 합니다. 대부분의 프레임 버퍼는 즉시 베이크할 수 있을 정도로 직관적이지만, 벤트 노멀은 그렇지 않습니다. 대신 벤트 노멀은 오클루전 레이(차폐 광선)에서 놓친 부분을 다루며, 기본적으로 벤트 노멀을 출력하는 'occlusion()'이라는 간단한 VEX 함수가 있습니다.

디라이팅(조명 정보 제거)

Unity 디라이팅 툴에서 제공한 배치 스크립트를 통해 텍스처를 자동으로 처리하는 Python 스크립트를 작성했습니다.

스캔에 다양한 색상이 존재하면 디라이팅이 환경 프로브를 추측하는 데 문제가 생깁니다. 따라서 자동 디라이팅과 기존의 이미지 기반 조명의 그림자 제거 방식을 적절히 조합하여 활용했습니다.

처리된 모델을 임포트하기 위해 Unity 에셋 포스트 프로세싱 스크립트를 작성했습니다. 이 스크립트는 머티리얼 생성과 텍스처 할당을 처리합니다. 4k 텍스처 총 128개에 대한 처리, 베이크 및 디라이팅이 진행되었습니다.

디라이팅 전후 비교

Varjo VR-1과 Unity의 손쉬운 통합

씬이 임포트된 이후부터는 VarjoUser 프리팹을 씬으로 가져오기만 하면 VR-1에서 즉시 확인할 수 있으며, 필요에 따라 씬을 수정할 수 있습니다.

Unity 에셋 Enviro를 사용하여 주간과 야간 조명의 사이클을 구현했으며, 실시간 전역 조명을 씬에 베이크했습니다. 생성된 메시 UV는 프리프로세싱 시간을 단축하기 위해 전역 조명에 사용되었습니다. 또한 라이트매퍼가 UV에 대해 최소한의 작업만 하도록 설정되었습니다. 메시에서 UV 최적화를 활성화하고 설정을 조정하여 이러한 조건을 맞출 수 있습니다.

---

소중한 사례를 공유해주신 Varjo 팀에 감사의 말씀을 전합니다. 이 포스팅을 통해 Unity를 이용한 사진측량에 대해 더 알아보세요. Varjo는 유나이트 코펜하겐에서 전시와 세션에 참여할 예정입니다.

 

2019년 8월 1일 산업 분야 | 6 분 소요

Is this article helpful for you?

Thank you for your feedback!