Browse Source

texture coordinates

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@149 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
sebastianhempel 17 years ago
parent
commit
d7bc843ae6
3 changed files with 36 additions and 7 deletions
  1. 26 2
      port/PyAssimp/pyassimp/pyassimp.py
  2. 3 3
      port/PyAssimp/pyassimp/structs.py
  3. 7 2
      port/PyAssimp/sample.py

+ 26 - 2
port/PyAssimp/pyassimp/pyassimp.py

@@ -156,8 +156,14 @@ class Mesh(AssimpBase):
         #vertex color sets
         self.colors = self._load_colors(mesh)
         
-        #number of texture coordinates
-        self.numuv = self._load_uv_component_count(mesh) #FIXME
+        #number of coordinates per uv-channel
+        self.uvsize = self._load_uv_component_count(mesh)
+        
+        #number of uv channels
+        self.texcoords = self._load_texture_coords(mesh)
+        
+        #the used material
+        self.material_index = mesh.mMaterialIndex
     
     
     def _load_uv_component_count(self, mesh):
@@ -172,6 +178,24 @@ class Mesh(AssimpBase):
                      for i in range(structs.MESH.AI_MAX_NUMBER_OF_TEXTURECOORDS))
     
     
+    def _load_texture_coords(self, mesh):
+        """
+        Loads texture coordinates.
+        
+        mesh - mesh-data
+        
+        result texture coordinates
+        """
+        result = []
+        
+        for i in range(structs.MESH.AI_MAX_NUMBER_OF_TEXTURECOORDS):
+            result.append(self._load_array(mesh.mTextureCoords[i],
+                                           mesh.mNumVertices,
+                                           lambda x: (x.x, x.y, x.z)))
+                
+        return result
+    
+    
     def _load_colors(self, mesh):
         """
         Loads color sets.

+ 3 - 3
port/PyAssimp/pyassimp/structs.py

@@ -224,7 +224,7 @@ class MESH(Structure):
             #Vertex texture coords, also known as UV channels.
             #A mesh may contain 0 to AI_MAX_NUMBER_OF_TEXTURECOORDS per
             #vertex. NULL if not present. The array is mNumVertices in size. 
-            ("mTextureCoords", POINTER(VECTOR3D)*AI_MAX_NUMBER_OF_TEXTURECOORDS),
+            ("mTextureCoords", POINTER(VECTOR3D)*AI_MAX_NUMBER_OF_TEXTURECOORDS),#OK
         
             #Specifies the number of components for a given UV channel.
             #Up to three channels are supported (UVW, for accessing volume
@@ -232,7 +232,7 @@ class MESH(Structure):
             #component p.z of mTextureCoords[n][p] is set to 0.0f.
             #If the value is 1 for a given channel, p.y is set to 0.0f, too.
             #@note 4D coords are not supported
-            ("mNumUVComponents", c_uint*AI_MAX_NUMBER_OF_TEXTURECOORDS),
+            ("mNumUVComponents", c_uint*AI_MAX_NUMBER_OF_TEXTURECOORDS),        #OK
         
             #The faces the mesh is contstructed from. 
             #Each face referres to a number of vertices by their indices. 
@@ -253,7 +253,7 @@ class MESH(Structure):
             #A mesh does use only a single material. If an imported model uses
             #multiple materials, the import splits up the mesh. Use this value 
             #as index into the scene's material list.
-            ("mMaterialIndex", c_uint)
+            ("mMaterialIndex", c_uint)                                          #OK
         ]
 
 

+ 7 - 2
port/PyAssimp/sample.py

@@ -11,7 +11,7 @@ import os
 #get a model out of assimp's test-data
 MODEL = os.path.join(os.path.dirname(__file__),
                      "..", "..",
-                     "test", "ASEFiles", "MotionCaptureROM.ase")
+                     "test", "3DSFiles", "test1.3ds")
 
 def main():
     scene = pyassimp.load(MODEL)
@@ -31,7 +31,12 @@ def main():
         print "    vertices:", len(mesh.vertices)
         print "    first:", mesh.vertices[:3]
         print "    colors:", len(mesh.colors)
-        print "    uv-counts:", mesh.numuv
+        tc = mesh.texcoords
+        print "    texture-coords 1:", len(tc[0]), "first:", tc[0][:3]
+        print "    texture-coords 2:", len(tc[1]), "first:", tc[1][:3]
+        print "    texture-coords 3:", len(tc[2]), "first:", tc[2][:3]
+        print "    texture-coords 4:", len(tc[3]), "first:", tc[3][:3]
+        print "    uv-counts:", mesh.uvsize
         print