diff --git a/Readme.md b/Readme.md index 1f6c4118f..ca6c9ba4d 100644 --- a/Readme.md +++ b/Readme.md @@ -43,7 +43,7 @@ __Importers__: - AMJ - ASE - ASK -- B3D; +- B3D - BLEND (Blender) - BVH - COB diff --git a/doc/dox.h b/doc/dox.h index afd6e487a..3215016ab 100644 --- a/doc/dox.h +++ b/doc/dox.h @@ -561,17 +561,27 @@ The output UV coordinate system has its origin in the lower-left corner: @endcode Use the #aiProcess_FlipUVs flag to get UV coordinates with the upper-left corner als origin. -All matrices in the library are row-major. That means that the matrices are stored row by row in memory, -which is similar to the OpenGL matrix layout. A typical 4x4 matrix including a translational part looks like this: +A typical 4x4 matrix including a translational part looks like this: @code X1 Y1 Z1 T1 X2 Y2 Z2 T2 X3 Y3 Z3 T3 -0 0 0 1 + 0 0 0 1 @endcode -with (X1, X2, X3) being the X base vector, (Y1, Y2, Y3) being the Y base vector, (Z1, Z2, Z3) -being the Z base vector and (T1, T2, T3) being the translation part. If you want to use these matrices -in DirectX functions, you have to transpose them. +with (X1, X2, X3) being the local X base vector, (Y1, Y2, Y3) being the local +Y base vector, (Z1, Z2, Z3) being the local Z base vector and (T1, T2, T3) being the +offset of the local origin (the translational part). +All matrices in the library use row-major storage order. That means that the matrix elements are +stored row-by-row, i.e. they end up like this in memory: +[X1, Y1, Z1, T1, X2, Y2, Z2, T2, X3, Y3, Z3, T3, 0, 0, 0, 1]. + +Note that this is neither the OpenGL format nor the DirectX format, because both of them specify the +matrix layout such that the translational part occupies three consecutive addresses in memory (so those +matrices end with [..., T1, T2, T3, 1]), whereas the translation in an Assimp matrix is found at +the offsets 3, 7 and 11 (spread across the matrix). You can transpose an Assimp matrix to end up with +the format that OpenGL and DirectX mandate. To be very precise: The transposition has nothing +to do with a left-handed or right-handed coordinate system but 'converts' between row-major and +column-major storage format.
.*?)' # code
+ r'\};' # };
+ , re.IGNORECASE + re.DOTALL + re.MULTILINE)
+
+# Replace comments
+RErpcom = re.compile(r''
+ r'\s*(/\*+\s|\*+/|\B\*\s?|///?!?)' # /**
+ r'(?P.*?)' # * line
+ , re.IGNORECASE + re.DOTALL)
+
+# Remove trailing commas
+RErmtrailcom = re.compile(r',$', re.IGNORECASE + re.DOTALL)
+
+# Remove #ifdef __cplusplus
+RErmifdef = re.compile(r''
+ r'#ifndef SWIG' # #ifndef SWIG
+ r'(?P.*)' # code
+ r'#endif(\s*//\s*!?\s*SWIG)*' # #endif
+ , re.IGNORECASE + re.DOTALL)
+
+path = '../../../include/assimp'
+
+files = os.listdir (path)
+enumText = ''
+for fileName in files:
+ if fileName.endswith('.h'):
+ text = open(os.path.join(path, fileName)).read()
+ for enum in REenumTextureType.findall(text):
+ enumText = enum
+
+text = ''
+for line in enumText.split('\n'):
+ line = line.lstrip().rstrip()
+ line = RErmtrailcom.sub('', line)
+ text += RErpcom.sub('# \g', line) + '\n'
+text = RErmifdef.sub('', text)
+
+file = open('material.py', 'w')
+file.write(text)
+file.close()
+
+print("Generation done. You can now review the file 'material.py' and merge it.")
diff --git a/port/PyAssimp/pyassimp/material.py b/port/PyAssimp/pyassimp/material.py
index 97b143a62..a36e50a17 100644
--- a/port/PyAssimp/pyassimp/material.py
+++ b/port/PyAssimp/pyassimp/material.py
@@ -1,89 +1,89 @@
-##
Dummy value.
+# Dummy value.
#
-# No texture, but the value to be used as 'texture semantic'
-# (#aiMaterialProperty::mSemantic) for all material properties
-# *not* related to textures.
+# No texture, but the value to be used as 'texture semantic'
+# (#aiMaterialProperty::mSemantic) for all material properties
+# # not* related to textures.
#
aiTextureType_NONE = 0x0
-##
The texture is combined with the result of the diffuse
-# lighting equation.
+# The texture is combined with the result of the diffuse
+# lighting equation.
#
aiTextureType_DIFFUSE = 0x1
-##
The texture is combined with the result of the specular
-# lighting equation.
+# The texture is combined with the result of the specular
+# lighting equation.
#
aiTextureType_SPECULAR = 0x2
-##
The texture is combined with the result of the ambient
-# lighting equation.
+# The texture is combined with the result of the ambient
+# lighting equation.
#
aiTextureType_AMBIENT = 0x3
-##
The texture is added to the result of the lighting
-# calculation. It isn't influenced by incoming light.
+# The texture is added to the result of the lighting
+# calculation. It isn't influenced by incoming light.
#
aiTextureType_EMISSIVE = 0x4
-##
The texture is a height map.
+# The texture is a height map.
#
-# By convention, higher gray-scale values stand for
-# higher elevations from the base height.
+# By convention, higher gray-scale values stand for
+# higher elevations from the base height.
#
aiTextureType_HEIGHT = 0x5
-##
The texture is a (tangent space) normal-map.
+# The texture is a (tangent space) normal-map.
#
-# Again, there are several conventions for tangent-space
-# normal maps. Assimp does (intentionally) not
-# distinguish here.
+# Again, there are several conventions for tangent-space
+# normal maps. Assimp does (intentionally) not
+# distinguish here.
#
aiTextureType_NORMALS = 0x6
-##
The texture defines the glossiness of the material.
+# The texture defines the glossiness of the material.
#
-# The glossiness is in fact the exponent of the specular
-# (phong) lighting equation. Usually there is a conversion
-# function defined to map the linear color values in the
-# texture to a suitable exponent. Have fun.
+# The glossiness is in fact the exponent of the specular
+# (phong) lighting equation. Usually there is a conversion
+# function defined to map the linear color values in the
+# texture to a suitable exponent. Have fun.
#
aiTextureType_SHININESS = 0x7
-##
The texture defines per-pixel opacity.
+# The texture defines per-pixel opacity.
#
-# Usually 'white' means opaque and 'black' means
-# 'transparency'. Or quite the opposite. Have fun.
+# Usually 'white' means opaque and 'black' means
+# 'transparency'. Or quite the opposite. Have fun.
#
aiTextureType_OPACITY = 0x8
-##
Displacement texture
+# Displacement texture
#
-# The exact purpose and format is application-dependent.
-# Higher color values stand for higher vertex displacements.
+# The exact purpose and format is application-dependent.
+# Higher color values stand for higher vertex displacements.
#
aiTextureType_DISPLACEMENT = 0x9
-##
Lightmap texture (aka Ambient Occlusion)
+# Lightmap texture (aka Ambient Occlusion)
#
-# Both 'Lightmaps' and dedicated 'ambient occlusion maps' are
-# covered by this material property. The texture contains a
-# scaling value for the final color value of a pixel. Its
-# intensity is not affected by incoming light.
+# Both 'Lightmaps' and dedicated 'ambient occlusion maps' are
+# covered by this material property. The texture contains a
+# scaling value for the final color value of a pixel. Its
+# intensity is not affected by incoming light.
#
aiTextureType_LIGHTMAP = 0xA
-##
Reflection texture
+# Reflection texture
#
-#Contains the color of a perfect mirror reflection.
-#Rarely used, almost never for real-time applications.
+# Contains the color of a perfect mirror reflection.
+# Rarely used, almost never for real-time applications.
#
aiTextureType_REFLECTION = 0xB
-##
Unknown texture
+# Unknown texture
#
-# A texture reference that does not match any of the definitions
-# above is considered to be 'unknown'. It is still imported
-# but is excluded from any further postprocessing.
+# A texture reference that does not match any of the definitions
+# above is considered to be 'unknown'. It is still imported
+# but is excluded from any further postprocessing.
#
aiTextureType_UNKNOWN = 0xC