3D Video Production/Unreal Engine (5.6.1)

UE 5.6 RealityScan 공간 스캔: C4D 축 정렬과 표면 보정

보별 2026. 8. 24. 15:31
반응형

지난 포스트에서는 사진을 RealityScan에 가져와 직접 정렬하고, 생성한 모델을 Cinema 4D와 Unreal Engine으로 옮기는 전체 과정을 진행했다.

이번 포스트에서는 같은 순서를 다시 따라가며 작업 과정을 복습했다.
여기에 Cinema 4D의 Axis Center를 이용해 기울어진 스캔 모델의 축을 정렬하고, Brush의 Smooth 모드로 거친 표면을 보정하는 방법을 추가로 다뤘다.
마지막으로 Unreal Engine 5.6에서 머티리얼의 반사와 텍스처 설정을 점검하고, Two Sided를 적용해 얇은 벽의 뒷면과 누락된 그림자를 보완했다.

전체 작업 순서는 다음과 같다.

촬영 이미지 준비 → RealityScan 정렬·메시·텍스처 생성 → FBX 내보내기 → Cinema 4D 메시 정리·축 정렬·표면 보정 → Materialize 맵 생성 → Unreal Engine 임포트·머티리얼 조절

 

RealityScan용 사진 촬영 시 반사 확인하기

포토그래메트리는 여러 사진에서 반복해서 보이는 특징점을 이용해 카메라 위치와 입체 형태를 계산한다.
따라서 촬영 각도에 따라 위치가 달라지는 반사광이나 강한 하이라이트가 표면에 생기면, 동일한 특징점을 찾는 과정이 불안정해질 수 있다.

특히 피사체를 테이블 위에 놓고 촬영할 때는 테이블의 재질도 함께 확인해야 한다.
광택이 강한 상판에 조명이 직접 반사되면 사진마다 하이라이트의 위치가 달라지고, 그 영역이 잘못된 형태나 노이즈로 재구성될 가능성이 있다.

촬영 전에는 다음 항목을 확인한다.

  • 유리나 유광 플라스틱처럼 반사가 강한 상판을 피함
  • 가능하면 무광 천이나 종이 등으로 반사되는 영역을 가림
  • 직사광보다 부드럽고 일정하게 퍼지는 조명 사용
  • 노출과 화이트 밸런스를 촬영 도중 크게 바꾸지 않음
  • 한 지점에서 회전하기보다 피사체 주변을 이동하며 충분히 겹치도록 촬영

고가의 카메라를 사용하는 것보다 흔들림과 반사를 줄이고, 촬영 간격과 초점을 일정하게 유지하는 것이 정렬 품질에 더 직접적인 영향을 준다.

 

RealityScan에서 수동으로 모델 생성하기

촬영 이미지 가져오기

WORKFLOW 탭에서 Images 또는 Folder를 눌러 촬영한 이미지를 가져온다.
Images는 선택한 사진을 불러오고, Folder는 지정한 폴더 안의 사진을 한꺼번에 추가한다.

사진을 가져온 뒤에는 흔들리거나 초점이 맞지 않은 이미지가 없는지 먼저 확인한다.
품질이 낮은 이미지를 무조건 포함하는 것보다 정렬을 방해할 가능성이 있는 사진을 제외하는 편이 낫다.

Align Images와 Reconstruction Region 설정

ALIGNMENT - Align Images를 실행하면 사진 사이의 공통 특징점을 분석해 카메라의 위치와 방향을 계산하고, 희소 포인트 클라우드와 Component를 생성한다.

이번 정렬 화면에서는 전체 80장 가운데 77장이 하나의 Component에 정렬된 것을 확인할 수 있었다.

일부 사진이 정렬되지 않았더라도 필요한 공간이 충분히 생성되었다면 다음 단계로 진행할 수 있다.
다만 누락된 사진이 모델의 빈 영역과 연결되어 있다면 촬영 범위와 사진 겹침을 보완한 뒤 다시 정렬해야 한다.

정렬이 끝나면 흰색 박스로 표시되는 Reconstruction Region을 실제로 사용할 공간에 맞춘다.
주변 영역을 과도하게 포함하면 계산 시간과 불필요한 메시가 함께 늘어나므로 벽, 바닥 등 필요한 부분을 중심으로 영역을 제한한다.

메시와 텍스처 생성 후 FBX 내보내기

영역을 정리한 뒤 MESH & COLOR - Normal Detail로 메시를 계산하고, Texture를 실행해 원본 사진의 색을 모델 표면에 투영한다.

텍스처 작업까지 끝나면 Model & Point Cloud에서 FBX 형식으로 내보낸다.
알파 채널이 필요하지 않은 일반 컬러 텍스처라면
Texture Pixel Format을 24-bit BGR로 지정할 수 있다.
다만 24-bit가 모든 프로젝트의 필수 조건은 아니므로, 다른 프로그램에서 색이 다르게 보이면 알파 처리와 함께 sRGB·감마 설정도 확인해야 한다.

 

Cinema 4D에서 스캔 모델 정리하기

RealityScan에서 내보낸 FBX를 Cinema 4D로 가져오면 스캔 영역 전체가 하나의 고밀도 삼각형 메시로 구성되어 있다.
지난 작업과 동일하게 Polygon Reduction으로 폴리곤 수를 줄였다.

스캔 모델은 실제 촬영 당시의 카메라 방향을 기준으로 생성되기 때문에 Cinema 4D의 월드 축과 맞지 않고 기울어진 상태로 들어올 수 있다.
이 상태에서도 모델을 사용할 수는 있지만, 이후 Unreal Engine에서 배치하거나 다른 오브젝트와 조합할 때 이동·회전 방향을 파악하기 불편하다.

L 키로 오브젝트 축을 바닥에 옮기기

축 방향을 정리하기 전에 오브젝트의 회전 중심이 될 축의 위치부터 바닥에 맞췄다.

오브젝트를 선택하고 L을 누르면 Axis 모드가 활성화된다.
이 상태에서는 모델이 아니라 오브젝트 축만 이동할 수 있다.
Move 도구를 이용해 축을 모델의 바닥면 또는 지면과 맞닿을 위치로 옮긴다.
정면이나 측면 뷰에서 확인하면서 이동하면 축의 높이를 조금 더 정확하게 맞출 수 있다.

좌측: 오브젝트 중심에 축이 있는 상태 / 우측: Axis 모드에서 축을 바닥면으로 옮긴 상태

작업이 끝나면 L을 다시 눌러 Axis 모드를 해제한다.
Axis 모드가 켜진 상태에서는 모델을 이동하려 해도 축만 움직이므로 반드시 모드를 해제했는지 확인해야 한다.

축을 바닥에 배치해 두면 이후 모델의 회전값을 정리할 때 오브젝트 중심이 아닌 바닥을 기준으로 회전한다.
Unreal Engine으로 가져왔을 때도 모델을 지면에 배치하기 쉬워진다.

Axis Center로 평평한 면에 축 맞추기

먼저 Polygon 모드에서 바닥이나 벽처럼 실제로 평평한 부분의 폴리곤을 선택한다.
스캔 메시의 한 삼각형만 선택하면 촬영 노이즈의 영향을 받을 수 있으므로, 같은 방향을 바라보는 여러 폴리곤을 함께 선택하는 편이 안정적이다.

이후 다음 메뉴를 실행한다.

Tools - Axis - Axis Center

Axis Center 창에서는 Alignment를 활성화하고 다음과 같이 설정한다.

  • Axis: All
  • Alignment: Normals
  • Center: 비활성화

이번 작업에서는 L을 이용해 축의 위치를 이미 바닥에 맞췄으므로 Center는 비활성화한다.
Alignment만 활성화해 선택한 면의 노멀을 기준으로 축의 방향만 회전시킨다.

Execute를 누르면 선택한 폴리곤의 평균 노멀 방향을 기준으로 오브젝트 축이 회전한다.

축 방향을 면에 맞춘 뒤 Coordinates 탭에서 R.H, R.P, R.B를 각각 0°로 입력하면 로컬 축이 월드 축 방향과 일치하면서 모델이 바로 선다.
값 입력과 동시에 오브젝트가 크게 회전할 수 있으므로, 작업 전에 파일을 저장하고 정면과 측면에서 결과를 확인하는 것이 좋다.

마지막으로 사용하지 않을 천장·외부 영역·노이즈를 삭제한다.

Brush의 Smooth 모드로 거친 표면 보정하기

스캔 결과에 자잘한 굴곡이 생기는 원인은 일반 카메라 사용 자체라기보다 사진의 해상도, 흔들림, 초점, 표면 특징, 반사, 촬영 거리와 겹침 등 여러 조건이 복합적으로 작용한 결과에 가깝다.

Cinema 4D에서는 M~C를 눌러 Brush를 실행하고, Mode를 Smooth로 변경해 국소적인 요철을 완화할 수 있다.
Brush는 기존 포인트를 평균화해 표면을 부드럽게 만드는 방식이므로, 반지름과 Strength를 낮게 설정한 뒤 거친 부분만 여러 번 나누어 문지르는 편이 안전하다.

Smooth를 지나치게 적용하면 벽 모서리나 문틀처럼 유지해야 할 실루엣이 둥글게 변하고 메시가 수축할 수 있다.
따라서 형태를 새로 만드는 용도보다는 촬영 노이즈로 생긴 작은 돌기와 움푹 파인 부분을 정리하는 정도로 사용한다.

 

Materialize에서 보조 텍스처 맵 만들기

Cinema 4D에서 정리한 모델을 FBX로 다시 내보낸 뒤, RealityScan에서 생성한 Diffuse 텍스처를 Materialize에 불러온다.
원본이 8K처럼 지나치게 크다면 Materialize 작업 전에 필요한 해상도로 줄여두면 생성되는 보조 맵의 크기도 함께 관리할 수 있다.

Diffuse를 기준으로 Height를 만든 뒤 Normal과 Smoothness를 생성한다.

공간의 대부분이 콘크리트, 페인트, 타일 같은 비금속 재질이라면 Metallic은 기본적으로 0을 사용한다.
Materialize가 자동으로 만든 Metallic 맵은 실제 금속 여부를 측정한 데이터가 아니므로 그대로 연결하지 않고 재질의 종류를 기준으로 판단해야 한다.

Materialize의 Smoothness는 Unreal Engine의 Roughness와 반대되는 값이다.
따라서 Unreal에서는
Smoothness → OneMinus → Roughness 순서로 연결한다.

Unreal Engine 5.6으로 모델과 텍스처 가져오기

Cinema 4D에서 내보낸 FBX와 Materialize에서 만든 텍스처를 Content Browser로 가져온다.

머티리얼을 만들고 다음 원칙에 따라 텍스처를 연결한다.

입력 데이터 Unreal 연결 확인할 설정
Diffuse Base Color sRGB 활성화
Normal Normal Normalmap 압축, sRGB 비활성화
Smoothness OneMinus 후 Roughness sRGB 비활성화
Metallic Metallic 비금속 영역은 0, sRGB 비활성화

머티리얼을 저장한 뒤 Static Mesh를 열고 Material Slots의 Element 0에 생성한 머티리얼 또는 Material Instance를 지정한다.

Two Sided로 벽의 뒷면과 그림자 처리하기

RealityScan으로 생성한 벽은 실제 건축물처럼 두께가 있는 구조가 아니라, 한 겹의 얇은 폴리곤 면으로 만들어진 경우가 많다.
또한 폴리곤의 노멀도 대부분 한쪽 방향만 바라보고 있다.

Unreal Engine의 머티리얼은 기본적으로 앞면만 처리하는 단면 방식이다.
따라서 벽의 노멀 방향이 외부를 향하고 있으면 실내 쪽에서 보이는 면은 뒷면으로 판단될 수 있다.
이 경우 벽의 안쪽 면이나 바닥에 나타나야 할 음영과 그림자가 누락될 수 있다.

Two Sided를 활성화하기 전에는 벽의 안쪽과 바닥에 나타나야 할 그림자가 일부 누락되어 있다.

Material Editor의 Details 패널에서 Two Sided를 활성화하면 폴리곤의 앞면과 뒷면을 모두 처리한다.

이번 모델에서는 Two Sided를 활성화하자 벽의 뒷면도 렌더링과 조명 계산에 포함되었고, 그 결과 이전에 누락되었던 그림자가 나타났다.

단, Two Sided는 메시에 실제 두께를 추가하거나 잘못된 노멀을 수정하는 기능은 아니다.
양쪽 면을 모두 처리하기 때문에 렌더링 비용도 늘어날 수 있으므로, 두께가 없는 벽이나 천·나뭇잎처럼 양면 표현이 필요한 부분에 선택적으로 적용하는 것이 좋다.

지나치게 반짝이는 표면 조절하기

스캔 모델이 지나치게 매끄럽거나 젖은 플라스틱처럼 보인다면 먼저 Smoothness가 Roughness에 그대로 연결되지 않았는지 확인한다.
Roughness는 0에 가까울수록 매끄럽고, 1에 가까울수록 거칠게 표현된다.

이번 머티리얼에서는 Scalar Parameter와 Multiply를 사용해 Specular와 Roughness를 조절할 수 있도록 구성했다.

  • Specular: 값을 낮추면 비금속 표면의 반사 강도가 줄어듦; 일반적인 비금속에서는 기본값 0.5를 기준으로 시작하고, 필요할 때만 소폭 조절
  • Roughness: OneMinus로 변환한 Roughness 맵에 Scalar Parameter를 곱함; 기본값을 1로 두고 1보다 높은 값을 사용하면 전체 Roughness 증가
  • Normal Strength: FlattenNormal을 이용하면 Normal Map의 요철 강도를 Material Instance에서 조절 가능

거칠기를 표현하는 핵심 입력은 Roughness다.
표면이 반짝인다는 이유만으로 Specular를 먼저 0까지 낮추면 실제 비금속 재질보다 반사가 지나치게 사라질 수 있으므로 Roughness와 조명 환경부터 확인하는 편이 좋다.

 

전체 작업 순서 정리

  1. 반사가 강한 테이블과 직접광을 피하고 공간을 여러 각도에서 촬영
  2. RealityScan에 사진을 가져오고 Align Images 실행
  3. 정렬된 카메라와 Component 확인
  4. Reconstruction Region을 필요한 영역으로 제한
  5. Normal Detail 메시와 Texture 생성
  6. FBX와 텍스처 Export
  7. Cinema 4D에서 Polygon Reduction으로 폴리곤 수 줄이기
  8. L로 Axis 모드를 활성화하고 오브젝트 축을 바닥으로 이동
  9. 평평한 면을 기준으로 Axis Center를 설정하고 회전값 정리
  10. 불필요한 면을 삭제하고 필요한 영역만 Brush의 Smooth 모드로 보정
  11. FBX를 다시 Export하고 Materialize에서 보조 맵 생성
  12. Unreal Engine에 모델과 텍스처 Import 후 머티리얼 연결
  13. 얇은 벽의 뒷면과 그림자가 누락되면 Two Sided 활성화
  14. Smoothness를 Roughness로 반전하고 Metallic·Specular·Normal 설정 확인
  15. Material Instance에서 표면의 반사와 요철 강도 조절

 

지난 수업에서는 RealityScan부터 Unreal Engine까지 이어지는 전체 순서를 익혔다면, 이번 복습에서는 생성된 모델을 실제 공간 자산처럼 다루기 위해 필요한 보정 과정을 추가로 확인했다.

특히 스캔 모델의 축 위치와 방향을 순서대로 정리하면 이후 배치가 쉬워지고, Brush의 Smooth 모드를 이용하면 촬영 과정에서 생긴 작은 표면 노이즈를 줄일 수 있었다.
Unreal Engine에서는 Smoothness와 Roughness의 관계를 먼저 확인해 표면의 반사를 조절하고, 얇은 스캔 면에서 그림자가 누락될 때 Two Sided를 적용해 보완했다.