[ASSIMP]
1. Model loading library
- 가장 많이 쓰이는 model importing library는 Assimp이라고 불리고, 이는 Open Asset Import Library를 의미한다
- Assimp는 모델의 모든 데이터들을 Assimp의 일반화된 데이터 구조로 불러옴으로써 많은 종류의 model file format을 import할 수 있다
: Assimp가 모델을 로드하기만 하면 Assimp의 데이터 구조에서 필요한 모든 데이터를 얻을 수 있다
: Assimp의 데이터 구조는 import된 file format type과 관계없이 동일하게 유지되기 때문에 다른 모든 file format에서 추상화된다
- Assimp의 구조 모델을 시각화한 이미지이다
- Assimp를 통해 모델을 import할 때 전체적인 모델을 import된 모든 model/scene을 포함하고 있는 scene 객체에 불러온다
- 그 후 Assimp는 노드의 모음을 가지게 되는데 각 노드는 자신의 자식 mode들을 인덱싱할 index를 가지고 있다
- Scene/Model의 모든 data
: 모든 material, mesh들과 마찬가지로 scene 객체에 포함된다
: 이것은 scene의 루트 노드에 대한 참조를 가지고 있다
- Scene의 Root Node
: 다른 모든 노드들과 마찬가지로 자식 노드들을 포함할 수 있고 scene 객체의 mMeshes 배열 안의 데이터를 가리키는 index들의 모음을 가지고 있다
: Root Node의 mMeshes 배열은 실제 Mesh 객체들을 가지고 있고 일반 노드의 mMeshesM 배열에 들어있는 값은 오직 scene의 mesh 배열에 대한 index들만 가지고 있다
- Mesh object
: 렌더링하는 데에 필요한 모든 관련 데이터들을 포함한다 (object의 vertex 위치, 법선 벡터, 텍스처 좌표, 면, material 등)
- Mesh의 Face
: 여러 개의 면(face)을 가진다
: 면은 렌더링 기본 object인 삼각형, 사각형, 점을 나타낸다
: 면은 primitive를 형성하기 위한 vertex들의 index를 가지고 있다
: vertex들과 index들이 분리되어있기 때문에 indec 버퍼를 통해 렌더링하는 것을 쉽게 만들어준다
- Mesh의 Material
: object의 material 속성들을 얻기 위한 여러가지 함수들을 관리한다 (texture map, color 등)
- 따라서 우리는 먼저 scene 객체에 object를 불러와야한다
- 각 노드들의 해당 mesh 객체들을 재귀적으로 얻고, vertex 데이터와 index, material 속성들을 얻기 위해 각 mesh 객체를 처리한다
: 결과적으로 하나의 model 객체에 포함시킬 mesh data의 모음을 얻을 수 있다
+) Mesh란 하나의 모델을 이루는 각각의 서브모델/도형을 말하며, OpenGL에서는 object를 그리기위해 필요한 최소한의 것을 나타낸다
2. Building Assimp
- Open Asset Import Library download | SourceForge.net 에서 assimp를 다운 받고 라이브러리를 컴파일한다
'OpenGL Study' 카테고리의 다른 글
OpenGL "Model" (0) | 2023.01.25 |
---|---|
OpenGL "Mesh" (0) | 2023.01.24 |
OpenGL "Multiple Lights" (0) | 2023.01.24 |
OpenGL "Light Casters" (0) | 2023.01.20 |
OpenGL "Lighting Maps" (0) | 2023.01.12 |