aimesh node重启_ASSIMP的数据结构
數(shù)據(jù)結(jié)構(gòu)是對文件的描述,也是我們想要獲取的最終產(chǎn)物,一般來說我們會用這個結(jié)果映射到我們自己的模型里面去(這樣做是為了降低對這個項目的依賴,如果你的模型都用別人的,還搞毛啊)
1.aiScene :根節(jié)點
struct aiScene
{
unsigned int mFlags; // 一個狀態(tài)段
C_STRUCT aiNode* mRootNode; // 根節(jié)點
// 網(wǎng)格
unsigned int mNumMeshes;
C_STRUCT aiMesh** mMeshes;
//材質(zhì)
unsigned int mNumMaterials;
C_STRUCT aiMaterial** mMaterials;
//動畫
unsigned int mNumAnimations;
C_STRUCT aiAnimation** mAnimations;
//紋理
unsigned int mNumTextures;
C_STRUCT aiTexture** mTextures;
//光源
unsigned int mNumLights;
C_STRUCT aiLight** mLights;
//攝像機
unsigned int mNumCameras;
C_STRUCT aiCamera** mCameras;
};
這結(jié)構(gòu)太簡潔了。
2.aiNode :
struct aiNode
{
C_STRUCT aiString mName; // 名字
C_STRUCT aiMatrix4x4 mTransformation; // 父的相對變換
C_STRUCT aiNode* mParent; // 父節(jié)點
// 孩紙節(jié)點
unsigned int mNumChildren;
C_STRUCT aiNode** mChildren;
// 網(wǎng)格
unsigned int mNumMeshes;
unsigned int* mMeshes;
};
3.aiMesh :網(wǎng)格
struct aiMesh
{
unsigned int mPrimitiveTypes;
unsigned int mNumVertices; // 頂點數(shù)
unsigned int mNumFaces; // 面數(shù)
C_STRUCT aiVector3D* mVertices; // 頂點集合
C_STRUCT aiVector3D* mNormals; // 法向量集合
C_STRUCT aiVector3D* mTangents; // 切線集合
C_STRUCT aiVector3D* mBitangents; //雙向切線集合
C_STRUCT aiColor4D* mColors[AI_MAX_NUMBER_OF_COLOR_SETS]; // 頂點顏色集合
C_STRUCT aiVector3D* mTextureCoords[AI_MAX_NUMBER_OF_TEXTURECOORDS]; // 頂點的紋理坐標(biāo)(u,v)
unsigned int mNumUVComponents[AI_MAX_NUMBER_OF_TEXTURECOORDS];//??
C_STRUCT aiFace* mFaces; //面的集合
unsigned int mMaterialIndex; // 材質(zhì)索引
C_STRUCT aiString mName; //名字
// 骨頭
unsigned int mNumBones;
C_STRUCT aiBone** mBones;
//動畫(這一組參數(shù)還未被使用)
unsigned int mNumAnimMeshes;
C_STRUCT aiAnimMesh** mAnimMeshes;
};
4.aiMaterial :材質(zhì)是一個模板數(shù)據(jù)結(jié)構(gòu),材質(zhì)本身就是N多屬性
5.aiTexture :
struct aiTexture
{
unsigned int mWidth;
unsigned int mHeight;
char achFormatHint[4]; //這個的紋理文件的類型['dds\\0', 'pcx\\0', 'jpg\\0']
C_STRUCT aiTexel* pcData; //紋理的內(nèi)容
};
struct aiTexel
{
unsigned char b,g,r,a; // 四元數(shù)描述某個像素的顏色和透明度
}
6.aiAnimation :動畫
struct aiAnimation
{
C_STRUCT aiString mName;
double mDuration;
double mTicksPerSecond;
//節(jié)點動畫集合,骨骼動畫屬于節(jié)點動畫
unsigned int mNumChannels;
C_STRUCT aiNodeAnim** mChannels;
//網(wǎng)格動畫集合
unsigned int mNumMeshChannels;
C_STRUCT aiMeshAnim** mMeshChannels;
};
6.1?aiNodeAnim :節(jié)點動畫
struct aiNodeAnim
{
C_STRUCT aiString mNodeName;
//位置的軌跡
unsigned int mNumPositionKeys;
C_STRUCT aiVectorKey* mPositionKeys;
//旋轉(zhuǎn)的軌跡
unsigned int mNumRotationKeys;
C_STRUCT aiQuatKey* mRotationKeys;
//縮放的軌跡
unsigned int mNumScalingKeys;
C_STRUCT aiVectorKey* mScalingKeys;
C_ENUM aiAnimBehaviour mPreState;
C_ENUM aiAnimBehaviour mPostState;
};
struct aiVectorKey //頂點幀
{
double mTime; // 時間
C_STRUCT aiVector3D mValue; // 值
};
struct aiQuatKey // 四元數(shù)幀
{
double mTime; // 時間
C_STRUCT aiQuaternion mValue; //值
};
6.2?aiMeshAnim :網(wǎng)格動畫
struct aiMeshAnim
{
C_STRUCT aiString mName;
//所有移動的點都會有一個網(wǎng)格幀
unsigned int mNumKeys;
C_STRUCT aiMeshKey* mKeys;
};
struct aiMeshKey // 網(wǎng)格幀
{
double mTime; // 時間
unsigned int mValue; // 值 (這個值沒有理解啊)
};
7.aiLight :光源
struct aiLight
{
C_STRUCT aiString mName;
C_ENUM aiLightSourceType mType; // 光源類型 4種
C_STRUCT aiVector3D mPosition; // 位置
C_STRUCT aiVector3D mDirection; // 方向
// 衰減因子,衰減=1/(att0+ ATT1* D+ ATT2* D* D),D是距離
float mAttenuationConstant; // att0
float mAttenuationLinear; // ATT1
float mAttenuationQuadratic; // ATT2
C_STRUCT aiColor3D mColorDiffuse; // 漫反射光的顏色
C_STRUCT aiColor3D mColorSpecular; // 鏡面光的顏色
C_STRUCT aiColor3D mColorAmbient; // 環(huán)境光的顏色
// 當(dāng)光源類型為aiLightSource_SPOT(聚光燈)的時候有效
float mAngleInnerCone; // 內(nèi)角弧度
float mAngleOuterCone; // 外角弧度
};
enum aiLightSourceType // 光源的類型
{
aiLightSource_UNDEFINED = 0x0, // 全局光
aiLightSource_DIRECTIONAL = 0x1, // 定向光源,光源的位置無限遠
aiLightSource_POINT = 0x2, // 點光源
aiLightSource_SPOT = 0x3, // 聚光燈類似的光
};
8.aiCamera :攝像機
struct aiCamera
{
C_STRUCT aiString mName; // 名字
C_STRUCT aiVector3D mPosition; // 相機的位置,默認值0|0|0
C_STRUCT aiVector3D mUp; // 相機的上方,默認值0| 1 | 0
C_STRUCT aiVector3D mLookAt; // 視點方向,默認值0|0|1
float mHorizontalFOV; // 半水平視角的幅度 默認值1/4PI
float mClipPlaneNear; // 近視截體平面,默認值 0.1f.
float mClipPlaneFar; // 遠視截體平面,默認值是1000.f..
float mAspect; // 屏幕的寬高比,這個需要獲取
};
分享到:
2012-12-28 02:29
瀏覽 2694
評論
總結(jié)
以上是生活随笔為你收集整理的aimesh node重启_ASSIMP的数据结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 零代码使用腾讯TBP打造智能对话机器人
- 下一篇: 第11 章 关联容器