3D 파일로
주로 쓰이는 stl과 obj 파일 포맷의 기본적인 geometry 정보(에니메이션, 텍스쳐, 포인트 색상정보 제외)를 알려드리겠습니다. 이 두 파일 뿐만 아니라 대부분의 3D 파일(volume이 아닌 surface drawing을 목적으로 하는 파일)은 점의 좌표와 면의 정보를 저장하고 있습니다. 두 파일이 점의 좌표와 면의 정보를 어떻게 저장하는지 간략히 보도록 하겠습니다.
우선 아래의 3D 데이터는 점 4개와 2개의 삼각형으로 이루어져 있습니다. 이 데이터를 stl 파일과 obj 파일의 저장 방식과 차이점을 보도록 하겠습니다.
stl 파일은 두가지 바이너리(Binary)와 아스키(ASCII)로 나누어 집니다. Binary는 컴퓨터 언어로 써져있어 우리들이 보기 힘들고, ASCII는 우리들이 이해할 수 있는 텍스트로 써져 있습니다. 그래서 여기서 사용하는 예시 파일은 ASCII로 사용합니다. 참고로 파일 용량은 일반적으로 같은 파일을 Binary와 ASCII로 저장했을 때 Binary가 더 적습니다.
위 3D 데이터를 stl 아스키로 저장하면 아래와 같이 저장됩니다.
내용을 보시면 한개의 face를 저장 할 때 face normal과 vertex 좌표를 쓰고 이 정보를 loop 형태로 저장합니다. 삼각형 nomal을 표시하고 삼각형의 점들의 좌표를 표시한 후, 다음 삼각형으로 넘어가서 같은 형태로 삼각형 normal 삼각형들의 좌표를 저장합니다. 간단한 형태라 볼 수 있습니다.
다음은 obj 저장 파일입니다.
보시면 obj는 vertex 좌표를 전부 한번에 표시하고 그다음에 face 정보를 저장합니다.
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는 삼각형 뿐만아니라 사각형, 오각형도 저장 할 수 있으니 참고하시기 바랍니다.
'3D Algorithm' 카테고리의 다른 글
라디안 각도 변환과 개념(Radian Degree) - 쉽게 그림으로 설명 (0) | 2023.10.26 |
---|---|
3차원 직선 계산 및 벡터 표현(개발자 관점) (0) | 2023.10.26 |
평면 방정식 의미(개발자 관점) (0) | 2023.10.20 |
3차원 점 직선 투영(Point Line Projection) 방법1 (0) | 2023.10.13 |
직선 평면 교차점(Line Plane Intersection) (0) | 2023.10.11 |