From dbff83e1cbd8b5047459677d034195f5796302c5 Mon Sep 17 00:00:00 2001 From: Javier Sancho Date: Wed, 28 May 2014 11:31:05 +0200 Subject: [PATCH] New type 'material' --- src/assimp.scm | 12 +++++++++++- src/test.c | 32 +++++++++++++++++++++++++------- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/assimp.scm b/src/assimp.scm index aac4475..b91e8ab 100644 --- a/src/assimp.scm +++ b/src/assimp.scm @@ -120,7 +120,7 @@ (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)) @@ -167,3 +167,13 @@ (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) diff --git a/src/test.c b/src/test.c index add9c2b..649c20f 100644 --- a/src/test.c +++ b/src/test.c @@ -7,18 +7,31 @@ #include #include -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) @@ -27,6 +40,11 @@ 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); -- 2.39.2