Unity 검색

ArtEngine에서 크롬 볼과 Photometric Stereo로 만드는 사실적인 머티리얼

2021년 12월 2일 엔진 & 플랫폼 | 12 분 소요
hero image
hero image
다루는 주제
공유

Is this article helpful for you?

Thank you for your feedback!

크롬 볼을 이용한 Photometric Stereo는 거의 모든 표면에서 독창적이고 대단히 사실적인 PBR 머티리얼을 손쉽게 만들 수 있는 새로운 기술입니다.

소개

이번에 공개되는 새로운 ArtEngine 노드는 크롬 볼 또는 반사형 구체의 정적 표면을 다양한 각도에서 조명을 비춰 촬영한 여러 장의 사진을 분석하여, 자동으로 디테일한 알베도 맵과 노멀 맵을 생성합니다.

Photometric Stereo 기술을 사용하면 실내나 실외에서 더 빠르게 표면을 캡처하여 높은 품질의 고유 PBR 머티리얼을 만들 수 있습니다.

준비물

카메라와 삼각대, 광원, 크롬 볼, 어두운 촬영 환경, 그리고 ArtEngine이 필요합니다.

기술 개요

씬을 저조도 상태로 설정하고 촬영 장소에 크롬 볼을 배치한 후 고정된 카메라로 4~16장의 사진을 촬영합니다. 이때 조명의 위치를 매번 변경합니다. 컴퓨터에서 마스크를 추가하고 이미지를 ArtEngine으로 임포트한 다음 노드를 실행합니다. 공을 잘라내면 모든 작업이 마무리됩니다.

작동 원리

각 이미지에서 크롬 볼에 반사된 모습을 사용하여 조명의 방향을 추정합니다. ArtEngine은 모든 이미지를 분석하여 정확한 표면 특성을 지닌 노멀 맵과 알베도 맵을 생성할 수 있습니다.

ArtEngine의 새로운 기능

더 사실적인 텍스처를 제작하기 위해 실제 표면의 섬세하거나 거친 디테일을 포착하는 일은 상당히 어려운 과제이며, 실제로 이 작업에는 커스텀 장비가 필요합니다.

다양한 조명 조건에서 오브젝트를 관찰하면 표면 노멀을 추정할 수 있습니다. 이러한 기법을 Photometric Stereo 기술이라 합니다. ArtEngine의 Multi-angle to Texture 노드가 이 기술을 지원하지만, 커스텀 스캐닝 릭을 사용해야 하는 등 엄격한 조명 각도가 필요합니다.

하지만 이제는 크롬 볼을 통해 Photometric Stereo를 사용하여 더 빠르고 경제적이며 유연하게 전문적인 방법을 사용한 것과 유사한 결과물을 얻을 수 있습니다.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

직접 사용해보기

준비물을 보다 자세히 설명하면 다음과 같습니다.

  • 카메라: 원격 촬영 기능이나 타이머 기능 포함
  • 삼각대: 지면 촬영의 경우 브래킷/익스텐션도 필요
  • 광원: 밝은 휴대형 전등, 손전등 또는 플래시(렌즈 벤딩이 없는 LED)
  • 크롬 볼: 반사형 구체(광택이 있는 스테인리스강 또는 흑요석)
  • 소프트웨어: ArtEngine

 

크롬 볼 선택

광택이 있고 반사율이 높은 구체를 선택합니다. 다음과 같은 선택 사항이 있습니다.

  • 스테인리스강: 유광/크롬 표면의 단단한 베어링
  • 유리: 흑요석(반드시 완전한 흑색)
  • 스누커/당구공: 페놀 수지나 폴리에스테르(마찬가지로 반드시 완전한 흑색)
  • 권장 지름: 2~5cm
Black snooker balls
왼쪽, 폴리에스테르: 지름 5cm 크기의 검은색 스누커, 오른쪽, 유리: 지름 5cm 크기의 흑요석 구체. 대부분의 시나리오에서 두 공은 유사한 결과를 도출합니다.

스캔 방법

휴대형 조명을 사용해도 좋습니다. 조명 각도를 엄격하게 지정할 필요가 없습니다. 시계/반시계 방향 또는 양방향으로 원을 그리며 씬을 회전하면 됩니다.

Top view
위에서 본 모습: 가능한 조명의 위치를 원형으로 표시

세션 중에는 촬영자와 재배치되는 광원 외에 어떤 것도 움직이지 않아야 합니다.

매 촬영마다 광원을 표면 중앙으로 향하게 하며 거리를 일정하게 유지합니다.

삼각대의 그림자가 씬에 드리우지 않도록 주의합니다.

Side view
측면에서 본 권장 조명 각도

작업을 간소화하려면 스캔 중심에서 조명과 카메라를 대략 동일한 거리로 유지하세요.

원을 그리며 돌면서, 스캔 중심으로부터 조명의 수직각을 약 45°로 유지하거나 그림에 표시된 '안전 영역' 이내로 유지하세요.

셔터를 누를 때마다 조명이 흔들리지 않도록 하세요.

일반 가이드라인

조명

조명이 없는 상태에서 씬이 어두울수록 좋습니다. 야간의 야외 또는 어두운 방을 이용하세요. 노을이나 달빛 등 약간의 주변광이 있어도 되지만, 촬영자의 조명이 반드시 주 광원이 되어야 합니다. 

조명이 표면을 비추면서 구체에 뚜렷한 반사점을 만들어야만 분석할 수 있다는 점을 기억하세요. 렌즈 밴딩이 없는 밝은 LED 전등을 사용하는 것이 좋습니다. 렌즈를 풀고 LED를 노출시켜 굴절 없는 강력한 광원을 제공하는 전등도 있습니다.

카메라

설치된 카메라는 세션 내내 움직임 없이 고정된 상태를 유지해야 합니다. 셔터를 누르는 동작은 타이머 기능이나 리모컨으로 대신하세요.

노출

또 다른 베스트 프랙티스는 조명이 꺼졌을 때 검은색으로 반응하도록 카메라 노출을 설정하는 것입니다. 그런 다음 조명을 켜고 사진을 촬영합니다.

삼각대

다양한 방향에서 자유롭게 씬을 조명할 수 있으려면 삼각대나 유사한 도구로 카메라를 단단히 고정해야 합니다.

표면 영역 스캔

영역이 넓을수록 더 강한 조명이 필요합니다. 카메라 거리가 늘어날수록 더 큰 크롬 볼이 필요할 수 있습니다.

상대적 구체 크기

스캔에 보이는 구체의 이미지는 분석이 가능할 만큼 선명해야 합니다. 여기에는 카메라 거리, 이미지 해상도, 구체의 물리적 크기라는 세 가지 변수가 영향을 미칩니다. 구체 자체가 픽셀화되면 정확도가 낮아집니다. 대부분의 용도에는 지름 2~4cm 정도의 구체를 권장합니다. 매끄러운 표면에 와셔를 사용하여 고정한 후, 먼지나 얼룩을 닦아내고 구체를 배치합니다.

스캔 수

처리 가능한 최대 이미지는 16장입니다. 원하는 사실성 수준에 따라 적어도 4장 이상 촬영하는 것이 좋습니다. 한 바퀴 촬영 후 샷이 오버랩되어도 아무런 문제가 없습니다.  

ArtEngine에서 이미지 처리하기

스캔 후에 이미지가 준비되면 이제 마지막으로 ArtEngine에서 촬영한 이미지를 처리합니다.

분석을 수행하기 위해 알고리즘에 공의 위치를 표시하는 간단한 마스크 이미지가 필요합니다. 카메라와 구체 및 표면 자체는 움직이지 않으므로 입력 스캔을 임의로 골라 흰색 원이 있는 검은색 마스크를 만들어 구체의 크기와 위치를 나타낼 수 있습니다. 마스크는 회색 톤이 아닌 100% 흑백이어야 합니다.

이미지를 임포트하여 ArtEngine에서 마스크를 만듭니다. 그런 다음 Mask Paint 브러시 크기(지름)를 조정하여 공을 칠합니다. 이때 그림자는 무시합니다.

스캔 중심에 가깝게 구체를 배치하지 않으면 렌즈 왜곡으로 인해 타원형으로 보일 수 있습니다. 이러한 경우에는 구체를 중심 방향으로 약간 옮깁니다. 타원형을 지정하는 것보다 깔끔한 원형을 생성하는 것이 더 중요합니다. 작은 부분까지 완벽하게 칠하지 않아도 됩니다.

이제 스캔과 동일한 폴더로 마스크를 출력하고, 파일명을 'mask'라고 지정합니다. ArtEngine에서는 이를 자동으로 흑백 이미지로 저장합니다. 이제 이미지를 처리하여 PBR 머티리얼을 만들 수 있습니다.

이미지 임포트

개별 이미지가 입력 핀에 연결된 표준 Multi-Angle to Texture 노드와 달리 Chrome Ball 노드는 입력을 직접 지정하거나 노드 프로퍼티 패널을 통해 입력 폴더를 탐색할 수 있습니다.

프로퍼티 패널에서는 세 가지 설정 Mirror Shape, Shadow Strength, Normal Gradient Removal을 이용할 수 있습니다.

Proporties panel

Mirror Shape(드롭다운)

구체가 사용되었는지 또는 반구체가 사용되었는지 여부를 확인하며, 이에 따라 오브젝트의 대략적인 지름 또는 반지름을 알고리즘에 전달합니다. 따라서 Mirror Shape는 계산을 정확하게 유지합니다. 빛을 반사하는 반구체는 찾거나 만들기가 비교적 쉽지 않지만 그림자를 덜 드리웁니다.

Shadow Strength(슬라이더)

미러 볼 기법으로 알베도 이미지를 생성하면 이미 알려진 정보를 통해 계산이 정확한지 확인할 수 있으며, 해당 정보를 이용하여 알베도 이미지의 오류를 보완할 수 있습니다. 일반적으로 그림자와 광택은 상호보완적입니다. 그림자 강도를 높이면 그림자가 진해지고 광택이 제거되며, 그림자 강도를 낮추면 반대의 결과가 도출됩니다. 이 옵션은 노멀의 계산이나 알베도의 기본값에 영향을 주지 않으므로 이 값을 변경한 이후 재계산이 최적화되었습니다(범위 0~1).

Normal Gradient Removal(슬라이더)

노멀용 Gradient Removal을 최종 노멀 맵(범위 0~1)에 적용합니다. 그러면 노드가 두 가지 맵 또는 하나의 머티리얼로 출력됩니다.

Node with Material output (left) and with Bitmap output (right)
머티리얼 출력 노드(왼쪽)와 비트맵 출력 노드(오른쪽)

노드를 실행하면 입력 폴더에 있는 최초 16장의 이미지가 마스크와 함께 알파벳 순서로 처리됩니다. 이미지 수가 부족하거나 마스크 이미지가 없으면 노드가 오류를 유발하거나 결과를 생성하지 않습니다.

머티리얼이 생성되면 ArtEngine의 모든 기능을 사용할 수 있습니다. 처리가 완료된 크롬 볼을 머티리얼에서 제거한 후에 머티리얼을 타일링하거나, 배리에이션을 추가하고, 블렌드를 조정할 수 있습니다.

처리된 크롬 볼을 머티리얼에서 제거

처리된 크롬 볼을 제거하는 가장 간편한 방법은 잘라내는 것입니다(머티리얼을 정사각형으로 자르는 경우).

잘라내지 않고 직접 제거하려면 클론 스탬프를 사용하여 알베도 맵에서 먼저 제거하세요. 그런 다음 노드를 실행하면 노멀 맵에서 자동으로 제거됩니다.

또는 ArtEngine의 AI 지원 Mutation 또는 Seam Removal 노드를 활용하여 크롬 볼이 있던 영역을 새로운 이미지 데이터로 대체할 수 있습니다.

스캔 세트 및 마스크 예시

Chrome ball scan
스캔 세트 중 한 장(왼쪽)과 해당 세트의 마스크(오른쪽)

이미지가 정사각형일 필요는 없으나, 마스크를 포함한 모든 이미지의 크기는 동일해야 합니다.

Example of input folder with mask
11장의 스캔과 1장의 마스크가 포함된 입력 폴더 예시 마스크 파일명에는 반드시 'mask'라는 단어가 포함되어야 합니다.

이번 포스팅이 많은 도움이 되었기를 바라며, ArtEngine에서 크롬 볼과 Photometric Stereo를 통해 근사한 머티리얼을 제작해 보시기 바랍니다.

자세한 내용을 보려면 유니티 Discord 채널에서 커뮤니티 토론에 참여하거나 Q&A를 참조하세요. 이 기술을 개선할 수 있도록 사용자의 피드백을 기다립니다.

아직 ArtEngine이 없다면 여기에서 라이선스를 구매하세요.

2021년 12월 2일 엔진 & 플랫폼 | 12 분 소요

Is this article helpful for you?

Thank you for your feedback!

다루는 주제