2
0
Mark Sibly 8 жил өмнө
parent
commit
6c3af40d0e

+ 49 - 3
modules/assimp/assimp.monkey2

@@ -1,6 +1,8 @@
 
 Namespace assimp
 
+#Import "<libc>"
+
 #Import "makefile"
 
 #Import "assimp/include/*.h"
@@ -9,6 +11,13 @@ Namespace assimp
 #Import "<assimp/scene.h>"
 #Import "<assimp/postprocess.h>"
 
+Const AI_MATKEY_COLOR_DIFFUSE:="$clr.diffuse"
+Const AI_MATKEY_COLOR_AMBIENT:="$clr.ambient"
+Const AI_MATKEY_COLOR_SPECULAR:="$clr.specular"
+Const AI_MATKEY_COLOR_EMISSIVE:="$clr.emissive"
+Const AI_MATKEY_COLOR_TRANSPARENT:="$clr.transparent"
+Const AI_MATKEY_COLOR_REFLECTIVE:="$clr.reflective"
+
 Extern
 
 Const aiProcess_CalcTangentSpace:Uint
@@ -38,12 +47,38 @@ Const aiProcess_FlipWindingOrder:UInt
 Const aiProcess_SplitByBoneCount:UInt
 Const aiProcess_Debone:UInt
 
-Struct aiVector3D'="Assimp::aiVector3D"
-	
+Const aiTextureType_NONE:UInt
+Const aiTextureType_DIFFUSE:UInt
+Const aiTextureType_SPECULAR:UInt
+Const aiTextureType_AMBIENT:UInt
+Const aiTextureType_EMISSIVE:UInt
+Const aiTextureType_HEIGHT:UInt
+Const aiTextureType_NORMALS:UInt
+Const aiTextureType_SHININESS:UInt
+Const aiTextureType_OPACITY:UInt
+Const aiTextureType_DISPLACEMENT:UInt
+Const aiTextureType_LIGHTMAP:UInt
+Const aiTextureType_REFLECTION:UInt
+Const aiTextureType_UNKNOWN:UInt
+
+Struct aiVector3D
 	Field x:Float
 	Field y:Float
 	Field z:Float
-	
+End
+
+Struct aiString
+	Field data:CString
+End
+
+Struct aiColor4D
+	Field r:Float
+	Field g:Float
+	Field b:Float
+	Field a:Float
+End
+
+Class aiMaterial Extends Void
 End
 
 Class aiMesh Extends Void
@@ -52,6 +87,10 @@ Class aiMesh Extends Void
 	Field mNormals:aiVector3D Ptr
 	Field mTextureCoords:aiVector3D Ptr Ptr
 	
+	Field mName:aiString
+	
+	Field mMaterialIndex:UInt
+	
 	Field mNumVertices:UInt
 
 End
@@ -59,8 +98,10 @@ End
 Class aiScene Extends Void="const aiScene"
 	
 	Field mMeshes:aiMesh Ptr
+	Field mMaterials:aiMaterial Ptr
 	
 	Field mNumMeshes:UInt
+	Field mNumMaterials:UInt
 	
 End
 
@@ -69,4 +110,9 @@ Function aiImportFile:aiScene( pFile:CString,pFlags:UInt )
 Function aiImportFileFromMemory:aiScene( pBuffer:Void Ptr,pLength:UInt,pFlags:UInt,pHint:CString )
 
 Function aiReleaseImport( scene:aiScene )
+	
+Function aiGetMaterialTextureCount:UInt( pMat:aiMaterial,type:UInt )
+	
+Function aiGetMaterialTexture( mat:aiMaterial,type:UInt,index:UInt,path:aiString Ptr )
 
+Function aiGetMaterialColor( pMat:aiMaterial,pKey:CString,type:UInt,index:UInt,pOut:aiColor4D Ptr )

+ 3 - 3
modules/assimp/assimp/include/assimp/config.h

@@ -66,10 +66,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #define OPENDDLPARSER_BUILD
 
 //Can't get IFC importer to build...
-//#define ASSIMP_BUILD_NO_IFC_IMPORTER 1
+#define ASSIMP_BUILD_NO_IFC_IMPORTER 1
 
-//Can't get IFC importer to build...
-//#define ASSIMP_BUILD_NO_GLTF_IMPORTER 1
+//Can't get GLTF importer to build...
+#define ASSIMP_BUILD_NO_GLTF_IMPORTER 1
 
 
 // ###########################################################################

BIN
modules/assimp/tests/assets/turtle1.b3d


BIN
modules/assimp/tests/assets/turtle1.png


+ 30 - 4
modules/assimp/tests/test1.monkey2

@@ -10,16 +10,42 @@ Using assimp..
 Function Main()
 	
 '	Local flags:UInt=aiProcess_CalcTangentSpace | aiProcess_Triangulate | aiProcess_JoinIdenticalVertices | aiProcess_SortByPType
-	Local flags:UInt=aiProcess_CalcTangentSpace | aiProcess_Triangulate | aiProcess_JoinIdenticalVertices | aiProcess_SortByPType
+'	Local flags:UInt=aiProcess_CalcTangentSpace | aiProcess_Triangulate | aiProcess_JoinIdenticalVertices | aiProcess_SortByPType
+	Local flags:UInt=aiProcess_PreTransformVertices | aiProcess_Triangulate | aiProcess_JoinIdenticalVertices | aiProcess_SortByPType
 	
-	Local scene:=aiImportFile( AssetsDir()+"WusonBlitz.b3d",flags )
+	Local scene:=aiImportFile( AssetsDir()+"turtle1.b3d",flags )
 
 	If scene
-		Print "Success!"
+		Print "Loaded!"
+		
 		Print "NumMeshes="+scene.mNumMeshes
+		
+		Print "NumMaterials="+scene.mNumMaterials
+	
 		For Local i:=0 Until scene.mNumMeshes
+			
 			Local mesh:=scene.mMeshes[i]
-			Print "Mesh "+i+":mNumVertices="+mesh.mNumVertices
+			
+			Local matid:=mesh.mMaterialIndex
+			
+			Local mat:=scene.mMaterials[matid]
+			
+			Local n:=aiGetMaterialTextureCount( mat,aiTextureType_DIFFUSE )
+			
+			If n
+				Local color:aiColor4D
+				
+				Local path:aiString
+				
+				aiGetMaterialColor( mat,AI_MATKEY_COLOR_DIFFUSE,0,0,Varptr color )
+				Print "Mesh "+i+": Diffuse color="+color.r+","+color.g+","+color.b+","+color.a
+				
+				aiGetMaterialTexture( mat,aiTextureType_DIFFUSE,0,Varptr path )
+				Print "Mesh "+i+": Diffuse texture="+path.data
+				
+			Endif
+			
+			Print "Mesh "+i+": NumVertices="+mesh.mNumVertices
 		Next
 	Else
 		Print "Error!"