본문 바로가기
3D Algorithm

stl, obj 3D 파일 포멧 기본 정보(3D File Format)

by DarkRock 2023. 10. 23.
반응형

3D 파일로

주로 쓰이는 stl과 obj 파일 포맷의 기본적인 geometry 정보(에니메이션, 텍스쳐, 포인트 색상정보 제외)를 알려드리겠습니다. 이 두 파일 뿐만 아니라 대부분의 3D 파일(volume이 아닌 surface drawing을 목적으로 하는 파일)은 점의 좌표와 면의 정보를 저장하고 있습니다. 두 파일이 점의 좌표와 면의 정보를 어떻게 저장하는지 간략히 보도록 하겠습니다.

 

우선 아래의 3D 데이터는 점 4개와 2개의 삼각형으로 이루어져 있습니다. 이 데이터를 stl 파일과 obj 파일의 저장 방식과 차이점을 보도록 하겠습니다.

<3D 데이터(2개의 삼각형)>

 

stl 파일은 두가지 바이너리(Binary)와 아스키(ASCII)로 나누어 집니다. Binary는 컴퓨터 언어로 써져있어 우리들이 보기 힘들고, ASCII는 우리들이 이해할 수 있는 텍스트로 써져 있습니다. 그래서 여기서 사용하는 예시 파일은 ASCII로 사용합니다. 참고로 파일 용량은 일반적으로 같은 파일을 Binary와 ASCII로 저장했을 때 Binary가 더 적습니다.

위 3D 데이터를 stl 아스키로 저장하면 아래와 같이 저장됩니다.

<stl 파일>

내용을 보시면 한개의 face를 저장 할 때 face normal과 vertex 좌표를 쓰고 이 정보를 loop 형태로 저장합니다. 삼각형 nomal을 표시하고 삼각형의 점들의 좌표를 표시한 후, 다음 삼각형으로 넘어가서 같은 형태로 삼각형 normal 삼각형들의 좌표를 저장합니다. 간단한 형태라 볼 수 있습니다.

 

 

다음은 obj 저장 파일입니다.

보시면 obj는 vertex 좌표를 전부 한번에 표시하고 그다음에 face 정보를 저장합니다.

<obj 파일>

v는 vertex를 의미하고 f는 face를 의미합니다. 그리고 f 에 있는 수치는 vertex index를 의미합니다. vertex가 6개가 있으니 index는 1~6개 생성되고, 각 face를 이루는 vertex index를 저장합니다. vertex index와 좌표를 표시하면 아래같이 표현 할 수 있습니다.
1번 vertex: 10 10 0 
2번 vertex: 10 0 0
3번 vertex: 0 0 0
4번 vertex: 10 10 0
5번 vertex: 0 0 0
6번 vertex: 0 10 0

 

첫번째 face: 1, 2, 3번 vertex 이용

두번째 face: 4, 5, 6 번 vertex 이용

 

이러한 형태로 stl, obj 파일을 윈도우 메모장을 이용해서 파일을 열어 geometry 정보를 간략히 파악할 수 있습니다.

마지막으로 stl과 obj의 3D 모델에서 약간의 차이가 있는데, stl파일은 face 형태가 삼각형인 mesh만 저장 할 수 있고, obj는 삼각형 뿐만아니라 사각형, 오각형도 저장 할 수 있으니 참고하시기 바랍니다.

반응형