]> git.jsancho.org Git - guile-assimp.git/commitdiff
New type 'material'
authorJavier Sancho <jsf@jsancho.org>
Wed, 28 May 2014 09:31:05 +0000 (11:31 +0200)
committerJavier Sancho <jsf@jsancho.org>
Wed, 28 May 2014 09:31:05 +0000 (11:31 +0200)
src/assimp.scm
src/test.c

index aac4475da1f91714274477e79d3fbd559a6760fe..b91e8ab2e4ff5f30cae95eb11ac30cb05fb3d582 100644 (file)
   (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)
index add9c2b7fee11a86936f1bace253cb3bd1438267..649c20f3e38b3e1591def79a6ff8152ce50c6dd6 100644 (file)
@@ -7,18 +7,31 @@
 #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)
@@ -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);