[KOR][30]PBR-for-Photogrammetry--Marso-with-Reali

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

Frame at 4.92s

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

Frame at 31.08s

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

Frame at 33.19s

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

Frame at 35.92s

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

Frame at 55.01s

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

Frame at 69.47s

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

Frame at 75.62s

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

Frame at 86.05s

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

Frame at 92.74s

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

Frame at 98.83s

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

Frame at 106.29s

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

Frame at 115.05s

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

Frame at 124.88s

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

Frame at 128.70s

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

Frame at 141.06s

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

Frame at 159.43s

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

Frame at 162.02s

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

Frame at 164.11s

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

Frame at 168.78s

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

Frame at 172.92s

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

Frame at 178.92s

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

Frame at 181.36s

검은색입니다.

Frame at 183.40s

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

Frame at 185.68s

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

Frame at 187.68s

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

Frame at 189.75s

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

Frame at 193.25s

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

Frame at 203.51s

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

Frame at 212.27s

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

Frame at 222.78s

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

Frame at 230.18s

가상 환경에서

Frame at 232.25s

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

Frame at 238.58s

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

Frame at 257.32s

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

Frame at 266.09s

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

Frame at 278.27s

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

Frame at 288.88s

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

Frame at 296.32s

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

Frame at 303.86s

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

Frame at 313.87s

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

Frame at 318.01s

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

Frame at 337.23s

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

Frame at 347.89s

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

Frame at 356.70s

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

Frame at 370.14s

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

Frame at 382.47s

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

Frame at 391.73s

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

Frame at 396.31s

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

Frame at 402.50s

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

Frame at 422.02s

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

Frame at 426.48s

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

Frame at 432.06s

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

Frame at 453.92s

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

Frame at 456.50s

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

Frame at 469.49s

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

Frame at 476.50s

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

Frame at 488.64s

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

Frame at 495.72s

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

Frame at 524.73s

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

Frame at 536.25s

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

Frame at 546.29s

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

Frame at 553.00s

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

Frame at 561.52s

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

Frame at 567.16s

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

Frame at 577.11s

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

Frame at 584.02s

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

Frame at 597.42s

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

Frame at 607.80s

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

Frame at 617.67s

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

Frame at 624.25s

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

Frame at 628.86s

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

Frame at 634.80s

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

Frame at 640.67s

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

Frame at 647.42s

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

Frame at 650.65s

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

Frame at 660.75s

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

Frame at 669.17s

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

Frame at 676.47s

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

Frame at 679.12s

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

Frame at 686.33s

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

Frame at 691.58s

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

Frame at 693.92s

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

Frame at 696.35s

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

Frame at 701.49s

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

Frame at 714.52s

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

Frame at 719.66s

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

Frame at 723.52s

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

Frame at 725.99s

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

Frame at 731.19s

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

Frame at 734.51s

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

Frame at 741.34s

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

Frame at 747.08s

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

Frame at 755.86s

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

Frame at 760.03s

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

Frame at 762.85s

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

Frame at 771.57s

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

Frame at 778.21s

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

Frame at 787.00s

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

Frame at 804.63s

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

Frame at 816.19s

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

Frame at 821.64s

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

Frame at 831.72s

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

Frame at 844.47s

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

Frame at 852.53s

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

Frame at 856.22s

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

Frame at 860.02s

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

Frame at 865.16s

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

Frame at 888.64s

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

Frame at 900.67s

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

Frame at 912.89s

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

Frame at 920.99s

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

Frame at 926.95s

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

Frame at 939.56s

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

Frame at 948.99s

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

Frame at 954.24s

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

Frame at 977.44s

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

Frame at 991.74s

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

Frame at 1002.37s

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

Frame at 1013.44s

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

Frame at 1024.90s

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

Frame at 1035.83s

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

Frame at 1040.22s

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

Frame at 1048.46s

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

Frame at 1061.21s

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

Frame at 1066.61s

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

Frame at 1075.43s

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

Frame at 1081.63s

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

Frame at 1084.44s

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

Frame at 1090.44s

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

Frame at 1101.63s

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

Frame at 1108.18s

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

Frame at 1126.18s

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

Frame at 1134.89s

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

Frame at 1141.14s

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

Frame at 1149.13s

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

Frame at 1154.84s

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

Frame at 1164.40s

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

Frame at 1167.64s

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

Frame at 1172.34s

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

Frame at 1175.96s

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

Frame at 1179.18s

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

Frame at 1187.93s

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

Frame at 1206.22s

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

Frame at 1217.00s

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

Frame at 1222.94s

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

Frame at 1226.26s

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

Frame at 1229.87s

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

Frame at 1236.98s

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

Frame at 1252.48s

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

Frame at 1262.62s

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

Frame at 1284.61s

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

Frame at 1294.70s

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

Frame at 1302.23s

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

Frame at 1310.13s

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

Frame at 1318.74s

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

Frame at 1328.63s

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

Frame at 1346.20s

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

Frame at 1351.19s

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

Frame at 1365.56s

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

Frame at 1373.17s

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

Frame at 1378.14s

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

Frame at 1386.31s

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

Frame at 1391.49s

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

Frame at 1398.86s

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

Frame at 1403.35s

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

Frame at 1416.49s

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

Frame at 1423.02s

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

Frame at 1428.32s

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

Frame at 1439.77s

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

Frame at 1445.07s

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

Frame at 1464.50s

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

Frame at 1476.13s

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

Frame at 1486.38s

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

Frame at 1499.37s

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

Frame at 1514.85s

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

Frame at 1522.07s

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

Frame at 1532.71s

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

Frame at 1541.80s

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

Frame at 1546.87s

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

Frame at 1549.35s

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

Frame at 1554.53s

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

Frame at 1569.12s

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

Frame at 1576.78s

UV unwrapping이 필요합니다.

Frame at 1579.89s

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

Frame at 1591.48s

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

Frame at 1598.32s

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

Frame at 1613.78s

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

Frame at 1625.64s

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

Frame at 1636.14s

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

Frame at 1646.72s

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

Frame at 1657.56s

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

Frame at 1677.29s

이 과정은 한 번만 수행하시면 됩니다. 동일한 카메라와 라이트 설정을 사용하신다면, 한 번 설정 후 여러 번 재사용이 가능합니다. 다양한 exposure 및 light brightness 조합을 리스트로 관리하며 선택하실 수 있습니다.

선택하신 후에는 사용하시는 photogrammetry application 버전을 명시합니다. 본 예시에서는 Reality Scan을 사용합니다. 그 다음 mesh file의 위치를 지정합니다. Alambic으로 이동합니다.

마스크를 사용하시려면 선택적으로 마스크의 위치를 지정할 수 있으며, 마지막으로 ST Map folder의 위치를 지정합니다.

이 설정이 완료되면 settings로 이동하여 원하는 resolution을 결정합니다. 여기서는 최대 16K까지 설정 가능합니다. 또한 실행할 master 버전을 선택할 수 있습니다. 모델의 다양한 버전은 미묘하게 다른 결과를 제공합니다. 마지막으로 이 작업을 queue에 추가하거나 즉시 process할 수 있습니다.

Frame at 1735.74s

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

Frame at 1747.07s

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

Frame at 1762.53s

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

Frame at 1767.26s

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

Frame at 1770.60s

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

Frame at 1772.71s

와주셔서 감사합니다.