본문으로 건너뛰기

[BO App] Magic

note

내부 자료의 유출 방지를 위해 공개 가능한 범위에서의 자료만 공유합니다.

소개

3D 표준 파일 변환 작업을 하는 백오피스 앱입니다.

가구 제조사에서 받은 3D 모델은 만든 도구도, 저장한 포맷도 제각각입니다. 그걸 서비스가 쓸 수 있는 형태로 맞춰 주는 자리에 있는 앱입니다.

왜 변환이 필요했을까요?

3D 모델 파일 포맷은 사진의 JPG 처럼 하나로 수렴하지 않았습니다. 도구마다 자기 포맷이 있고, 플랫폼마다 선호하는 포맷이 다릅니다.

들어오는 쪽과 나가는 쪽을 보면 이렇습니다.

  • 들어오는 쪽: 제조사가 쓰던 도구가 뱉은 그대로. FBX 도 오고 OBJ 도 오고 DAE 도 옵니다.
  • 나가는 쪽: 웹은 GLTF 를 좋아하고, 안드로이드 AR 은 SFB 를 요구하고, 3D 프린팅 쪽은 STL 을 씁니다.

이걸 사람이 도구를 열어서 하나씩 저장하고 있으면 카탈로그가 늘어나는 속도를 따라갈 수 없습니다. 그래서 넣으면 알아서 여러 포맷으로 나오는 변환 서버를 만들었습니다.

지원 포맷

  • OBJ: Wavefront Technologies 에서 개발한 Advanced Visualizer 애니메이션 형상 정의 파일 형식
  • STL: 3D Systems 에서 개발한 CAD 소프트웨어의 기본 파일 형식. 3D 프린팅에 주로 사용
  • PLY: Standford Univ. 에서 개발한 3D 모델 파일 포맷. ASCII 형태와, Binary 형태가 있음.
  • DAE: Sony 에서 개발하고, Khronos Group에서 관리 중인 XML 기반 3D 모델 파일 포맷. COLLADA가 정식 명칭. Hieararchy 구조로 다중 Mesh 관리가 가능. ISO/PAS 17506:2012
  • FBX: AutoDesk 에서 개발한 독점 3D 모델 파일 포맷. Cinema4D, 3DSMax 자제품에서 사용. 3D 미디어 산업에서 널리 사용됨.
  • GLTF: Khronos Group 에서 개발. JSON 기반 3D 모델 파일 포맷. DAE Serialize 속도 및 전송 속도 이슈를 해결하기 위해 만들어짐. ISO/IEC 12113:2022

포맷을 고를 때 보는 기준

기준설명
담을 수 있는 정보형상만 담는지(STL), 재질과 계층 구조까지 담는지(DAE, FBX, GLTF)
사람이 읽히는지텍스트 기반(OBJ, DAE, GLTF)은 디버깅이 쉽고, 바이너리는 작고 빠릅니다
여는 속도XML 을 파싱하는 DAE 보다 JSON 기반 GLTF 쪽이 웹에서 유리합니다
개방성FBX 는 독점 포맷이라 도구 지원 여부를 먼저 확인해야 합니다

변환만으로는 끝나지 않습니다

포맷을 바꿔도 그대로 못 쓰는 경우가 많았습니다. 제조사가 준 모델은 대체로 광고 이미지를 뽑기 위한 모델이라 필요 이상으로 무겁습니다. 의자 하나가 수십만 개의 삼각형으로 되어 있고, 텍스처가 4K 로 여러 장 붙어 있습니다.

이 상태로 모바일에서 방 하나를 채우면 곧바로 메모리가 넘칩니다. 그래서 변환 과정에 최적화를 함께 넣었습니다.

  • 메시 최적화: 눈에 띄지 않는 범위에서 삼각형 수를 줄입니다. 멀리서 보이는 뒷면이나 안 보이는 내부 구조가 주 대상입니다.
  • 텍스처 최적화: 해상도를 용도에 맞게 낮추고, 여러 장으로 나뉜 재질 정보를 한 장에 채널별로 합쳐 불러오는 횟수를 줄입니다.

품질과 용량은 서로 밀어내는 관계라 정답이 없습니다. 결국 "카탈로그 썸네일에서 티가 나는가"를 기준으로 잡고 조정했던 기억이 있습니다.

담당 범위

  • 3D 파일 표준 포맷 자동 변환 서비스 개발
  • OBJ, DAE, FBX, GLTF, SFB(Android) 변환 로직 적용
  • 3D 모델링 Mesh, Texture 최적화
  • 개발환경: Dedicated Server, Python

개발 기간

  • First Commit Date: 2019. 02. 13
  • First Release Date: 2019. 02. 22
  • In Operation...

기여도

  • Main Contributor / Committer
  • 참여율: 약 80%

정리

3D 서비스에서 눈에 잘 안 띄지만 없으면 굴러가지 않는 자리가 이런 변환 파이프라인인 것 같습니다. 화려한 기능은 아니어도, 여기가 자동화되어 있느냐에 따라 카탈로그를 늘리는 속도가 완전히 달라집니다.