(flags (lambda (p) (bv-uint-ref p 0)))
(root-node (lambda (p) (wrap-node (make-pointer (bv-uint-ref p 4)))))
(meshes (get-pointer-of-pointers 8 12 wrap-mesh))
- (materials (get-pointer-of-pointers 16 20))
+ (materials (get-pointer-of-pointers 16 20 wrap-material))
(animations (get-pointer-of-pointers 24 28))
(textures (get-pointer-of-pointers 32 36))
(lights (get-pointer-of-pointers 40 44))
(export mesh?
mesh-contents)
+
+
+;;; Materials
+
+(define-type material
+ (properties (get-pointer-of-pointers 4 0))
+ (allocated (lambda (p) (bv-uint-ref p 8))))
+
+(export material?
+ material-contents)
#include <assimp/scene.h>
#include <assimp/postprocess.h>
-void print_node(const struct aiNode* node) {
+void print_materials(struct aiMaterial** materials, unsigned int num_materials)
+{
+ int i;
+
+ for (i = 0; i < num_materials; i++)
+ {
+ printf("Material: %d %d\n", materials[i]->mNumProperties, materials[i]->mNumAllocated);
+ }
+}
+
+void print_node(const struct aiNode* node)
+{
int i;
printf("%s: %d %d [", node->mName.data, node->mNumMeshes, node->mNumChildren);
- for (i = 0; i < node->mNumMeshes; i++) {
- printf("%d ", node->mMeshes[i]);
- }
+ for (i = 0; i < node->mNumMeshes; i++)
+ {
+ printf("%d ", node->mMeshes[i]);
+ }
printf("]\n");
- for (i = 0; i < node->mNumChildren; i++) {
- print_node(node->mChildren[i]);
- }
+ for (i = 0; i < node->mNumChildren; i++)
+ {
+ print_node(node->mChildren[i]);
+ }
}
int main(int argc, char **argv)
const struct aiNode* node = NULL;
scene = aiImportFile("/home/jsancho/Imágenes/fleurOptonl.blend", aiProcessPreset_TargetRealtime_MaxQuality);
+
+ // Materials
+ print_materials(scene->mMaterials, scene->mNumMaterials);
+ printf("\n");
+
node = scene->mRootNode;
printf("Node:\n parent: %d\n children: %d\n meshes: %d\n", node->mParent, node->mNumChildren, node->mNumMeshes);
printf(" transformation: %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f\n", node->mTransformation.a1, node->mTransformation.a2, node->mTransformation.a3, node->mTransformation.a4, node->mTransformation.b1, node->mTransformation.b2, node->mTransformation.b3, node->mTransformation.b4, node->mTransformation.c1, node->mTransformation.c2, node->mTransformation.c3, node->mTransformation.c4, node->mTransformation.d1, node->mTransformation.d2, node->mTransformation.d3, node->mTransformation.d4);