3D 모델 준비 및 최적화
이 문서는 EasyAR 요구 사항을 충족하는 3D 모델을 준비하는 방법을 자세히 설명하며, 형식 사양, 권장 tool, 일반적인 troubleshooting을 포함하여 developer가 tracking 성공률을 원천적으로 높일 수 있도록 돕습니다.
모델 형식 및 사양
EasyAR 3D object tracking은 Wavefront OBJ 형식만 지원합니다. 사용할 때는 다음 요구 사항과 사양을 따라야 합니다.
모델 파일 구조
완전한 3D 모델은 다음 파일을 반드시 포함해야 합니다.
- .obj 파일: vertex, face, UV 좌표 등을 포함하는 기하 모델 데이터.
- .mtl 파일: 색상 및 texture map 경로를 포함하는 material 정의.
- Texture maps: JPEG 또는 PNG 형식 이미지가 최소 한 장 필요합니다. 권장 해상도는 512×512에서 2048×2048입니다.
파일 요구 사항
- 모든 파일은 같은 폴더에 있어야 하며
texture.jpg와 같은 상대 경로로 참조해야 합니다.C:\Models\texture.jpg와 같은 절대 경로는 허용되지 않습니다. - 파일 이름 및 파일 내부 경로에는 공백이 포함되어서는 안 됩니다. 영문자 또는 숫자 사용을 권장합니다.
- 파일 인코딩은 UTF-8이어야 하며, 깨진 텍스트로 인한 로드 실패를 방지합니다.
OBJ(.obj) 파일 최소 요구 사항
vertex를 포함해야 합니다
기하 vertex는 \((x, y, z [, w])\) 좌표로 표현됩니다. $w$는 선택 사항이며 기본값은 1.0입니다. vertex 색상 매개변수는 필수가 아니며, 제공되더라도 시스템은 로드하지 않습니다.texture coordinates를 포함해야 합니다
Texture 좌표는 \((u, v [,w])\) 좌표로 표현됩니다. $w$는 선택 사항이며 기본값은 0입니다. 일반적으로 $u$와 \(v\) 값은 0에서 1 사이여야 합니다. 0보다 작거나 1보다 큰 값에 대해서는 시스템이 기본적으로REPEAT모드로 처리합니다. 즉 좌표의 정수 부분을 무시한 뒤,OpenGL의GL_REPEAT처리와 동일하게 무한 반복 패턴을 구성합니다.face를 포함해야 합니다
face 요소에는 최소한 vertex 인덱스와 texture 좌표 인덱스가 포함되어야 합니다. 사각형과 같이 3개를 초과하는 vertex를 가진 다각형 face 구조도 지원됩니다.mtllib를 포함해야 합니다
material 파일에 대한 참조입니다. 외부 MTL material 파일을 최소 하나 지정해야 하며, 파일 경로는 절대 경로가 아닌 상대 경로여야 합니다.usemtl을 포함해야 합니다
모델 요소가 참조하는 material은 material 이름을 지정해야 하며, 이 material 이름은 외부 MTL material 파일에 정의된 material 이름과 일치해야 합니다.
MTL(.mtl) 파일 최소 요구 사항
- MTL 파일 하나에는 최소 하나의 material이 정의되어야 합니다.
- Texture map은 필수입니다.
일반적으로 ambient 또는 diffuse texture map(map_Ka,map_Kd)만 지정하면 됩니다.
texture map 경로는 절대 경로가 아닌 상대 경로여야 합니다. - texture map의 기타 선택적 매개변수는 필수가 아니며, 제공되더라도 시스템은 사용하지 않습니다.
모델 준비
사양을 충족하는 OBJ 형식 모델 파일은 여러 방법으로 준비할 수 있습니다.
기존 모델에서 내보내기
Autodesk Maya / 3ds Max 같은 전문 tool을 사용하여 기존 FBX 또는 기타 형식의 모델을 가져오고, 내보낼 때 “OBJ Export”를 선택한 뒤 “Materials” 및 “UVs” 옵션이 활성화되어 있는지 확인합니다.새 모델 만들기
Autodesk Maya / 3ds Max 같은 modeling tool을 사용하여 3D 모델을 만들거나 그리고 OBJ 형식으로 출력합니다.실제 물체를 스캔하고 3D 재구성 수행
Autodesk ReCap, Bentley ContextCapture 같은 3D 스캔 modeling software 또는 laser scanner를 사용하여 실제 물체의 3D 재구성을 수행한 뒤 결과를 OBJ 형식으로 내보냅니다.
중요
모델 texture는 실제 물체의 시각적 특징을 정확하게 재현해야 합니다. 그렇지 않으면 recognition 및 tracking 기능이 정상적으로 작동하지 않습니다.
모델 best practice
다음은 모델을 준비할 때 자주 발생하는 문제와 예시입니다. 빠른 참고 및 점검에 활용하십시오.
풍부한 텍스처 세부 정보 확보
모델의 texture에는 풍부한 텍스처 세부 정보가 있어야 합니다.
참고 이미지 왼쪽: EasyAR가 감지하고 추적할 수 있습니다. 참고 이미지 오른쪽: 텍스처가 너무 적어 감지하거나 추적할 수 없습니다.
모델의 형태
모델은 다양한 형태를 지원하지만, 주 구조는 convex여야 합니다.
이 두 물체는 모두 EasyAR가 감지하고 추적할 수 있습니다.
파일 내 참조 path 확인
모델 파일 내에서 참조되는 path는 absolute paths가 아니라 relative paths여야 합니다.
오른쪽 모델은 EasyAR가 absolute path를 사용한 파일을 찾을 수 없기 때문에 로드할 수 없습니다.
모델 파일 내에서 참조되는 path에는 공백이나 특수 문자가 포함될 수 없습니다.
오른쪽 모델은 참조 path에 공백이 포함되어 있어 로드할 수 없습니다.
파일 encoding 형식 확인
모델 파일은 UTF-8 encoding 형식을 사용해야 합니다.
오른쪽 모델은 파일 encoding 문제로 읽기 중 decoding error가 발생하기 때문에 로드할 수 없습니다.
모델 normal 확인
모델 face의 normal vector의 양의 방향은 right-hand rule을 따라야 합니다.
두 번째 큐브에서 그림자 처리된 face의 normal vectors는 음수 방향입니다. 이러한 face는 EasyAR에서 invisible faces로 처리됩니다. 모델 내부에서 밖을 보면 세 번째 큐브처럼 표시됩니다.
모델은 normal이 음수 방향인 모든 face를 피해야 합니다.모델 face 수
모델 face 수는 객체의 기하 형태를 보장하는 전제에서 가능한 한 적어야 하며, 일반적으로 100,000개의 triangle faces를 초과해서는 안 됩니다. Face 수가 너무 많으면 다음 문제가 발생할 수 있습니다.- 모델 로딩 시간이 너무 길어져 애플리케이션 시작 시 user experience에 영향을 줌
- face texture projection 계산량이 증가하여 tracking 시 애플리케이션의 frame rate에 영향을 줌
3D 모델의 품질은 tracking 성공률을 직접 결정합니다. developer는 형식 사양을 엄격히 따르고, texture 세부 사항 최적화에 집중하며, 파일 형식에 오류가 없는지 확인해야 합니다.