Search Unity

셔먼 제작 과정: Unity에서 구현하는 시네마틱 조명

, 11월 13, 2019

셔먼은 베이맥스 드림즈(Baymax Dreams)로 에미상을 수상한 유니티 팀에서 Unity 고해상도 렌더 파이프라인(HDRP)을 활용하여 제작한 최신 단편 영상입니다.

안녕하세요. 저는 유니티의 미디어 및 엔터테인먼트 이노베이션 그룹(Media and Entertainment Innovation Group)에서 조명을 담당하는 Jean-Philippe Leroux입니다. 2년 전 유니티에 입사한 이후 지금까지 Neill Blomkamp가 제작한 아담(ADAM): 에피소드 2 및 에피소드 3, 그리고 에미상을 수상한 베이맥스 드림즈 등 멋진 프로젝트에 참여했습니다.

이 글을 읽고 계신 분이라면 아마도 지금 업계에 큰 변화를 일으키고 있는 실시간 제작에 대해 들어보셨을 겁니다.

실시간 애니메이션은 단순히 색다른 렌더링 솔루션이 아니라 전체 제작 파이프라인을 혁신하고 있습니다. 실시간 콘텐츠 제작 엔진(또는 초기에 비디오 게임 개발 목적으로 개발되었기 때문에 게임 엔진이라고도 함)은 이제 시네마급 콘텐츠를 위한 주요 제작 툴로 사용될 수 있을 정도로 품질 및 완성도를 갖췄습니다.

그렇다면 실시간 렌더링 기술이 오프라인 렌더링 기술과 다른 점은 무엇일까요? 거대한 렌더팜에서 프로세싱에 수 시간이 걸리던 데서 벗어나 몇 초만에 즉시 피드백을 확인하고 최종 4K 프레임을 완성하는 게 어떻게 가능할까요? 여기에 특별한 비법이 있는 건 아닙니다. 핵심은 간소화, 근사화, 최적화, 그리고 몇 가지 영리한 기법을 혼합한 데 있습니다.

단편 애니메이션 ‘셔먼’을 제작할 때 목표했던 것 중 하나는 역대 최고 수준의 실시간 퍼(fur)를 구현하는 HDRP의 역량을 선보이는 것이었습니다. 하지만 이 포스팅에서는 Unity로 셔먼을 제작하는 과정에서 실시간 조명 솔루션을 구현한 비결을 보여드리고, 프로젝트에 직접 적용할 수 있는 구체적인 조언과 팁을 제공하고자 합니다. 3D 애니메이션 전문가, 조명 아티스트 등 업무에 관계없이 누구나 Unity로 실시간 콘텐츠 제작 시 풍부하고 섬세한 조명을 구현할 수 있습니다.

셔먼 심층 분석

셔먼에서는 여러 조명 효과가 분주하게 구현되고 있습니다. 조명 효과를 하나씩 자세히 살펴보겠습니다. 이 장면을 예시로 삼아 조명을 분석하고 나면 프로젝트 제작 시 Unity의 조명 효과에 대해 알아야 할 거의 모든 정보를 얻으실 수 있습니다.

이 이미지를 제작하는 데 사용한 조명 효과를 4가지 유형으로 구분한 후 각 유형을 제어하는 방법을 살펴보겠습니다.

주변광

셔먼 이미지에 적용된 간접 디퓨즈 조명(전역 조명)

셔먼 제작 시 먼저 씬에서 주변광을 정의했습니다. 단순한 주변광으로 광원 산란을 에뮬레이트하는 대신 Unity의 프로그레시브 라이트매퍼(Progressive Lightmapper)를 활용하여 전역 조명 결과를 라이트맵에 베이크하고 로컬화된 주변광 효과를 구현했습니다.

베이크된(간접 디퓨즈) 라이트맵

라이트매핑

이 프로젝트는 다중 씬으로 설정되었으며 모든 정적 씬 요소는 episode_set 씬 게임 오브젝트 아래에 위치해 있습니다.

프레임 내 정적 씬 요소

Unity에서 세트 조명 요소(Set Lighting Element)는 액티브 씬인 episode_set_lighting 씬에 있습니다. 이는 매우 중요한 정보로 액티브 씬에 따라서 모든 조명 데이터의 사용 여부가 결정됩니다. 다중 씬 워크플로에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

세트 조명은 001_timeline 씬 없이도 빌드할 수 있으며 진행 중에 언로드합니다. 자세히 보면 ToHide라는 섹션이 보일 겁니다. 그 안에는 카메라와 태양 방향 광원 인스턴스가 있습니다. 톤 매핑(Tonemapping) 및 앰비언트 오클루전(Ambient Occlusion) 등을 비롯한 몇 가지 포스트 프로세싱 효과는 조명을 구현하는 데 있어 중요하지만 카메라가 있어야 이러한 효과를 표현할 수 있습니다. 세트에 조명을 적용하는 동안 임시 카메라가 사용되지만, 프로젝트가 완전히 로드되면 카메라 한 대만 남아 있어야 합니다. 베이킹이 완료되면 ‘ToHide’ 디버그 카메라 및 조명을 다시 숨겨야 합니다.

라이트맵의 모든 오브젝트는 UV가 절대 겹쳐서는 안 되며 각 표면마다 UV가 별도로 있어야 합니다. 대부분의 경우, Unity에서 임포트 시 라이트맵 UV가 자동으로 생성되도록 할 수 있습니다. (자세한 내용은 여기에서 확인할 수 있습니다). 복잡하고 유기적인 오브젝트의 경우, 일반적으로 아티스트가 선호하는 DCC(디지털 콘텐츠 제작) 소프트웨어를 사용하여 수동으로 UV2를 제작하는 편이 더 낫습니다. 경계 부분 꿰매기를 사용하면 라이트맵에서 연속되지 않는 가장자리를 더욱 매끄럽게 다듬을 수 있습니다.

Unity 조명 패널

조명 탭에서 이 씬을 제작할 때 사용한 설정을 살펴보겠습니다.

  • 먼저 혼합 조명 Bake Indirect와 Progressive CPU 라이트매퍼를 함께 사용합니다. 실시간 전역 조명은 HDRP에서 지원되지 않기 때문에 사용하지 않았습니다.
  • GPU 라이트매퍼는 Unity의 새로운 버전이 출시될 때마다 크게 개선되었지만셔먼을 제작할 당시에는 필요한 핵심 기능들이 아직 없었습니다.
  • 개인적으로 애니메이션 제작 시 그림자와 대부분의 광원을 라이트맵으로 베이크하는 섀도우 마스크 모드를 사용하지 않는 편을 선호합니다. 그 대신 Bake Indirect를 사용하면 간편하게 더 낮은 해상도로 광원 계산을 할 수 있습니다. 이를 통해 베이킹 시간을 단축하고, 방향 설정 시 각 장면을 미세하게 조정할 수도 있습니다.
  • 지금은 직접 조명을 베이크하지 않으므로 선택한 모드에서 Direct Sample 설정은 무시해도 됩니다.
  • Indirect Sample 설정 시 설정값을 약 250 정도로 낮은 값부터 시작하여 씬 설정이 익숙해지면 점차 높입니다.
  • 반사 설정의 경우, 설정값 2로도 충분하지만 실내에 적용 시 값을 4로 늘릴 것을 권장합니다.
  • 라이트맵 해상도 정의 시 낮은 값부터 시작하여 조금씩 값을 높입니다. 이 씬에서는 최종 해상도로 10을 선택했기 때문에 1평방미터당 100텍셀이 됩니다. 조명 및 물리의 경우 1 Unity 단위가 1미터인 환경에서 작업해야 합니다.

씬에서 각 메시의 Scale In Lightmap 파라미터를 잘 활용하도록 합니다. 삼각형이 너무 작아 여러 라이트맵 텍셀을 덮을 수 없는 소형 오브젝트의 경우 이 값을 높이고, 멀리 떨어져 있는 대형 오브젝트의 경우 이 값을 낮춥니다. 베이크된 라이트맵(Baked Lightmap) 보기 및 라이트맵 해상도 표시(Show Lightmap Resolution)를 활성화하여 라이트맵 해상도를 미리 볼 수 있습니다.

하지만 모든 오브젝트가 라이트맵을 적용하는 데 적합한 것은 아닙니다. 복잡한 다중 표면 오브젝트에는 라이트매핑을 하면 안 되며, 전역 조명에 크게 영향을 주지 않거나 라이트매핑하기에는 연산 비용이 너무 많이 드는(예를 들어 잔디, 나뭇잎, 작은 바위, 파편 등) 소형 오브젝트도 마찬가지입니다. Lightmap Static을 비활성화하면 이런 오브젝트에 라이트매핑이 적용되지 않도록 할 수 있습니다.

울타리와 같은 대형 정적 오브젝트는 라이트매핑을 적용하기에는 적합하지 않지만 그래도 어느 정도 결과물에 기여하도록 만들고 싶었습니다. 엔티티를 라이트매핑하지 않고도 계산에 넣는 기법이 있는데 바로 해당 엔티티의 Scale In Lightmap 값을 0으로 설정하는 것입니다. 예를 들어 라이트매핑하지 않았는데도 가장자리 부분에서 울타리로 인해 오클루전이 생긴 것을 볼 수 있습니다.

씬 뷰 설정 및 울타리 영역 라이트맵의 클로즈업

셔먼에서 사용된 기타 효과: 라이트 프로브

1미터 간격으로 배치된 라이트 프로브 배열

주변광과 라이트매핑 설정을 완료하면 배치된 프로브 배열이 나머지 소형 동적 오브젝트에 조명을 비춥니다. 셔먼 제작 시에는 프로브를 1미터 간격으로 배치했습니다.

잔디밭과 같은 대형 오브젝트에는 라이트 프로브 프록시 볼륨을 활용하여 보다 정교한 프로브 조명을 적용할 수 있습니다. 이렇게 하면 오브젝트는 단일 프로브가 아닌 여러 프로브의 로컬화된 샘플에서 조명을 받습니다.

프로브로 조명이 비춰진 대형 오브젝트에 라이트 프로브 프록시 볼륨을 적용할 때의 효과. 이 씬의 경우, 잔디는 프로브 조명을 받은 여러 대형 타일로 나뉩니다.

유용한 : 다중 씬 설정의 경우, 로드된 최신 씬에 적용된 라이트 프로브만이 고려되니 유의해야 합니다.

앰비언트 오클루전 

이제 로컬화된 주변광이 다른 영역과 지면 오브젝트에 적용되지 않도록 하는 방법을 알아보겠습니다.

먼저, 개집 내부 또는 너구리의 입을 비롯한 몇 가지 오브젝트에 DCC를 사용하여 앰비언트 오클루전 맵을 생성해야 합니다.

오브젝트 기반으로 베이크된 앰비언트 오클루전

다음으로, SSAO(Screen Space Ambient Occlusion, 스크린 스페이스 앰비언트 오클루전)라는 포스트 프로세싱 효과를 사용하여 해당 요소를 모두 합칩니다.

스크린 스페이스 앰비언트 오클루전

이 효과는 아래의 포스트 프로세싱 섹션에서 더욱 자세히 살펴보겠습니다.

반사 효과

(왼쪽) 이미지에 간접 스페큘러 조명(Indirect Specular Lighting)(반사)이 적용된 부분, (오른쪽) 앰비언트 반사와 베이크된 반사가 혼합됨

간접 스페큘러 조명 또는 반사 작업 시 여러 레이어링 기법이 실시간으로 복잡하게 적용됩니다. 해당 기법이 적용되는 순서는 다음과 같습니다.

  1. 실시간 평면 반사
  2. 실시간 반사 프로브
  3. 베이크된 소형 반사 프로브
  4. 보다 큰 반사 프로브(이때 더 작은 영역이 더 큰 영역보다 우선 순위를 갖습니다.)
  5. 하늘

평면 반사 효과의 예시

반사 해상도 및 캐시 크기는 HDRenderPipelineAsset에서 관리합니다. 기본적으로 평면 반사는 거울과 같은 효과를 냅니다. 평면 반사는 평평한 표면에 사용하기에 가장 적합하지만 너구리와 팽창한 호스를 연결하기 위해 연출했던 장면과 같이 보다 복잡한 상황에서도 사용할 수 있습니다. 하지만 메모리를 많이 차지할 수 있으므로 사용 시 주의해야 합니다.

또한 실시간 반사 프로브를 전략적으로 사용하여 광원의 반사 및 오클루전의 중요한 디테일을 표현할 수 있습니다. 이 씬의 경우, 실시간 소형 스피리컬 프로브(Spherical Probe)를 활용하여 사료 그릇을 뒤덮고, 터지기 직전의 팽창한 호스를 표현했습니다.

세트는 베이크된 반사 프로브로 덮어야 합니다. 이때 투사 볼륨 및 고급 블렌딩 모드를 통해 크기 우선 순위, 패럴렉스 조정 기능을 활용해야 합니다. 대부분의 경우, 캡처 포인트를 카메라가 비추는 평균 높이에 배치하는 것이 좋습니다.

자세히 보면, 몇몇 반사 프로브가 특히 그림자 영역에 적용되어 있음을 알 수 있습니다. 이는 굉장히 방향지향적인 하늘로 인해 불필요한 스페큘러 반사가 발생하지 않도록 하기 위함입니다.

베이크된 반사 프로브 레이아웃

타임라인에서 동작 추적

타임라인은 시퀀서이며 모든 애니메이션 작업에서 중심적인 역할을 합니다. 타임라인에서 대부분 오브젝트를 애니메이션화할 수 있지만 셔먼의 경우 샷 단위로 조명을 구현할 때 타임라인 대신 활성화 트랙을 사용했습니다. 개인적으로 조명 릭(Rig)의 모든 컴포넌트를 샷 단위로 애니메이션화하는 것보다는 단일 샷에 해당하는 그룹을 관리하는 것이 더 수월하게 느껴집니다.

조명 그룹 활성화는 카메라 컷의 순서대로 진행됨.

몇 가지 팁:

  • 타임라인에서 애니메이션화하려는 모든 오브젝트는 반드시 해당 타임라인과 동일한 씬에 있어야 합니다. 이 경우, 001_timeline 씬을 말합니다. 다른 씬으로 향하는 링크는 프로젝트를 다시 열거나 플레이 모드(PlayMode)에 진입하면 사라집니다.
  • 포스트 플레이백 상태(Post-playback state)를 비활성 상태로 설정합니다. 그렇지 않으면 렌더링 시 고스트 조명 릭이 발생할 수 있습니다.
  • 애니메이션 트랙을 클립 트랙으로 전환하면 샷을 편집하거나 타이밍을 수정할 때 애니메이션을 손쉽게 재배열할 수 있습니다.
  • 활성화 트랙에 대한 자세한 내용은여기에서 확인할 수 있습니다.

프리팹 활용의 이점

프리팹은 여러 번 재사용해야 하는 오브젝트를 그룹화할 때 유용합니다. 프리팹으로 그룹의 구성 요소들을 수정하면 수정 사항이 모든 인스턴스에 자동으로 반영됩니다. Unity 프리팹 인스턴스를 사용하면 파생된 프리팹에서 원하는 설정만 손쉽게 변경하거나 원본 프리팹에 적용하고, 변경 사항을 즉시 전체 적용할 수 있습니다. 또한 이 시스템을 사용하면 인스턴스를 미세 조정하거나 여러 인스턴스를 신속하게 생성하고 확인하는 등 프리팹 워크플로를 원활하게 진행할 수 있습니다.

Unity 2018.2 버전부터는 네스티드 프리팹(Nested Prefab)을 지원합니다. 이 설정은 조명 릭에서 반복 작업을 신속하게 수행하는 데 적합합니다. 예시로 첫 번째 애니메이션 비트의 조명 프리팹 구조를 살펴보겠습니다. 여기 보면 샷 단위 구조가 활성화 트랙에 따라 실행됨을 볼 수 있습니다. 해당 샷에 존재하는 조명 오브젝트만 표시되므로 다른 오브젝트는 모두 숨겨진 상태입니다.

씬 계층 구조의 조명 부분에는 다음 요소가 포함되어 있습니다.

  • 씬 설정 오버라이드
  • 해당 샷에 그림자를 구성하기 위한 목적으로만 사용되는 오브젝트
  • 대기 효과를 제어하기 위한 밀도 볼륨
  • 사료 그릇에 적용된 실시간 반사 프로브
  • 태양, 필 라이트, 림 라이트에 적용된 기타 프리팹

프리팹 활용의 또 다른 이점은 일단 씬에서 오브젝트가 인스턴스화되면 소스 제어 창에서 해당 씬을 계속 확인할 필요 없이 조명 작업을 진행할 수 있다는 겁니다. 덕분에 다른 팀원들도 해당 씬에서 작업할 수 있습니다.

한 가지 유념해야 할 점은 프리팹에서 특정 프로퍼티는 파생될 수 없으며, 커스텀 인스턴스가 필요합니다. 볼륨 프로필(Volume Profile), 포스트 프로세싱 프로필(Post-Processing Profile), 타임라인을 비롯한 스크립터블 오브젝트(Scriptable Object)가 이 경우에 해당합니다.

햇빛 추가

태양 인스턴스는 각 샷 그룹에 위치합니다. 덕분에 태양의 방향을 샷 단위로 미세하게 조정할 수 있습니다. 또한 실감나는 그림자를 구현하기 위해 나무 컷아웃을 활용했습니다.

고품질 그림자

HDRP의 포워드 렌더링을 사용하면 PCSS(Post-Percentage Closer Soft Shadows)를 활용할 수 있습니다. 이 툴을 사용하여 광원 반영을 시뮬레이션할 수 있습니다.

광원은 실시간으로 레이트레이싱되지 않으며, 그림자는 섀도우 맵(Shadow Map)이라는 기법을 통해 감소됩니다. 그림자는 독립적인 요소가 아니므로 각 광원마다 활성화해 주어야 합니다. HDRP의 섀도우 아틀라스(Shadow Atlas) 시스템을 사용하면 그림자를 드리우는 다량의 광원을 구현할 수 있습니다. 셔먼 제작 시 아틀라스를 최대한 많은 부분에 적용했지만, 유념해야 할 점은 아틀라스를 많이 적용하면 품질은 크게 향상되는 반면, 그만큼 정보의 양도 늘어나기 때문에 컴퓨팅 시간이 증가하여 비용이 더 소요됩니다.

아틀라스가 가득 차면 시스템은 동적으로 그림자의 크기를 재조정합니다. 그림자 해상도는 광원별로 정의됩니다. 현재 펑추얼 광원(punctual lights)은 1024, 방향 광원은 4×2048로 설정되었습니다. 점 광원은 6×1024(큐브를 표시하기 위함)로 설정되어 있어 비용이 많이 듭니다.

방향 광원 그림자는 CSM(Cascade Shadow Map)이라는 기법을 활용하여 구현할 수 있습니다. 최상의 품질을 구현하려면 HD 그림자 설정 컴포넌트 오버라이드를 사용하여 샷 단위로 캐스케이드의 분포를 조정해야 합니다. 또한 시네머신 가상 카메라 렌즈 설정에서 근접 클립 평면을 미세 조정해야 할 수도 있습니다. 이렇게 하면 첫 번째 캐스케이드가 앞으로 밀려나는데 이 프로세스는 렌즈의 거리가 늘어날수록 점차 더 중요해집니다.

볼륨 작업

HDRP에서 다수의 렌더링 및 포스트 프로세싱 프로퍼티는 관련된 “프로필”을 지닌 볼륨의 영향을 받습니다. Unity 2019.1 버전부터 이 두 가지 프로퍼티 세트 모두 동일한 볼륨 컴포넌트로 병합되었고 현재 카테고리별로 분류되어 있습니다. 프로필 값은 현재 카메라 포지션에 따라 보간됩니다. 카메라가 어떠한 볼륨에도 해당되지 않으면 전역 프로필에 종속됩니다.

볼륨마다 우선 순위와 가중치가 있습니다. 안타깝게도 프로필 값은 애니메이션화할 수 없지만, 우선 순위와 가중치는 애니메이션화할 수 있습니다. 너구리가 감전되는 효과도 바로 이 방법을 사용하여 포스트 프로세싱을 애니메이션화한 것입니다.

광원 레이어

Unity에서는 특정 광원 레이어에 엔티티를 할당할 수 있습니다. 셔먼 제작 시 이 기능을 사용하여 수동으로 캐치라이트를 적용함으로써 너구리의 두 눈을 더 생생하고 실감나게 표현했습니다. 이 기능을 사용하면 필 라이트 및 림 라이트로 사용한 여러 펑추얼 광원으로 인해 발생하는 불필요한 스페큘러 하이라이트를 관리할 수도 있습니다. 또한 셔먼 제작 시 펑추얼 광원이 물 효과와 섞이지 않도록 하기 위해 이 기능을 사용했습니다.

너구리의 두 눈에 적용한 전용 캐치라이트

 

직접 스페큘러 조명 제어 

HDRP의 흥미로운 기능 중 하나는 조명의 최대 평활도(Max Smoothness)를 조정하는 기능입니다. 이 기능을 사용하여 스페큘러 광원이 원하는 크기로 분포되도록 시뮬레이션할 수 있습니다.

또한 광원을 어펙트 스페큘러(Affect Specular) 또는 어펙트 디퓨즈(Affect Diffuse)로 지정한 후, 효과를 직접 테스트할 수 있습니다.

입체 광원

입체 광원 효과를 사용하여 구현한 뎁스

대기 효과는 씬에서 뎁스를 구현할 때 중요한 툴입니다. HDRP의 고품질 볼류메트릭(HDRP 설정에서 정의됨)은 강력한 솔루션을 제공하며 입체 광원 컨트롤러(Volumetric Lighting Controller)를 사용하면 이 효과를 최상의 품질로 구현할 수 있습니다.

셔먼 제작 시 최상의 효과를 구현하기 위해 밀도 볼륨(Density Volume)을 사용했으며 외관을 완벽하게 제어하기 위해 이를 샷 단위로 배치했습니다.

에디터 컬러 그레이딩 카메라 효과

셔먼에서 컬러 그레이딩 효과 적용 전과 후

이제 모든 제작 과정에서 컬러 그레이딩이 필수적인 요소가 되었습니다. Unity에서 직접 이 기능을 사용하여 탁월한 효과를 구현할 수 있습니다. 포스트 프로세싱 효과는 2019.1 버전부터 HDRP에 완전히 통합되었습니다. 이제 포스트 프로세싱 V2 스택(HDRP 2019.1 버전에 통합된 포스트 프로세싱 V3 스택과는 호환되지 않음)을 사용하여 셔먼 프로젝트의 워크플로를 간략히 보여드리겠습니다. 셔먼 제작 이후 몇 가지 변동 사항이 있었지만 컨셉은 동일합니다.

볼륨에도 포스트 프로세싱 스택을 적용할 수 있습니다. 컬러 그레이딩, 앰비언트 오클루전, 그레인(Grain), 필믹 모션 블러(Filmic Motion Blur)는 조명 씬에 위치한 마스터 볼륨에서 정의됩니다. 이러한 값 중 일부는 타임라인으로 활성화된 샷 단위 설정에서 상위 우선 순위를 지닌 볼륨에 의해 오버라이드됩니다.

블룸, 뎁스오브필드(피사계심도), 비네트를 비롯한 모든 카메라 관련 효과는 각 단일 시네머신 가상 카메라를 위해 CinemachinePostProcessing 확장을 사용하여 생성된 커스텀 프로필에서 정의됩니다. 셔먼 제작 당시 Unity 2018.4 버전에서는 아직 전노출이 지원되지 않았기 때문에 후노출(Post-Exposure) 오버라이드를 사용한 적도 있습니다.

 

매핑 

HDR 선형 공간에서 전체적인 렌더가 구현되기 때문에 컬러 출력을 정의하는 과정이 매우 중요합니다. 셔먼 프로젝트의 경우 처음부터 ACES(아카데미 컬러 인코딩 시스템) 출력을 사용하도록 설정되었습니다. ACES 톤 매핑을 사용하면 명암 대비가 심한 매우 어두운 톤의 이미지를 구현할 수 있습니다. 셔먼 프로젝트에서는 발랄한 컬러 팔레트를 얻기 위해 감마를 조정해야 했습니다. 이러한 스타일의 톤 매핑이 적용된 대부분의 게임도 동일한 방법을 사용합니다.

 

트랙볼

Unity 팀에서는 Unity의 새로운 툴인 트랙볼에 대해 큰 자부심을 느낍니다. 트랙볼 컨트롤은 모든 전문가에게 친숙한 툴이며 조작하기 쉬워 유니티 팀에서 매우 선호하는 툴입니다.

트랙볼 컨트롤을 이용한 컬러 그레이딩 설정

그레이딩 커브

그레이딩 커브는 한 번에 하나씩만 표시할 수 있지만 종류는 다양합니다. 셔먼 프로젝트에서는 Hue vs Sat, Sat vs Sat, Lum vs Sat가 사용되었습니다.

 

웨이브폼 모니터

포스트 프로세스 디버그(Post Process Debug) 컴포넌트도 메인 카메라에 추가되었습니다. 이를 통해 웨이브폼 모니터(Waveform Monitor) 및 히스토그램(Histogram)을 활성화할 수 있습니다. 웨이브폼(Waveform)은 흑백 상태를 분석할 때 매우 유용한 툴입니다.

 

앰비언트 오클루전

앰비언트 오클루전은 앞에서 간략히 소개해 드렸지만 몇 가지 설정에 대해 더 자세히 살펴보겠습니다. 셔먼 프로젝트에서 강도는 0.75로 설정했고, 몇몇 장면에서는 대부분 나뭇잎에 표시된 노이즈 패턴을 줄이기 위해 강도를 낮췄습니다. 컬러 또는 직접 조명 강도(Direct Lighting Strength)를 비롯한 물리 기반이 아닌 렌더링(non-PBR) 옵션은 사용하지 않았습니다이 효과는 해상도에 의존하므로 원하는 출력 해상도에 맞게 미세 조정해야 합니다.

 

뎁스오브필드(피사계심도)

DOF는 고속 촬영 렌즈로 인한 부산물일 뿐만 아니라 스토리에서 초점을 맞추는 데 있어 필수적인 툴입니다. 이미지는 빠르게 움직이기 때문에 시청자가 초점을 잘 따라갈 수 있도록 세심하게 이끌어야 합니다.

시네머신에는 초점을 트래킹할 수 있는 매우 유용한 옵션이 있습니다. 이 포스트 프로세싱 툴의 새로운 버전은 완전히 개편되어 더 이상 해상도에 의존하지 않습니다. Unity 2018 버전에서는 VFX 그래프 투명도 렌더 큐(Render Queue) 기능이 없었습니다. 그래서 셔먼 제작 당시 물 효과가 구현된 일부 장면에서는 심도가 얕은 뎁스오브필드(피사계심도)를 사용할 수 없었습니다. 다행히 이 VFX 그래프 기능은 2019.2 버전에 도입되었습니다.

 

비네트

비네트는 매우 유용한 효과이지만 과도하게 사용되는 경향이 있습니다. 비네트를 사용하면 렌즈를 통해 촬영하는 것과 같은 방식으로 프레임 모서리에서 시각적으로 광원이 없어지는 효과가 나타납니다. 이 효과를 사실적으로 묘사하려면 항상 둥글게 처리해야 합니다.

 

블룸 

블룸은 카메라 센서와 더러워진 렌즈에 광원이 강하게 번지면서 생성되는 멋진 효과입니다. Unity에서 이 효과를 시뮬레이션할 수 있지만 이 기법 역시 과도하게 사용하지 않아야 합니다.

결론

애니메이션 조명은 복잡하고 숙달하기도 어렵습니다. 이 포스팅에서는 기존 조명 아티스트가 실시간 렌더링 작업 시 조명에 대해 알아야 하는 거의 모든 것을 살펴보았습니다. 포스팅에서 소개한 흥미로운 기법들을 시도해 보고 싶은 마음이 드셨기를 바랍니다.

저는 이제 기존 방식의 조명 기법은 더 이상 사용하지 않을 것 같습니다. 실시간 애니메이션 기술은 애니메이션 제작을 혁신하고 있으며 새로운 차원의 기회를 창출하고 있습니다. 손해를 감수할 필요 없이 도전하고 실험할 수 있는 기회가 생겼으니 앞으로의 결과는 더 긍정적일 거라 예상합니다.

전체 프로젝트에 대한 액세스를 비롯하여 셔먼에 대한 자세한 내용은 유니티 영화, 애니메이션 및 시네마틱 페이지에서 확인할 수 있습니다. 유니티에 문의하여 아이디어를 실제 프로젝트로 구현하는 데 도움을 받아보시기 바랍니다.

 

3 replies on “셔먼 제작 과정: Unity에서 구현하는 시네마틱 조명”

Congratulations Jean-Philippe Leroux, it looks amazing and your tips are useful.
Dear Unity, 3 years after HDRP was announced, it would be interesting to see some games that use HDRP besides short films.

Comments are closed.