[리서치] OpenCTM
OpenCTM 이란?
압축된 형태로 3D 삼각형 Mesh를 저장하기 위한 파일 형식.
OpenCTM형식의 파일을 읽고 쓸 수 있는 라이브러리 제공.
삼각형 Mesh 데이터 관리에만 관련되 있음. Scene 정의 형식이 아님.
Multiple Mesh, Transformation matrix, materials, light source, physical property을 처리X
- Lossless (무손실 압축)
- converting 프로그램(obj, ply, dae etc => ctm), dll 제공
- maya, blender plugin 제공
- js library - https://github.com/jcmellado/js-openctm
- A-Frame, Three.js에서의 사용 예제 존재(AFrame Component, Three.js Loader 존재)
- 최근 활동이 없는 오래된 오픈소스
- 테스트 스크린 샷 참고 : 원본 70MB의 OBJ 파일을 2MB 수준으로 손실없이 압축. Vertices와 Triangle수 일치
파일크기 축소와 로딩속도에 대한 좋은 해결책으로 보임. 하지만 CTM에 MTL을 이용하여 Material을 주는 부분에 대한 리서치/해결이 필요할 것으로 보임
=============================================================================
*Open, documented and future proof.
*Supports storage of per-vertex normals, UV coordinates and custom vertex attributes.
*Can store very large geometries (billions of triangles and vertices).
*Very compact storage of 3D triangle geometries, using efficient entropy-reduction techniques, combined with state of the art entropy coding (LZMA). An STL file can usually be compressed to 5-6% of its original size.
*Lossless compression with user controllable precision:
- -True lossless compression (IEEE 754 32-bit floating point) for situations where you need 1:1 representation of your data.
- -Fixed point representation with user controllable accuracy when you want excellent compression ratios.
참고 링크 : http://openctm.sourceforge.net/?page=about
OpenCTM(좌측), OBJ 원본파일(우측)의 비교
(vertex와 triangle은 동일하지만 파일크기는 거의 30배 이상 차이나는 것을 볼 수 있다.)