Merge branch 'master' into master
commit
79aeb65ab4
1
Build.md
1
Build.md
|
@ -77,6 +77,7 @@ The cmake-build-environment provides options to configure the build. The followi
|
|||
- **ASSIMP_BUILD_SAMPLES ( default OFF )**: If the official samples are built as well (needs Glut).
|
||||
- **ASSIMP_BUILD_TESTS ( default ON )**: If the test suite for Assimp is built in addition to the library.
|
||||
- **ASSIMP_COVERALLS ( default OFF )**: Enable this to measure test coverage.
|
||||
- **ASSIMP_ERROR_MAX( default OFF)**: Enable all warnings.
|
||||
- **ASSIMP_WERROR( default OFF )**: Treat warnings as errors.
|
||||
- **ASSIMP_ASAN ( default OFF )**: Enable AddressSanitizer.
|
||||
- **ASSIMP_UBSAN ( default OFF )**: Enable Undefined Behavior sanitizer.
|
||||
|
|
|
@ -100,6 +100,10 @@ OPTION ( ASSIMP_COVERALLS
|
|||
"Enable this to measure test coverage."
|
||||
OFF
|
||||
)
|
||||
OPTION ( ASSIMP_ERROR_MAX
|
||||
"Enable all warnings."
|
||||
OFF
|
||||
)
|
||||
OPTION ( ASSIMP_WERROR
|
||||
"Treat warnings as errors."
|
||||
OFF
|
||||
|
@ -253,7 +257,7 @@ ELSEIF(MSVC)
|
|||
IF(MSVC12)
|
||||
ADD_COMPILE_OPTIONS(/wd4351)
|
||||
ENDIF()
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /MDd /Zi /Od")
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D_DEBUG /Zi /Od")
|
||||
ELSEIF ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
|
||||
IF(NOT HUNTER_ENABLED)
|
||||
SET(CMAKE_CXX_FLAGS "-fPIC -std=c++11 ${CMAKE_CXX_FLAGS}")
|
||||
|
@ -294,6 +298,16 @@ IF (ASSIMP_COVERALLS)
|
|||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
|
||||
ENDIF()
|
||||
|
||||
IF (ASSIMP_ERROR_MAX)
|
||||
MESSAGE(STATUS "Turning on all warnings")
|
||||
IF (MSVC)
|
||||
ADD_COMPILE_OPTIONS(/W4) # NB: there is a /Wall option, pedantic mode
|
||||
ELSE()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF (ASSIMP_WERROR)
|
||||
MESSAGE(STATUS "Treating warnings as errors")
|
||||
IF (MSVC)
|
||||
|
|
|
@ -103,7 +103,7 @@ void ExportSceneFBX(const char*, IOSystem*, const aiScene*, const ExportProperti
|
|||
void ExportSceneFBXA(const char*, IOSystem*, const aiScene*, const ExportProperties*);
|
||||
void ExportScene3MF( const char*, IOSystem*, const aiScene*, const ExportProperties* );
|
||||
void ExportSceneM3D(const char*, IOSystem*, const aiScene*, const ExportProperties*);
|
||||
void ExportSceneA3D(const char*, IOSystem*, const aiScene*, const ExportProperties*);
|
||||
void ExportSceneM3DA(const char*, IOSystem*, const aiScene*, const ExportProperties*);
|
||||
void ExportAssimp2Json(const char* , IOSystem*, const aiScene* , const Assimp::ExportProperties*);
|
||||
|
||||
|
||||
|
@ -177,7 +177,7 @@ static void setupExporterArray(std::vector<Exporter::ExportFormatEntry> &exporte
|
|||
|
||||
#ifndef ASSIMP_BUILD_NO_M3D_EXPORTER
|
||||
exporters.push_back(Exporter::ExportFormatEntry("m3d", "Model 3D (binary)", "m3d", &ExportSceneM3D, 0));
|
||||
exporters.push_back(Exporter::ExportFormatEntry("a3d", "Model 3D (ascii)", "m3d", &ExportSceneA3D, 0));
|
||||
exporters.push_back(Exporter::ExportFormatEntry("m3da", "Model 3D (ascii)", "a3d", &ExportSceneM3DA, 0));
|
||||
#endif
|
||||
|
||||
#ifndef ASSIMP_BUILD_NO_3MF_EXPORTER
|
||||
|
|
|
@ -289,7 +289,7 @@ void ExportSceneM3D(
|
|||
// ---------------------------------------------------------------------
|
||||
// Worker function for exporting a scene to ASCII A3D.
|
||||
// Prototyped and registered in Exporter.cpp
|
||||
void ExportSceneA3D(
|
||||
void ExportSceneM3DA(
|
||||
const char *pFile,
|
||||
IOSystem *pIOSystem,
|
||||
const aiScene *pScene,
|
||||
|
|
|
@ -749,7 +749,7 @@ namespace glTF
|
|||
/// \fn void Read(Value& pJSON_Object, Asset& pAsset_Root)
|
||||
/// Get mesh data from JSON-object and place them to root asset.
|
||||
/// \param [in] pJSON_Object - reference to pJSON-object from which data are read.
|
||||
/// \param [out] pAsset_Root - reference to root assed where data will be stored.
|
||||
/// \param [out] pAsset_Root - reference to root asset where data will be stored.
|
||||
void Read(Value& pJSON_Object, Asset& pAsset_Root);
|
||||
|
||||
#ifdef ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC
|
||||
|
|
|
@ -783,7 +783,7 @@ namespace glTF2
|
|||
/// \fn void Read(Value& pJSON_Object, Asset& pAsset_Root)
|
||||
/// Get mesh data from JSON-object and place them to root asset.
|
||||
/// \param [in] pJSON_Object - reference to pJSON-object from which data are read.
|
||||
/// \param [out] pAsset_Root - reference to root assed where data will be stored.
|
||||
/// \param [out] pAsset_Root - reference to root asset where data will be stored.
|
||||
void Read(Value& pJSON_Object, Asset& pAsset_Root);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#-*- coding: UTF-8 -*-
|
||||
#-*- coding: utf-8 -*-
|
||||
|
||||
from ctypes import POINTER, c_void_p, c_uint, c_char, c_float, Structure, c_char_p, c_double, c_ubyte, c_size_t, c_uint32
|
||||
|
||||
|
@ -6,7 +6,7 @@ from ctypes import POINTER, c_void_p, c_uint, c_char, c_float, Structure, c_char
|
|||
class Vector2D(Structure):
|
||||
"""
|
||||
See 'vector2.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
_fields_ = [
|
||||
|
@ -16,7 +16,7 @@ class Vector2D(Structure):
|
|||
class Matrix3x3(Structure):
|
||||
"""
|
||||
See 'matrix3x3.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
_fields_ = [
|
||||
|
@ -28,7 +28,7 @@ class Matrix3x3(Structure):
|
|||
class Texel(Structure):
|
||||
"""
|
||||
See 'texture.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
("b", c_ubyte),("g", c_ubyte),("r", c_ubyte),("a", c_ubyte),
|
||||
|
@ -37,7 +37,7 @@ class Texel(Structure):
|
|||
class Color4D(Structure):
|
||||
"""
|
||||
See 'color4.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
_fields_ = [
|
||||
|
@ -48,7 +48,7 @@ class Color4D(Structure):
|
|||
class Plane(Structure):
|
||||
"""
|
||||
See 'types.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# Plane equation
|
||||
|
@ -58,7 +58,7 @@ class Plane(Structure):
|
|||
class Color3D(Structure):
|
||||
"""
|
||||
See 'types.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# Red, green and blue color values
|
||||
|
@ -68,7 +68,7 @@ class Color3D(Structure):
|
|||
class String(Structure):
|
||||
"""
|
||||
See 'types.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
MAXLEN = 1024
|
||||
|
||||
|
@ -76,8 +76,8 @@ class String(Structure):
|
|||
# Binary length of the string excluding the terminal 0. This is NOT the
|
||||
# logical length of strings containing UTF-8 multibyte sequences! It's
|
||||
# the number of bytes from the beginning of the string to its end.
|
||||
("length", c_size_t),
|
||||
|
||||
("length", c_uint32),
|
||||
|
||||
# String buffer. Size limit is MAXLEN
|
||||
("data", c_char*MAXLEN),
|
||||
]
|
||||
|
@ -85,7 +85,7 @@ class String(Structure):
|
|||
class MaterialPropertyString(Structure):
|
||||
"""
|
||||
See 'MaterialSystem.cpp' for details.
|
||||
|
||||
|
||||
The size of length is truncated to 4 bytes on 64-bit platforms when used as a
|
||||
material property (see MaterialSystem.cpp aiMaterial::AddProperty() for details).
|
||||
"""
|
||||
|
@ -97,7 +97,7 @@ class MaterialPropertyString(Structure):
|
|||
# logical length of strings containing UTF-8 multibyte sequences! It's
|
||||
# the number of bytes from the beginning of the string to its end.
|
||||
("length", c_uint32),
|
||||
|
||||
|
||||
# String buffer. Size limit is MAXLEN
|
||||
("data", c_char*MAXLEN),
|
||||
]
|
||||
|
@ -105,30 +105,30 @@ class MaterialPropertyString(Structure):
|
|||
class MemoryInfo(Structure):
|
||||
"""
|
||||
See 'types.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# Storage allocated for texture data
|
||||
("textures", c_uint),
|
||||
|
||||
|
||||
# Storage allocated for material data
|
||||
("materials", c_uint),
|
||||
|
||||
|
||||
# Storage allocated for mesh data
|
||||
("meshes", c_uint),
|
||||
|
||||
|
||||
# Storage allocated for node data
|
||||
("nodes", c_uint),
|
||||
|
||||
|
||||
# Storage allocated for animation data
|
||||
("animations", c_uint),
|
||||
|
||||
|
||||
# Storage allocated for camera data
|
||||
("cameras", c_uint),
|
||||
|
||||
|
||||
# Storage allocated for light data
|
||||
("lights", c_uint),
|
||||
|
||||
|
||||
# Total storage allocated for the full import.
|
||||
("total", c_uint),
|
||||
]
|
||||
|
@ -136,7 +136,7 @@ class MemoryInfo(Structure):
|
|||
class Quaternion(Structure):
|
||||
"""
|
||||
See 'quaternion.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
_fields_ = [
|
||||
|
@ -147,14 +147,14 @@ class Quaternion(Structure):
|
|||
class Face(Structure):
|
||||
"""
|
||||
See 'mesh.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# Number of indices defining this face.
|
||||
# The maximum value for this member is
|
||||
#AI_MAX_FACE_INDICES.
|
||||
("mNumIndices", c_uint),
|
||||
|
||||
|
||||
# Pointer to the indices array. Size of the array is given in numIndices.
|
||||
("mIndices", POINTER(c_uint)),
|
||||
]
|
||||
|
@ -162,12 +162,12 @@ class Face(Structure):
|
|||
class VertexWeight(Structure):
|
||||
"""
|
||||
See 'mesh.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# Index of the vertex which is influenced by the bone.
|
||||
("mVertexId", c_uint),
|
||||
|
||||
|
||||
# The strength of the influence in the range (0...1).
|
||||
# The influence from all bones at one vertex amounts to 1.
|
||||
("mWeight", c_float),
|
||||
|
@ -176,7 +176,7 @@ class VertexWeight(Structure):
|
|||
class Matrix4x4(Structure):
|
||||
"""
|
||||
See 'matrix4x4.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
_fields_ = [
|
||||
|
@ -189,7 +189,7 @@ class Matrix4x4(Structure):
|
|||
class Vector3D(Structure):
|
||||
"""
|
||||
See 'vector3.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
_fields_ = [
|
||||
|
@ -199,12 +199,12 @@ class Vector3D(Structure):
|
|||
class MeshKey(Structure):
|
||||
"""
|
||||
See 'anim.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# The time of this key
|
||||
("mTime", c_double),
|
||||
|
||||
|
||||
# Index into the aiMesh::mAnimMeshes array of the
|
||||
# mesh corresponding to the
|
||||
#aiMeshAnim hosting this
|
||||
|
@ -252,7 +252,7 @@ class Metadata(Structure):
|
|||
class Node(Structure):
|
||||
"""
|
||||
See 'scene.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
Node._fields_ = [
|
||||
|
@ -270,22 +270,22 @@ Node._fields_ = [
|
|||
# this text. You should be able to handle stuff like whitespace, tabs,
|
||||
# linefeeds, quotation marks, ampersands, ... .
|
||||
("mName", String),
|
||||
|
||||
|
||||
# The transformation relative to the node's parent.
|
||||
("mTransformation", Matrix4x4),
|
||||
|
||||
|
||||
# Parent node. NULL if this node is the root node.
|
||||
("mParent", POINTER(Node)),
|
||||
|
||||
|
||||
# The number of child nodes of this node.
|
||||
("mNumChildren", c_uint),
|
||||
|
||||
|
||||
# The child nodes of this node. NULL if mNumChildren is 0.
|
||||
("mChildren", POINTER(POINTER(Node))),
|
||||
|
||||
|
||||
# The number of meshes of this node.
|
||||
("mNumMeshes", c_uint),
|
||||
|
||||
|
||||
# The meshes of this node. Each entry is an index into the mesh
|
||||
("mMeshes", POINTER(c_uint)),
|
||||
|
||||
|
@ -297,7 +297,7 @@ Node._fields_ = [
|
|||
class Light(Structure):
|
||||
"""
|
||||
See 'light.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
_fields_ = [
|
||||
|
@ -306,22 +306,22 @@ class Light(Structure):
|
|||
# This node specifies the position of the light in the scene
|
||||
# hierarchy and can be animated.
|
||||
("mName", String),
|
||||
|
||||
|
||||
# The type of the light source.
|
||||
# aiLightSource_UNDEFINED is not a valid value for this member.
|
||||
("mType", c_uint),
|
||||
|
||||
|
||||
# Position of the light source in space. Relative to the
|
||||
# transformation of the node corresponding to the light.
|
||||
# The position is undefined for directional lights.
|
||||
("mPosition", Vector3D),
|
||||
|
||||
|
||||
# Direction of the light source in space. Relative to the
|
||||
# transformation of the node corresponding to the light.
|
||||
# The direction is undefined for point lights. The vector
|
||||
# may be normalized, but it needn't.
|
||||
("mDirection", Vector3D),
|
||||
|
||||
|
||||
# Up direction of the light source in space. Relative to the
|
||||
# transformation of the node corresponding to the light.
|
||||
#
|
||||
|
@ -340,7 +340,7 @@ class Light(Structure):
|
|||
# This member corresponds to the att0 variable in the equation.
|
||||
# Naturally undefined for directional lights.
|
||||
("mAttenuationConstant", c_float),
|
||||
|
||||
|
||||
# Linear light attenuation factor.
|
||||
# The intensity of the light source at a given distance 'd' from
|
||||
# the light's position is
|
||||
|
@ -352,7 +352,7 @@ class Light(Structure):
|
|||
# This member corresponds to the att1 variable in the equation.
|
||||
# Naturally undefined for directional lights.
|
||||
("mAttenuationLinear", c_float),
|
||||
|
||||
|
||||
# Quadratic light attenuation factor.
|
||||
# The intensity of the light source at a given distance 'd' from
|
||||
# the light's position is
|
||||
|
@ -364,19 +364,19 @@ class Light(Structure):
|
|||
# This member corresponds to the att2 variable in the equation.
|
||||
# Naturally undefined for directional lights.
|
||||
("mAttenuationQuadratic", c_float),
|
||||
|
||||
|
||||
# Diffuse color of the light source
|
||||
# The diffuse light color is multiplied with the diffuse
|
||||
# material color to obtain the final color that contributes
|
||||
# to the diffuse shading term.
|
||||
("mColorDiffuse", Color3D),
|
||||
|
||||
|
||||
# Specular color of the light source
|
||||
# The specular light color is multiplied with the specular
|
||||
# material color to obtain the final color that contributes
|
||||
# to the specular shading term.
|
||||
("mColorSpecular", Color3D),
|
||||
|
||||
|
||||
# Ambient color of the light source
|
||||
# The ambient light color is multiplied with the ambient
|
||||
# material color to obtain the final color that contributes
|
||||
|
@ -384,13 +384,13 @@ class Light(Structure):
|
|||
# this value it, is just a remaining of the fixed-function pipeline
|
||||
# that is still supported by quite many file formats.
|
||||
("mColorAmbient", Color3D),
|
||||
|
||||
|
||||
# Inner angle of a spot light's light cone.
|
||||
# The spot light has maximum influence on objects inside this
|
||||
# angle. The angle is given in radians. It is 2PI for point
|
||||
# lights and undefined for directional lights.
|
||||
("mAngleInnerCone", c_float),
|
||||
|
||||
|
||||
# Outer angle of a spot light's light cone.
|
||||
# The spot light does not affect objects outside this angle.
|
||||
# The angle is given in radians. It is 2PI for point lights and
|
||||
|
@ -408,7 +408,7 @@ class Light(Structure):
|
|||
class Texture(Structure):
|
||||
"""
|
||||
See 'texture.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
_fields_ = [
|
||||
|
@ -417,15 +417,15 @@ class Texture(Structure):
|
|||
# like JPEG. In this case mWidth specifies the size of the
|
||||
# memory area pcData is pointing to, in bytes.
|
||||
("mWidth", c_uint),
|
||||
|
||||
|
||||
# Height of the texture, in pixels
|
||||
# If this value is zero, pcData points to an compressed texture
|
||||
# in any format (e.g. JPEG).
|
||||
("mHeight", c_uint),
|
||||
|
||||
|
||||
# A hint from the loader to make it easier for applications
|
||||
# to determine the type of embedded textures.
|
||||
#
|
||||
#
|
||||
# If mHeight != 0 this member is show how data is packed. Hint will consist of
|
||||
# two parts: channel order and channel bitness (count of the bits for every
|
||||
# color channel). For simple parsing by the viewer it's better to not omit
|
||||
|
@ -443,7 +443,7 @@ class Texture(Structure):
|
|||
# E.g. 'dds\\0', 'pcx\\0', 'jpg\\0'. All characters are lower-case.
|
||||
# The fourth character will always be '\\0'.
|
||||
("achFormatHint", c_char*9),
|
||||
|
||||
|
||||
# Data of the texture.
|
||||
# Points to an array of mWidth
|
||||
# mHeight aiTexel's.
|
||||
|
@ -462,7 +462,7 @@ class Texture(Structure):
|
|||
class Ray(Structure):
|
||||
"""
|
||||
See 'types.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# Position and direction of the ray
|
||||
|
@ -472,17 +472,17 @@ class Ray(Structure):
|
|||
class UVTransform(Structure):
|
||||
"""
|
||||
See 'material.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# Translation on the u and v axes.
|
||||
# The default value is (0|0).
|
||||
("mTranslation", Vector2D),
|
||||
|
||||
|
||||
# Scaling on the u and v axes.
|
||||
# The default value is (1|1).
|
||||
("mScaling", Vector2D),
|
||||
|
||||
|
||||
# Rotation - in counter-clockwise direction.
|
||||
# The rotation angle is specified in radians. The
|
||||
# rotation center is 0.5f|0.5f. The default value
|
||||
|
@ -493,34 +493,34 @@ class UVTransform(Structure):
|
|||
class MaterialProperty(Structure):
|
||||
"""
|
||||
See 'material.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# Specifies the name of the property (key)
|
||||
# Keys are generally case insensitive.
|
||||
("mKey", String),
|
||||
|
||||
|
||||
# Textures: Specifies their exact usage semantic.
|
||||
# For non-texture properties, this member is always 0
|
||||
# (or, better-said,
|
||||
#aiTextureType_NONE).
|
||||
("mSemantic", c_uint),
|
||||
|
||||
|
||||
# Textures: Specifies the index of the texture.
|
||||
# For non-texture properties, this member is always 0.
|
||||
("mIndex", c_uint),
|
||||
|
||||
|
||||
# Size of the buffer mData is pointing to, in bytes.
|
||||
# This value may not be 0.
|
||||
("mDataLength", c_uint),
|
||||
|
||||
|
||||
# Type information for the property.
|
||||
# Defines the data layout inside the data buffer. This is used
|
||||
# by the library internally to perform debug checks and to
|
||||
# utilize proper type conversions.
|
||||
# (It's probably a hacky solution, but it works.)
|
||||
("mType", c_uint),
|
||||
|
||||
|
||||
# Binary buffer to hold the property's value.
|
||||
# The size of the buffer is always mDataLength.
|
||||
("mData", POINTER(c_char)),
|
||||
|
@ -529,15 +529,15 @@ class MaterialProperty(Structure):
|
|||
class Material(Structure):
|
||||
"""
|
||||
See 'material.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# List of all material properties loaded.
|
||||
("mProperties", POINTER(POINTER(MaterialProperty))),
|
||||
|
||||
|
||||
# Number of properties in the data base
|
||||
("mNumProperties", c_uint),
|
||||
|
||||
|
||||
# Storage allocated
|
||||
("mNumAllocated", c_uint),
|
||||
]
|
||||
|
@ -545,20 +545,20 @@ class Material(Structure):
|
|||
class Bone(Structure):
|
||||
"""
|
||||
See 'mesh.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# The name of the bone.
|
||||
("mName", String),
|
||||
|
||||
|
||||
# The number of vertices affected by this bone
|
||||
# The maximum value for this member is
|
||||
#AI_MAX_BONE_WEIGHTS.
|
||||
("mNumWeights", c_uint),
|
||||
|
||||
|
||||
# The vertices affected by this bone
|
||||
("mWeights", POINTER(VertexWeight)),
|
||||
|
||||
|
||||
# Matrix that transforms from mesh space to bone space in bind pose
|
||||
("mOffsetMatrix", Matrix4x4),
|
||||
]
|
||||
|
@ -567,12 +567,15 @@ class Bone(Structure):
|
|||
class AnimMesh(Structure):
|
||||
"""
|
||||
See 'mesh.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
AI_MAX_NUMBER_OF_TEXTURECOORDS = 0x8
|
||||
AI_MAX_NUMBER_OF_COLOR_SETS = 0x8
|
||||
|
||||
_fields_ = [
|
||||
# Anim Mesh name
|
||||
("mName", String),
|
||||
|
||||
# Replacement for aiMesh::mVertices. If this array is non-NULL,
|
||||
# it *must* contain mNumVertices entries. The corresponding
|
||||
# array in the host mesh must be non-NULL as well - animation
|
||||
|
@ -613,7 +616,7 @@ class AnimMesh(Structure):
|
|||
class Mesh(Structure):
|
||||
"""
|
||||
See 'mesh.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
AI_MAX_FACE_INDICES = 0x7fff
|
||||
AI_MAX_BONE_WEIGHTS = 0x7fffffff
|
||||
|
@ -628,24 +631,24 @@ class Mesh(Structure):
|
|||
# The "SortByPrimitiveType"-Step can be used to make sure the
|
||||
# output meshes consist of one primitive type each.
|
||||
("mPrimitiveTypes", c_uint),
|
||||
|
||||
|
||||
# The number of vertices in this mesh.
|
||||
# This is also the size of all of the per-vertex data arrays.
|
||||
# The maximum value for this member is
|
||||
#AI_MAX_VERTICES.
|
||||
("mNumVertices", c_uint),
|
||||
|
||||
|
||||
# The number of primitives (triangles, polygons, lines) in this mesh.
|
||||
# This is also the size of the mFaces array.
|
||||
# The maximum value for this member is
|
||||
#AI_MAX_FACES.
|
||||
("mNumFaces", c_uint),
|
||||
|
||||
|
||||
# Vertex positions.
|
||||
# This array is always present in a mesh. The array is
|
||||
# mNumVertices in size.
|
||||
("mVertices", POINTER(Vector3D)),
|
||||
|
||||
|
||||
# Vertex normals.
|
||||
# The array contains normalized vectors, NULL if not present.
|
||||
# The array is mNumVertices in size. Normals are undefined for
|
||||
|
@ -666,7 +669,7 @@ class Mesh(Structure):
|
|||
# However, this needn't apply for normals that have been taken
|
||||
# directly from the model file.
|
||||
("mNormals", POINTER(Vector3D)),
|
||||
|
||||
|
||||
# Vertex tangents.
|
||||
# The tangent of a vertex points in the direction of the positive
|
||||
# X texture axis. The array contains normalized vectors, NULL if
|
||||
|
@ -681,7 +684,7 @@ class Mesh(Structure):
|
|||
# contains bitangents (the bitangent is just the cross product of
|
||||
# tangent and normal vectors).
|
||||
("mTangents", POINTER(Vector3D)),
|
||||
|
||||
|
||||
# Vertex bitangents.
|
||||
# The bitangent of a vertex points in the direction of the positive
|
||||
# Y texture axis. The array contains normalized vectors, NULL if not
|
||||
|
@ -689,19 +692,19 @@ class Mesh(Structure):
|
|||
# @note If the mesh contains tangents, it automatically also contains
|
||||
# bitangents.
|
||||
("mBitangents", POINTER(Vector3D)),
|
||||
|
||||
|
||||
# Vertex color sets.
|
||||
# A mesh may contain 0 to
|
||||
#AI_MAX_NUMBER_OF_COLOR_SETS vertex
|
||||
# colors per vertex. NULL if not present. Each array is
|
||||
# mNumVertices in size if present.
|
||||
("mColors", POINTER(Color4D)*AI_MAX_NUMBER_OF_COLOR_SETS),
|
||||
|
||||
|
||||
# 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),
|
||||
|
||||
|
||||
# Specifies the number of components for a given UV channel.
|
||||
# Up to three channels are supported (UVW, for accessing volume
|
||||
# or cube maps). If the value is 2 for a given channel n, the
|
||||
|
@ -709,7 +712,7 @@ class Mesh(Structure):
|
|||
# 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),
|
||||
|
||||
|
||||
# The faces the mesh is constructed from.
|
||||
# Each face refers to a number of vertices by their indices.
|
||||
# This array is always present in a mesh, its size is given
|
||||
|
@ -717,22 +720,22 @@ class Mesh(Structure):
|
|||
#AI_SCENE_FLAGS_NON_VERBOSE_FORMAT
|
||||
# is NOT set each face references an unique set of vertices.
|
||||
("mFaces", POINTER(Face)),
|
||||
|
||||
|
||||
# The number of bones this mesh contains.
|
||||
# Can be 0, in which case the mBones array is NULL.
|
||||
("mNumBones", c_uint),
|
||||
|
||||
|
||||
# The bones of this mesh.
|
||||
# A bone consists of a name by which it can be found in the
|
||||
# frame hierarchy and a set of vertex weights.
|
||||
("mBones", POINTER(POINTER(Bone))),
|
||||
|
||||
|
||||
# The material used by this mesh.
|
||||
# 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),
|
||||
|
||||
|
||||
# Name of the mesh. Meshes can be named, but this is not a
|
||||
# requirement and leaving this field empty is totally fine.
|
||||
# There are mainly three uses for mesh names:
|
||||
|
@ -744,15 +747,15 @@ class Mesh(Structure):
|
|||
# partitioning.
|
||||
# - Vertex animations refer to meshes by their names.
|
||||
("mName", String),
|
||||
|
||||
|
||||
# The number of attachment meshes. Note! Currently only works with Collada loader.
|
||||
("mNumAnimMeshes", c_uint),
|
||||
|
||||
|
||||
# Attachment meshes for this mesh, for vertex-based animation.
|
||||
# Attachment meshes carry replacement data for some of the
|
||||
# mesh'es vertex components (usually positions, normals).
|
||||
# Note! Currently only works with Collada loader.
|
||||
("mAnimMesh", POINTER(POINTER(AnimMesh))),
|
||||
("mAnimMeshes", POINTER(POINTER(AnimMesh))),
|
||||
|
||||
# Method of morphing when animeshes are specified.
|
||||
("mMethod", c_uint),
|
||||
|
@ -762,7 +765,7 @@ class Mesh(Structure):
|
|||
class Camera(Structure):
|
||||
"""
|
||||
See 'camera.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
_fields_ = [
|
||||
|
@ -771,12 +774,12 @@ class Camera(Structure):
|
|||
# This node specifies the position of the camera in the scene
|
||||
# hierarchy and can be animated.
|
||||
("mName", String),
|
||||
|
||||
|
||||
# Position of the camera relative to the coordinate space
|
||||
# defined by the corresponding node.
|
||||
# The default value is 0|0|0.
|
||||
("mPosition", Vector3D),
|
||||
|
||||
|
||||
# 'Up' - vector of the camera coordinate system relative to
|
||||
# the coordinate space defined by the corresponding node.
|
||||
# The 'right' vector of the camera coordinate system is
|
||||
|
@ -784,25 +787,25 @@ class Camera(Structure):
|
|||
# The default value is 0|1|0. The vector
|
||||
# may be normalized, but it needn't.
|
||||
("mUp", Vector3D),
|
||||
|
||||
|
||||
# 'LookAt' - vector of the camera coordinate system relative to
|
||||
# the coordinate space defined by the corresponding node.
|
||||
# This is the viewing direction of the user.
|
||||
# The default value is 0|0|1. The vector
|
||||
# may be normalized, but it needn't.
|
||||
("mLookAt", Vector3D),
|
||||
|
||||
|
||||
# Half horizontal field of view angle, in radians.
|
||||
# The field of view angle is the angle between the center
|
||||
# line of the screen and the left or right border.
|
||||
# The default value is 1/4PI.
|
||||
("mHorizontalFOV", c_float),
|
||||
|
||||
|
||||
# Distance of the near clipping plane from the camera.
|
||||
# The value may not be 0.f (for arithmetic reasons to prevent
|
||||
# a division through zero). The default value is 0.1f.
|
||||
("mClipPlaneNear", c_float),
|
||||
|
||||
|
||||
# Distance of the far clipping plane from the camera.
|
||||
# The far clipping plane must, of course, be further away than the
|
||||
# near clipping plane. The default value is 1000.f. The ratio
|
||||
|
@ -810,7 +813,7 @@ class Camera(Structure):
|
|||
# large (between 1000-10000 should be ok) to avoid floating-point
|
||||
# inaccuracies which could lead to z-fighting.
|
||||
("mClipPlaneFar", c_float),
|
||||
|
||||
|
||||
# Screen aspect ratio.
|
||||
# This is the ration between the width and the height of the
|
||||
# screen. Typical values are 4/3, 1/2 or 1/1. This value is
|
||||
|
@ -822,12 +825,12 @@ class Camera(Structure):
|
|||
class VectorKey(Structure):
|
||||
"""
|
||||
See 'anim.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# The time of this key
|
||||
("mTime", c_double),
|
||||
|
||||
|
||||
# The value of this key
|
||||
("mValue", Vector3D),
|
||||
]
|
||||
|
@ -835,12 +838,12 @@ class VectorKey(Structure):
|
|||
class QuatKey(Structure):
|
||||
"""
|
||||
See 'anim.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# The time of this key
|
||||
("mTime", c_double),
|
||||
|
||||
|
||||
# The value of this key
|
||||
("mValue", Quaternion),
|
||||
]
|
||||
|
@ -848,7 +851,7 @@ class QuatKey(Structure):
|
|||
class MeshMorphKey(Structure):
|
||||
"""
|
||||
See 'anim.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# The time of this key
|
||||
|
@ -866,47 +869,47 @@ class MeshMorphKey(Structure):
|
|||
class NodeAnim(Structure):
|
||||
"""
|
||||
See 'anim.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# The name of the node affected by this animation. The node
|
||||
# must exist and it must be unique.
|
||||
("mNodeName", String),
|
||||
|
||||
|
||||
# The number of position keys
|
||||
("mNumPositionKeys", c_uint),
|
||||
|
||||
|
||||
# The position keys of this animation channel. Positions are
|
||||
# specified as 3D vector. The array is mNumPositionKeys in size.
|
||||
# If there are position keys, there will also be at least one
|
||||
# scaling and one rotation key.
|
||||
("mPositionKeys", POINTER(VectorKey)),
|
||||
|
||||
|
||||
# The number of rotation keys
|
||||
("mNumRotationKeys", c_uint),
|
||||
|
||||
|
||||
# The rotation keys of this animation channel. Rotations are
|
||||
# given as quaternions, which are 4D vectors. The array is
|
||||
# mNumRotationKeys in size.
|
||||
# If there are rotation keys, there will also be at least one
|
||||
# scaling and one position key.
|
||||
("mRotationKeys", POINTER(QuatKey)),
|
||||
|
||||
|
||||
# The number of scaling keys
|
||||
("mNumScalingKeys", c_uint),
|
||||
|
||||
|
||||
# The scaling keys of this animation channel. Scalings are
|
||||
# specified as 3D vector. The array is mNumScalingKeys in size.
|
||||
# If there are scaling keys, there will also be at least one
|
||||
# position and one rotation key.
|
||||
("mScalingKeys", POINTER(VectorKey)),
|
||||
|
||||
|
||||
# Defines how the animation behaves before the first
|
||||
# key is encountered.
|
||||
# The default value is aiAnimBehaviour_DEFAULT (the original
|
||||
# transformation matrix of the affected node is used).
|
||||
("mPreState", c_uint),
|
||||
|
||||
|
||||
# Defines how the animation behaves after the last
|
||||
# key was processed.
|
||||
# The default value is aiAnimBehaviour_DEFAULT (the original
|
||||
|
@ -917,7 +920,7 @@ class NodeAnim(Structure):
|
|||
class MeshAnim(Structure):
|
||||
"""
|
||||
See 'anim.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# Name of the mesh to be animated. An empty string is not allowed,
|
||||
|
@ -936,7 +939,7 @@ class MeshAnim(Structure):
|
|||
class MeshMorphAnim(Structure):
|
||||
"""
|
||||
See 'anim.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# Name of the mesh to be animated. An empty string is not allowed,
|
||||
|
@ -956,32 +959,32 @@ class MeshMorphAnim(Structure):
|
|||
class Animation(Structure):
|
||||
"""
|
||||
See 'anim.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
_fields_ = [
|
||||
# The name of the animation. If the modeling package this data was
|
||||
# exported from does support only a single animation channel, this
|
||||
# name is usually empty (length is zero).
|
||||
("mName", String),
|
||||
|
||||
|
||||
# Duration of the animation in ticks.
|
||||
("mDuration", c_double),
|
||||
|
||||
|
||||
# Ticks per second. 0 if not specified in the imported file
|
||||
("mTicksPerSecond", c_double),
|
||||
|
||||
|
||||
# The number of bone animation channels. Each channel affects
|
||||
# a single node.
|
||||
("mNumChannels", c_uint),
|
||||
|
||||
|
||||
# The node animation channels. Each channel affects a single node.
|
||||
# The array is mNumChannels in size.
|
||||
("mChannels", POINTER(POINTER(NodeAnim))),
|
||||
|
||||
|
||||
# The number of mesh animation channels. Each channel affects
|
||||
# a single mesh and defines vertex-based animation.
|
||||
("mNumMeshChannels", c_uint),
|
||||
|
||||
|
||||
# The mesh animation channels. Each channel affects a single mesh.
|
||||
# The array is mNumMeshChannels in size.
|
||||
("mMeshChannels", POINTER(POINTER(MeshAnim))),
|
||||
|
@ -991,7 +994,7 @@ class Animation(Structure):
|
|||
("mNumMorphMeshChannels", c_uint),
|
||||
|
||||
# The morph mesh animation channels. Each channel affects a single mesh.
|
||||
# The array is mNumMorphMeshChannels in size.
|
||||
# The array is mNumMorphMeshChannels in size.
|
||||
("mMorphMeshChannels", POINTER(POINTER(MeshMorphAnim))),
|
||||
|
||||
]
|
||||
|
@ -1032,7 +1035,7 @@ ExportDataBlob._fields_ = [
|
|||
class Scene(Structure):
|
||||
"""
|
||||
See 'aiScene.h' for details.
|
||||
"""
|
||||
"""
|
||||
|
||||
AI_SCENE_FLAGS_INCOMPLETE = 0x1
|
||||
AI_SCENE_FLAGS_VALIDATED = 0x2
|
||||
|
@ -1047,64 +1050,64 @@ class Scene(Structure):
|
|||
# want to reject all scenes with the AI_SCENE_FLAGS_INCOMPLETE
|
||||
# bit set.
|
||||
("mFlags", c_uint),
|
||||
|
||||
|
||||
# The root node of the hierarchy.
|
||||
# There will always be at least the root node if the import
|
||||
# was successful (and no special flags have been set).
|
||||
# Presence of further nodes depends on the format and content
|
||||
# of the imported file.
|
||||
("mRootNode", POINTER(Node)),
|
||||
|
||||
|
||||
# The number of meshes in the scene.
|
||||
("mNumMeshes", c_uint),
|
||||
|
||||
|
||||
# The array of meshes.
|
||||
# Use the indices given in the aiNode structure to access
|
||||
# this array. The array is mNumMeshes in size. If the
|
||||
# AI_SCENE_FLAGS_INCOMPLETE flag is not set there will always
|
||||
# be at least ONE material.
|
||||
("mMeshes", POINTER(POINTER(Mesh))),
|
||||
|
||||
|
||||
# The number of materials in the scene.
|
||||
("mNumMaterials", c_uint),
|
||||
|
||||
|
||||
# The array of materials.
|
||||
# Use the index given in each aiMesh structure to access this
|
||||
# array. The array is mNumMaterials in size. If the
|
||||
# AI_SCENE_FLAGS_INCOMPLETE flag is not set there will always
|
||||
# be at least ONE material.
|
||||
("mMaterials", POINTER(POINTER(Material))),
|
||||
|
||||
|
||||
# The number of animations in the scene.
|
||||
("mNumAnimations", c_uint),
|
||||
|
||||
|
||||
# The array of animations.
|
||||
# All animations imported from the given file are listed here.
|
||||
# The array is mNumAnimations in size.
|
||||
("mAnimations", POINTER(POINTER(Animation))),
|
||||
|
||||
|
||||
# The number of textures embedded into the file
|
||||
("mNumTextures", c_uint),
|
||||
|
||||
|
||||
# The array of embedded textures.
|
||||
# Not many file formats embed their textures into the file.
|
||||
# An example is Quake's MDL format (which is also used by
|
||||
# some GameStudio versions)
|
||||
("mTextures", POINTER(POINTER(Texture))),
|
||||
|
||||
|
||||
# The number of light sources in the scene. Light sources
|
||||
# are fully optional, in most cases this attribute will be 0
|
||||
("mNumLights", c_uint),
|
||||
|
||||
|
||||
# The array of light sources.
|
||||
# All light sources imported from the given file are
|
||||
# listed here. The array is mNumLights in size.
|
||||
("mLights", POINTER(POINTER(Light))),
|
||||
|
||||
|
||||
# The number of cameras in the scene. Cameras
|
||||
# are fully optional, in most cases this attribute will be 0
|
||||
("mNumCameras", c_uint),
|
||||
|
||||
|
||||
# The array of cameras.
|
||||
# All cameras imported from the given file are listed here.
|
||||
# The array is mNumCameras in size. The first camera in the
|
||||
|
|
Loading…
Reference in New Issue