https://www.youtube.com/watch?v=kW9-FD3vulY

Epic Games의 Wallace Wainhouse이며 RealityScan Desktop의 Product Specialist입니다. MXR의 공동 창립자이자 CTO인 Elliot Round이며, 저희는 measured PBR technology를 개발하고 있습니다.

이것들은 몇 가지 결과물입니다.

최근에 Wallace가 더 많이 캡처하고 있는 그 대상

Marceau와 RealityCapture를 함께 사용하였으며, Unreal Engine으로 렌더링하였습니다.

본 발표는 PBR(Physically Based Rendering) 텍스처 제작 및 스캔 데이터를 실감 나게 만드는 방법에 대한 내용을 다룹니다. 이는 빛에 따라 올바르게 반응하는 material을 만드는 과정을 포함합니다.

PBR(Physically Based Rendering) 제작 경험이 있으시다면, 이는 다음과 같은 과정을 포함할 수 있음을 알고 계실 것입니다.

특별한 하드웨어, 특별한 전문성, 또는 상당한 예술적 추측을 요구하는 매우 값비싼 릭(rig)입니다.

워크플로우를 설명하기 전에, 우선 **materials**가 무엇인지 알아보는 것이 좋겠습니다.

3D에서 메쉬(mesh)가 존재하지만, 언리얼 엔진(Engine)은 해당 메쉬를 가장 효율적으로 렌더링(render)하는 방법을 이해해야 합니다.

이 부분에서 셰이더(shaders)와 머티리얼(materials)이 중요한 역할을 합니다. 렌더링(rendering) 시 픽셀(pixel) 처리를 위해, 엔진은 해당 픽셀이 어떤 경로를 통과해야 하는지 알아야 합니다.

표면에서 튕겨 나오는 방식이 존재합니까? 반사되는 방식이 있습니까? 미션을 가질 수 있습니까? 우리는 materials를 사용하여 매우 다양하고 풍부한 스타일을 창조합니다.

이 중 일부는 가상일 수도 있고, 판타지나 카툰의 요소일 수도 있습니다. 이처럼 다양한 시도가 가능합니다. 하지만 오늘은 PBR에 대해 중점적으로 다루겠습니다.

이는 Material 타입들을 아우르는 포괄적인 개념입니다.

이것은 저희가 구성한 씬입니다. 수많은 3D 스캔 데이터가 사용되었으며, 모두 실제 오브젝트들입니다. 현재 이들 중 PBR (Physically Based Rendering) 속성을 가진 것은 없습니다. 저희는 오브젝트의 형상과 조명, 그리고 간단한 셰이딩 정보를 확보한 상태입니다.

하지만 이 모든 것들이 매우 평면적으로 보입니다. 마치 클레이로 만들어진 것처럼 보입니다. 각 오브젝트가 무엇으로 만들어졌는지 제대로 느껴지지 않습니다. PBR(Physically Based Rendering) 속성을 추가하는 순간, 오브젝트들은 빛과 상호작용하기 시작합니다. 훨씬 더 사실적으로 보이며, 모든 것이 생명력을 얻게 됩니다.

두 가지를 비교해 보면, 무엇이 금속으로 만들어졌는지 알 수 있습니다.

'leather'가 무엇인지 알아봅니다.

만져지는 듯한 질감이 느껴집니다.

장면에 깊이감을 부여하여 사실감을 높입니다.

PBR(Physically Based Rendering)의 가장 흥미로운 점은 오브젝트의 질감을 거의 실제로 만지는 것처럼 느낄 수 있다는 것입니다.

이 클립들 중 하나에는 금속 틴이 있습니다.

검은색입니다.

PBR 버전에서는 이를 painted enamel로 볼 수 있습니다.

이것은 상당히 오래되었으며, 상당히 불안정합니다.

그것이 어떤 느낌일지 거의 상상할 수 있습니다.

표면을 손으로 쓸어내리는 것.

PBR(Physically Based Rendering)은 현실의 물리 법칙을 시뮬레이션하는 방식으로 작동합니다. 이는 실제 빛의 경로를 재현하는 과정을 모방합니다.

3D 오브젝트의 표면과 상호작용하여 일정 수준의 에너지 보존을 보장합니다. 따라서 3D 오브젝트를 씬에 배치할 경우,

정확한 조명이 있다면, 오브젝트는 해당 조명을 올바르게 반영하게 됩니다.

이는 객체 자체에 닿는 빛보다 더 많은 빛을 반사시킵니다. 실제 세계에서 캡처된 조명 환경인 HDRIs와 같은 것을 혼합하면 이러한 객체는 더욱 사실적으로 보이게 됩니다.

가상 환경에서

그리고 우리는 그것들이 무엇으로 만들어졌는지 거의 알 수 있으며, 무엇으로 만들어졌다고 느낄 수도 있습니다.

PBR(Physically Based Rendering) 오브젝트를 구성하는 요소는 무엇입니까? PBR에는 두 가지 주요 셰이더(shader)가 있습니다. 하나는 Specular Workflow이고, 다른 하나는 Metallic Workflow입니다. 두 워크플로우 모두 동일한 작업을 수행하지만 최적화 방식이 다릅니다. 오늘은 Specular Workflow Shader에 대해 알아보겠습니다.

가장 먼저 살펴볼 것은 base mesh입니다. 매우 low poly하며, 상당히 smooth하고 복잡한 shading은 없습니다.

노멀(normals)을 추가하면, 노멀은 버텍스(vertices) 사이에서 발생하는 현상을 설명합니다. 이를 통해 하이폴리(high poly) 메쉬로 표현해야 하는 마이크로 디테일(micro detail)을 추가적으로 구현할 수 있습니다.

해당 기능을 활성화하면, 오래된 휘발유 통에 생긴 모든 긁힘, 흠집, 그리고 벗겨진 페인트 조각들을 확인할 수 있습니다.

먼저, PBR (Physically Based Rendering) 속성 중 첫 번째로 'roughness'에 대해 설명드리겠습니다. Roughness는 빛줄기가 물체의 표면에 닿을 때 발생하는 현상을 나타냅니다.

해당 광선이 산란하는지, 아니면 매끄러운 선으로 반사되는지를 말씀하시는 것입니까? 광선이 산란할 경우 매우 거칠게 표현됩니다.

이것은 흰색 값으로 표시합니다. 부드러운 부분은 검은색 값으로 표시합니다. 이 오래되고 녹슨 휘발유 캠을 보면, 녹슨 부분이 흰색임을 알 수 있습니다.

매끄럽게 칠해진 영역은 검은색에 더 가깝습니다.

이 얇은 흰색 스트립은 모두 스크래치를 나타냅니다. 이를 3D 오브젝트에 적용하면 반사되는 영역과 그렇지 않은 영역을 확인할 수 있습니다. 다른 첩(chop) 속성으로는 specular가 있습니다. Specular는 오브젝트에 닿는 빛과 관련이 있습니다.

빛이 얼마나 반사되는지, 에너지가 실제로 얼마나 흡수되는지에 대한 내용입니다. Specular reflection은 종종 약간의 색조를 띠는 경향이 있습니다.

금색, 황동과 같은 금속이나 물감에서 흔히 볼 수 있는데, Specular Reflection이 흰색이 아니라 주황색이나 노란색을 띨 수 있습니다.

이를 활성화하면, 페인트와 같이 반사율이 높은 영역과 Rust처럼 반사율이 낮은 영역 사이의 실제 차이를 볼 수 있습니다. 마지막으로 Diffuse 값을 살펴봅니다. Diffuse는 저희의 기본 색상(base color)입니다.

이는 3D 에셋의 주된 외형을 결정합니다. 이를 혼합하면 최종 3D 에셋이 완성되며, 매우 사실적으로 보입니다.

이 영상은 언리얼 엔진으로 렌더링되었습니다. Quixel scene을 활용하여 제작되었습니다.

해당 오브젝트는 RealityCapture를 사용하여 Marceau에서 작업되었습니다. Normal map을 통해 확인할 수 있습니다.

표면에서 매우 섬세한 디테일을 얻으실 수 있습니다.

오늘 보여드릴 것과 다른 휘발유 캔입니다. 저와 Elliot 모두 개인 차고에 스캔한 휘발유 캔이 있기 때문입니다.

PBR 스캔이 모든 곳에 적용되지 않는 이유가 궁금하실 수 있습니다.

그리고 답은 실제로 만들기가 특별히 쉽지 않다는 것입니다.

일반적인 photogrammetry 방식으로는 diffuse texture를 얻게 됩니다. 이는 albedo texture를 흉내 낸 것에 가깝습니다. 여러 카메라로 투영된 이미지를 혼합하여 생성하므로, reflection이나 roughness와 같은 material 정보는 포함되지 않습니다.

전통적으로, 두 가지 주요 방법이 있습니다.

PBR material 제작을 시도할 수 있습니다. 이후 다룰 세 번째 방법도 있습니다. 직접 제작하는 방식은 곧 설명드리며, 매우 복잡한 하드웨어를 사용하는 방법도 있습니다.

cross-polarization 및 photometric stereo 기법을 활용합니다. 수동 방식은 일종의 경험적인 추측에 가깝습니다.

사람들은 diffuse map을 사용합니다. 이미 많은 분들이 시도해 보셨을 것입니다. roughness가 어떻게 될지 이해한 후에, 기본적으로 어두운 부분이 더 빛나는(shinier) 것으로 간주합니다.

그리고 밝은 부분은 더 거칠게 처리했습니다. 이 경우에는 제가 다음과 같이 결정했습니다.

타일의 Grooves를 더 거칠게 만들고 싶었습니다. 이를 위해 맵을 Invert한 후 조절하여 대략적인 Roughness map을 만들었습니다. Bump map은 약간 어둡게 처리되었지만, 어두운 부분이 더 깊이 가라앉는 효과를 주어 타일의 Grooves 표현을 살렸습니다. 이들을 조합하면 아무것도 하지 않은 것보다 훨씬 사실적인 결과물을 얻을 수 있습니다.

이제 훨씬 더 복잡한 방법에 대해 알아보겠습니다. 한 가지 방법으로 Roughness를 표현할 수 있는 것은 **cross-polarization**을 사용하는 것입니다. 여기서는 두 개의 **polarized filters**를 사용합니다.

플래시에는 하나의 방향으로, 렌즈에는 그에 수직인 90도 방향으로 각각 하나씩 배치됩니다. 이를 통해 모든 빛 번짐(glare)을 차단하는 효과를 얻을 수 있습니다.

각 카메라 위치마다 이 과정을 반복하고, 모든 사진에서 일종의 glare map을 얻을 수 있다면, 이를 모두 블렌딩할 수 있습니다.

glossiness map을 얻게 되며, 이를 invert하면 roughness map과 유사해집니다.

완벽하게 작동하지 않는 경우도 있다는 것을 알 수 있습니다. 흰색 에나멜 배지를 부착한 것을 확인할 수 있습니다.

Glossiness map을 보시면, 광택이 나야 할 부분이 하얗게 표시되어야 하는데 검게 표현되어 있어 잘못되었습니다. 따라서 이 방법이 항상 유효한 것은 아닙니다.

이러한 놀라운 결과물을 얻으실 수 있습니다. 그리고 Normal Map을 얻고 싶으시다면, Photometric Stereo라는 예전 기법이 있습니다.

이 작업을 하는 것은 매우 고통스럽습니다. 여러 개의 다른 조명으로 동일한 카메라 위치에서 이미지를 캡처해야 하고, 그 후에 수학적인 계산을 통해 normal map을 추출해야 합니다.

이처럼 PBR material을 제작할 경우, 방대한 양의 데이터가 발생하며 이를 처리하는 과정 또한 간단하지 않음을 짐작하실 수 있습니다.

이는 세 번째로 설명할 주제입니다. 기본적으로 이 내용은 매우 간단합니다. 여러분이 가진 diffuse 맵을 가져와 'give me my materials' 버튼만 클릭하시면 됩니다.

이는 다소 flawed 하며, 매우 불확실한 결과를 초래할 수 있습니다. 또한 3D 환경에서는 작동하지 않습니다.

이 맵들은 시각적으로 보기 좋지만, 실제 결합했을 때는 기대만큼의 완성도가 나오지 않았습니다.

방금 diffuse를 만져본 결과입니다.

Marso Measure와 Reality Scan을 사용하여 3D PBR을 직접 캡처하는 방법을 보여드리겠습니다.

현재 사용 가능한 하드웨어를 활용합니다. 이를 진행하기 전에, 손을 들어 얼마나 많은 분들이 관심 있는지 확인하고 싶습니다.

카메라와 flash를 모두 가지고 있는 사람

이 부분에서는 point light나 ring flash와 같이 특정 지점에 빛을 조사하는 조명에 대해 설명하고 있습니다. Marso를 사용하면 이러한 조명 효과를 구현할 수 있습니다.

PBR(Physically Based Rendering) 오브젝트를 모두 캡처하실 수 있습니다.

Marso는 PBR(Physically Based Rendering)을 가능한 한 많은 크레이터(crater)에 적용하기 위해 개발되었습니다. 이전에는 PBR 캡처가 매우 까다롭거나 고가의 하드웨어를 사용하는 데 제한이 있었습니다.

대형 게임 및 영화 스튜디오에

복잡한 하드웨어 없이도 구현 가능한 방법을 개발하였습니다. 따라서 cross-polarization이나 fancy rigs 등이 필요하지 않습니다.

필터와 트리거 없이, 카메라와 포인트 라이트(Point Light)만 있으면 됩니다.

이것은 여러 가지 다른 variant로 제공될 수 있습니다.

DSLR에 상단에 작은 Point Light를 얹은 형태로 제작될 수 있습니다.

링 플래시(ring flash)일 수도 있고, 스마트폰의 조명일 수도 있습니다.

이는 AAA 게임 스튜디오, 인디 스튜디오, 취미 개발자, 학생, 혹은 단순히 3D 스캔을 즐기는 사람 누구나 PBR 속성을 동일한 수준으로 캡처할 수 있음을 의미합니다.

카메라와 플래시만으로 단순화함으로써, 캡처를 위한 표준으로도 작용합니다.

다른 위치에서 에셋을 캡처하는 경우,

세 곳의 서로 다른 벤더로부터 해당 asset들을 모두 가져올 수 있습니다.

동일한 씬에 배치하면 동일하게 보이게 됩니다.

플래시 사진 촬영으로 이를 수행합니다.

이것은 3D 객체가 빛과 어떻게 상호작용하는지 측정함으로써 이루어집니다. 우리는 이러한 반사를 기반으로 PBR properties를 측정합니다.

반사되는 방식을 측정함으로써, 우리는 specularity와 roughness를 살펴볼 수 있습니다.

Masso를 통해 base color를 이해할 수 있으며, Masso는 더 큰 3D 씬에 포함하고자 하는 3D 객체를 캡처하도록 설계되었습니다.

카메라를 가지고 이동할 수 있는 범위라면 무엇이든 촬영할 수 있으나, 방 전체를 캡처하는 데 최적화되어 있지는 않습니다.

PBR 스캔을 전체적으로 수행할 수 있습니다.

영화 및 게임을 위한 패션 의류, 신발, 핸드백과 같은 중소형 오브젝트에 대한 테스트를 진행하였습니다.

뮤지엄에 소장된 유물처럼 문화유산에 해당하는 많은 prop(애셋)들도 박물관에서 꺼낼 필요 없이 사용할 수 있습니다.

진열장을 분리하여 몇 장의 사진을 촬영하시면 됩니다. 소형 및 중형 가구 몇 점 또한 촬영을 완료하였습니다.

PBR(Physically Based Rendering)의 모든 속성을metallic 워크플로우와 specular 워크플로우 모두에 대해 제공합니다. diffuse, specular, albedo, metallic, roughness 등을 활용하실 수 있습니다.

'gloss, index refraction, normals' 데이터는 512 픽셀부터 16K까지 지원하며, JPEG 형식으로 제공될 수 있습니다.

PNG 파일 및 32비트 EXR 파일과도 호환됩니다. 손 그림(freehand) 방식과 가장 잘 작동할 것으로 예상됩니다.

이번에 진행한 스캔 작업 대부분은 링 플래시(ring flash)를 사용했습니다. 하지만 다른 방법으로도 스캔이 가능합니다. 예를 들어, 상단에 소형 LED를 장착한 릭(rig)을 활용하여 스캔을 진행할 수 있습니다.

최상의 결과를 얻기 위해서는 좋은 **coverage** 확보가 필수적이며, 이는 반복해서 강조될 것입니다. 3D 오브젝트 주변을 얼마나 잘 둘러볼 수 있느냐에 따라 모든 **reflection**을 포착할 가능성이 높아집니다.

포토그래메트리(photogrammetry) 베테랑이시라면, 이 방식이 다소 생소하시거나 기존과는 다른 방식으로 접근하실 수도 있습니다.

Marceau measured scan을 원하시면, 그대로 따라와 주시기 바랍니다.

최종적으로 양질의 스캔 데이터를 얻으실 수 있습니다.

Wallace와 저는 다음 몇 개의 슬라이드에서 실제로 이 중 하나를 어떻게 수행하는지 보여드리겠습니다.

장면 설정 방법과 실제 캡처 방법에 대해 설명드리겠습니다. 3D 스캔 소스 사진의 품질이 좋을수록 결과물의 완성도도 높아집니다. 이후 RealityScan을 통한 처리 과정, Marceau에서의 PBR 처리 방식, 그리고 최종적으로 Unreal Engine에서의 통합 과정을 보여드리겠습니다.

포토그래메트리 작업에 익숙하신 분들은 이 캡처 방식이 일반적인 것과는 다소 다르게 느껴지실 수 있습니다. 우선, 피사체를 의도적으로 언더노출(underexpose)해야 할 가능성이 높습니다. 그 이유는 Marceau가 필요로 하기 때문입니다.

객체의 밝기 전체 범위를 통해 값을 얻을 수 있습니다. 따라서 specular highlight가 blow out되지 않도록, 값은 1 미만이어야 합니다.

Marceau는 raw 이미지를 사용하며, 이는 뛰어난 color depth를 제공합니다. 이로 인해 객체의 나머지 부분이 어두워지는 현상을 자연스럽게 표현할 수 있습니다.

정보를 많이 끌어올 수 있습니다. 또한, 종종 저희가 사람들에게 알려주는 또 다른 점은 반짝이는 오브젝트는 사용하지 말라는 것입니다.

하지만 그것이 여기서의 핵심입니다. 종종 가장 흥미로운 PBR materials는 specular highlights와 일부 reflections가 있는 것들일 것입니다. 이제, 많은 이미지들을 살펴보겠습니다.

규정을 위반하는 것이 아닙니다. 사진은 최대한 많이 찍도록 권장합니다. 사용하지 않을 수도 있기 때문입니다. 하지만 생각보다 많은 사진이 필요하다는 사실에 놀라실 것입니다.

정말 괜찮은 photogrammetry scan을 얻는 데 필요한 것 이상입니다.

MASO measures scan을 진행할 때 고려해야 할 네 가지 사항이 있습니다. 첫째, 카메라입니다. RAW 파일을 촬영할 수 있는 카메라를 사용해야 합니다. 이는 하이라이트와 섀도우를 포함한 다이내믹 레인지를 최대한 보존하기 위함이며, JPEG 사용 시 클리핑될 수 있는 부분을 방지합니다.

또한, **exposure**에 관한 부분입니다. 이미지의 노출을 약간 낮추어 **underexpose** 하고자 합니다. 이는 **highlight**를 유지하기 위함입니다. 정상적인 노출을 하게 되면 **highlight**가 **clip**되어 3D 장면의 대부분 영역에 맞춰 노출이 이루어지게 됩니다.

노출(exposure)을 고정하는 것도 중요합니다. 수동 모드로 촬영 가능한 카메라는 필수적입니다. 스캔 중 노출이 계속 변하면 결과물에 치명적인 문제를 야기합니다.

노출(exposure)을 설정하고 고정(lock off)한 후 스캔(scan)을 진행하십시오. 다음으로 중요한 것은 조명(lighting)입니다. 측정 스캔(measured scan)을 수행하며 빛에 대한 반응을 측정하기 때문에 조명이 핵심입니다.

ambient lighting의 영향을 받지 않고, 오로지 flash의 시점에서 오는 이미지 결과물을 얻고자 합니다. 만약 continuous light와 같은 point light source를 사용하신다면,

실내 조명이 매우 어두운 곳에서 촬영하는 것이 가장 좋습니다. 만약 Wallace가 사용한 플래시와 같은 조명을 사용한다면, 방의 주변 조명을 압도할 만큼 충분히 강하게 사용할 수 있습니다.

'Coverage'에 대해 계속 이야기하고 있지만, 목표는 오브젝트의 충분한 뷰를 확보하는 것입니다.

일반적으로 오브젝트 주위 여러 링(rings)을 촬영하여 스캔한 후, 디테일(detail)을 얻기 위해 줌인(zoom in)하고, 마지막으로 스케일(scale)을 조정하는 방식으로 진행합니다.

MarsO 스캔 시에는 일반적으로 3D 스캔에서 크게 걱정할 필요가 없는 부분이 있습니다. 바로 스케일(scale)입니다. 이는 사진으로 스캔을 진행할 때 중요한 요소이기 때문입니다.

플래시의 경우, 오브젝트에 가까울수록 해당 오브젝트는 더 빠르게 타들어가는 것처럼 보이며 매우 밝게 표현될 것입니다.

거리가 멀어짐에 따라 조명(lighting)의 감소(fall off)가 더욱 빠르게 발생합니다. 이미지의 밝기(brightness)에 차이가 생기게 됩니다. 만약 장면의 스케일(scale)을 측정할 수 있다면,

Marceau는 이를 설명할 수 있습니다. 몇 가지 방법으로는 마커(markers)를 사용하는 것 등이 있습니다.

이에 대해 제가 생각하기에는 이러한 방식이 적용되고 있습니다.

Reality Scan에 삽입할 수 있으며, 서로 간의 거리를 알 수 있는 마커입니다.

마커가 있다면 씬에 Ruler를 배치할 수 있습니다. 또는 객체의 일부를 직접 측정하여 동일한 방식으로 진행할 수도 있습니다.

노출(exposure)을 올바르게 설정하는 가장 쉬운 방법은 사진을 두 번 촬영하는 것입니다.

플래시를 끄고 첫 번째 이미지를 촬영하십시오. 이상적으로는 완전히 검게 나와야 합니다. 만약 그렇지 않다면 exposure setting을 조절하십시오. 그 다음 플래시를 켜고 두 번째 이미지를 촬영합니다. 두 번째 이미지가 보기 좋고 약간 underexposed 되었다면 성공입니다.

여기서 보시는 바와 같이, 이 지점에서 문제가 없습니다. 이 시점에서 볼 수 있는 것은

이 반사 영역에 해당합니다. 이 반사를 여기서 포착함으로써, 우리는 무엇을 이해할 수 있는지 알 수 있습니다.

PBR 값에 대해 말씀드리겠습니다. specular reflection이 오브젝트 전체를 거의 덮을 정도로 충분한 이미지를 확보하는 것이 목표입니다.

이 오브젝트를 선택한 이유는 상당히 흥미로운 material properties를 가지고 있기 때문입니다. Mindflip은 제게 있어 상당히 어려운 부분입니다.

공항 보안 검색대를 통과해 이곳에 왔습니다. 스캔 작업을 진행할 때, 몇 번의 루프(loop)를 돌리곤 합니다.

전반적인 형태를 파악하였는지 확인합니다.

하지만 이렇게 상당히 평면적인 것을 캡처할 때는,

일반적으로 좌우, 상하로 스크럽(scrub)하는 것이 좋습니다.

그것은 여러분이 가지고 있는 것을 확실하게 보장해 줄 것입니다.

데이터셋 내의 모든 reflective regions을 말합니다.

이는 마치 물체에 빛으로 칠하는 것과 같아 전체가 덮이는 것처럼 보입니다. 왼쪽과 오른쪽으로 스크럽(scrub)하며 여러 이미지를 합쳤을 때의 모습을 확인할 수 있습니다. 사진을 충분히 찍지 않으면, 즉 sparse scan 상태에서는 특정 영역이 누락되는 결과를 초래합니다.

PBR property가 적용된 부분과 그렇지 않은 부분이 존재합니다. Roughness Pass 또는 Specular 값에는 봉우리와 골이 나타납니다. 일반적으로 물체가 더 반짝일수록,

촬영하고 싶은 이미지가 많을수록, 그리고 오브젝트의 톤이 어두울수록, 몇 가지는 덜 신경 써도 될 가능성이 있습니다.

예를 들어, 저희가 수행한 모든 스캔은 다음과 같습니다.

약 600개에서 700개 정도로 추정됩니다.

신발처럼 표면이 다소 matte한 경우, 예를 들어 leather 소재라면 300장 정도의 이미지로도 충분합니다.

캡처가 완료되었으므로 다음 단계로 진행할 수 있습니다. 워크플로우의 최상위 단계에서 스캔을 진행하십시오. Marceau를 통해 데이터를 초기 처리합니다. 그런 다음 RealityCapture, RealityScan으로 3D 데이터를 넘겨주십시오.

Marceau로 돌아가 PBR predictions를 진행하신 후, 이 두 가지 요소를 Unreal Engine으로 가져오시면 됩니다.

Marceau의 첫 번째 단계는 job을 생성하는 것입니다. 스캔 이름을 입력하는 dialog가 나타나며, 이를 통해 여러 번 다시 접근할 수 있습니다. 또한, 원본 raw photography의 위치를 지정할 수 있습니다. raw photography를 불러올 때 이미지의 brightness를 조절할 수 있습니다. 이는 PBR predictions에 전혀 영향을 미치지 않습니다.

그 결과물을 얻을 수 있습니다. Reality Scan을 통해 실행할 수 있는 proxy file을 제공받는 것일 뿐입니다. 너무 밝거나 어두운 경우, 여기서 간단한 조정을 할 수 있습니다.

그리고 JPEG 또는 EXR 파일로 export하십시오.

JPEG 또는 EXR 파일을 Reality Capture로 전송할 때, exposure 값을 변경하는 옵션을 선택하실 수 있습니다.

앞서 보여드렸듯이, 이 단계에서는 하이라이트(highlights)가 날아가도록 두어도 괜찮습니다. 이렇게 하면 모든 카메라에서 더 나은 퀄리티의 결과물을 얻을 수 있습니다.

RealityScan을 이용한 **processing** 과정과, 때로는 필요하지 않을 수 있는 좀 더 발전된 방법을 안내해 드리겠습니다. 이 과정은 일반적인 **processing**과 매우 유사합니다.

RealityScan에서 alignment, meshing, scaling, simplifying, smoothing, unwrap 작업은 중요합니다. 이후 Marceau가 PBR material 제작에 필요한 파일을 export하는 과정도 필수적입니다. Shiny objects를 사용할 가능성이 높습니다.

말씀드렸듯이, 이것은 scanning에 적합하지 않습니다.

Specular highlight는 객체의 표면에서 공통 특징점을 찾아 카메라의 위치를 삼각화하는 alignment 방식 때문에, alignment 및 meshing 작업에 문제를 일으킵니다.

Alignment 단계에서는 모든 카메라의 위치를 파악합니다. Meshing 단계에서는 해당 카메라들의 위치를 이미 알고 있다고 가정합니다.

이후 픽셀 단위로 들어가 유사한 픽셀을 다른 이미지에서 찾아냅니다.

그리고 나서 depth map을 구합니다. 이를 통해 오브젝트의 모든 픽셀에 대한 depth value를 얻게 됩니다. 각 카메라에 대한 depth를 가지게 되면,

수백만, 수천만의 트라이앵글로 멋진 메쉬를 만들 수 있습니다. 하지만 명확히, 저희는 유사한 픽셀을 찾고 있기 때문에,

비슷한 픽셀을 찾으려 할 때 큰 반사가 존재하면, 메싱(meshing) 과정에서도 문제가 발생할 것입니다.

얼라인먼트(alignment)와 메싱(meshing) 모두에 문제가 있습니다. 얼라인먼트 문제를 어떻게 해결할 수 있을까요?

Markers는 매우 유용합니다. 원형(circular) 마커 대신 April tags를 생성할 수 있는 옵션이 있음에도 불구하고 왜 원형을 사용했는지 확신할 수 없습니다. April tags를 사용하는 것이 더 나은 선택일 것입니다. 지금 보고 있는 원형 마커들이 April tags라고 상상하시기 바랍니다.

원형은 괜찮지만, April tag가 조금 더 나은 경향이 있습니다. 다른 방법으로는 배경에 오브젝트를 배치할 수 있습니다. 스탠드에서 보시다시피 말입니다.

이 매우 텍스처링된(highly textured) 재질에 대해 말씀드리겠습니다. Reality Capture는 여기서 수많은 tie points를 찾아낼 것입니다.

카메라 정렬에 도움이 될 것입니다. 객체 자체가 Reality Scan이 카메라 위치를 파악하는 데 도움을 주는지 여부는 중요하지 않습니다. 장면 내 어떤 것이든 될 수 있습니다. 마커가 도움을 줄 것입니다.

객체 주변에 배치하는 모든 고품질 텍스처 표면은 정렬(alignment)에도 도움이 될 것입니다.

메싱(meshing) 작업에 도움이 되겠습니다. 현재 메시가 보이지는 않으나, 단순화하고 스무딩(smoothing) 처리를 했다면 괜찮았을 것입니다. 하지만 때로는 지오메트리(geometry)에 거대한 구멍이 발생할 수 있으며, 이는 전혀 좋지 않습니다. 따라서 메싱 작업 시에는 스캐닝 스프레이(scanning spray)를 사용할 수 있습니다.

객체에 spray를 적용한 후, Marceau에서 촬영한 이미지, 즉 shiny한 이미지들과 함께 정렬할 수 있습니다. 이 정렬된 spray 이미지들을 mesh 생성에 활용할 수 있습니다.

이로써 매우 훌륭한 geometry를 얻게 됩니다. 이후 당연히, Marceau에게는 Marceau를 위한 이미지들만 전송합니다.

이 상황에서는 sprayed workflow를 사용하신다면 markers가 큰 도움이 될 것입니다. 한 세트는 sprayed 처리되었고 다른 한 세트는 그렇지 않기 때문에, 표면에서 동일한 feature를 인식하지 못할 수 있습니다. 따라서 markers는 동일하게 유지되어야 합니다.

두 이미지 세트 모두에서, 시도할 때마다 모든 것이 한 번에 정렬되는 것을 확인하실 수 있습니다. 제 메시가 보일 것입니다. 이는 스프레이된 이미지만을 사용하여 메시화된 것입니다.

스케일링에 대해 말씀드리겠습니다. 앞에서 설명드린 것처럼, 마커 간의 스케일을 설정하실 수 있습니다.

Elliot는 또한 객체 상의 두 점 사이의 거리를 알면 Reality Scan에서 해당 기능을 사용할 수 있다고 언급했습니다. 이는 Marceau에게 매우 중요한 부분입니다.

빛의 양을 정확히 파악하기 위해서는, flash로부터 object까지 빛이 이동한 거리, 반사되어 sensor에 도달하기까지의 과정을 알아야 합니다.

스케일링은 매우 중요하며, 이에 대한 정보 없이는 어떠한 계산도 수행할 수 없습니다. 임의의 스케일을 사용하는 것은 허용되지 않습니다.

Reality Scan에서 스케일을 조정하지 않는 한 받게 되는 결과입니다.

이는 전적으로 임의적이며, 단순화하고 부드럽게 만드는 과정입니다.

이곳에서 6900만 트라이앵글의 원본 메쉬를 확인하실 수 있습니다. 200만 트라이앵글로 스무딩했습니다만, 아마 과한 것 같습니다. 하지만 Marceau는 photometric stereo와 매우 유사한 훌륭한 normal map을 만들어냅니다. 따라서 실제 최종 메쉬는

메시(mesh)에 커다란 구멍이 없고 부드러우며, 트라이앵글(triangle) 수가 과도하지 않다면 Marceau가 멋지게 작업해 줄 것입니다.

UV unwrapping이 필요합니다.

Marceau 또한 작업 시 unwrap이 필요합니다. 따라서 단일 텍스처로 unwrap이 이루어집니다. Reality Scanner의 기본값은 단일 8K 텍스처이지만, 텍스처 크기는 중요하지 않다고 생각합니다.

2K, 4K, 8K, 또는 16K 해상도일 수 있습니다.

마지막으로, 파일을 Masso로 export할 것입니다. 가장 중요한 것은 당연히 mesh이며, 앞서 말씀드렸듯이 UV unwrap이 되어 있어야 합니다. Masso는 mask mesh 옵션도 제공합니다. 이 경우에는 mask mesh가 반드시 필요합니다.

그 아래에 있는 이미지들은 occluded될 것이기 때문입니다. 따라서 Masso가 하단 근처의 어떤 것을 측정하려 할 때, 테이블이 방해가 된다면 실제 객체가 아닌 테이블을 보고 있기 때문에 완전히 잘못된 측정을 하게 됩니다.

마스크를 입력하면, Masso는 어떤 부분이 오브젝트이고 어떤 부분이 오브젝트가 아닌지를 인지합니다. 왜곡 처리를 위해 ST maps 또한 필요합니다.

오브젝트의 distortion을 완벽하게 이해하고 있습니다. 또한, 어떠한 이유로든 mesh를 조금 다르게 UV unwrap하고 싶으실 경우, 이 단계에서 다음과 같은 작업도 가능합니다.

Alambic 파일을 re-topologize하고 약간 정리한 후 Marceau로 보낼 수 있습니다. 단, 모든 카메라와 scale은 유지해야 합니다.

RealityScan에서 3D 데이터를 얻었습니다. 이를 설정하기 전에 가장 먼저 할 일은 exposure settings을 적용하는 것입니다. 스캔 과정에서 가장 먼저 하는 일 중 하나는 gray card 사진을 찍는 것입니다. gray card를 놓고 사진을 찍은 후, 거리를 측정하면 Marceau가 light falloff를 이해할 수 있게 됩니다.

이 과정은 한 번만 수행하시면 됩니다. 동일한 카메라와 라이트 설정을 사용하신다면, 한 번 설정 후 여러 번 재사용이 가능합니다. 다양한 exposure 및 light brightness 조합을 리스트로 관리하며 선택하실 수 있습니다.
선택하신 후에는 사용하시는 photogrammetry application 버전을 명시합니다. 본 예시에서는 Reality Scan을 사용합니다. 그 다음 mesh file의 위치를 지정합니다. Alambic으로 이동합니다.
마스크를 사용하시려면 선택적으로 마스크의 위치를 지정할 수 있으며, 마지막으로 ST Map folder의 위치를 지정합니다.
이 설정이 완료되면 settings로 이동하여 원하는 resolution을 결정합니다. 여기서는 최대 16K까지 설정 가능합니다. 또한 실행할 master 버전을 선택할 수 있습니다. 모델의 다양한 버전은 미묘하게 다른 결과를 제공합니다. 마지막으로 이 작업을 queue에 추가하거나 즉시 process할 수 있습니다.

Reality Scan을 통해 훌륭한 3D mesh를 얻었고, Marceau로부터 모든 PBR textures를 확보하였습니다.

Quixel의 Sebastian에게서 이 Substrate Material에 대한 도움을 받았습니다. 저는 이 분야의 전문가는 아니지만, 직접 제작해 보았습니다. 몇 가지 작은 수정만 거쳤으므로, 직접 조정을 하실 수 있습니다. 이는 Unreal Engine에서 다른 Material을 만드는 것과 매우 유사합니다.

맵을 해당 위치에 로드하시면 됩니다.

마지막으로, 저희는 언리얼 렌더링 결과물 몇 개를 준비했습니다.

이것으로 발표를 마치겠습니다. 감사합니다.

와주셔서 감사합니다.