您当前的位置: 首页 >  数据结构

鱼儿-1226

暂无认证

  • 1浏览

    0关注

    1100博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ASSIMP的数据结构

鱼儿-1226 发布时间:2020-07-20 10:55:41 ,浏览量:1

ASSIMP的数据结构
  • 博客分类: 
  • Assimp

 

 

数据结构是对文件的描述,也是我们想要获取的最终产物,一般来说我们会用这个结果映射到我们自己的模型里面去(这样做是为了降低对这个项目的依赖,如果你的模型都用别人的,还搞毛啊)

1.aiScene :根节点

Java代码  

  1. struct aiScene  
  2. {  
  3.     unsigned int mFlags;  // 一个状态段  
  4.     C_STRUCT aiNode* mRootNode;  // 根节点  
  5.         // 网格  
  6.     unsigned int mNumMeshes;  
  7.     C_STRUCT aiMesh** mMeshes;  
  8.         //材质  
  9.     unsigned int mNumMaterials;  
  10.     C_STRUCT aiMaterial** mMaterials;  
  11.         //动画  
  12.     unsigned int mNumAnimations;   
  13.     C_STRUCT aiAnimation** mAnimations;  
  14.         //纹理  
  15.     unsigned int mNumTextures;  
  16.     C_STRUCT aiTexture** mTextures;  
  17.         //光源  
  18.     unsigned int mNumLights;  
  19.     C_STRUCT aiLight** mLights;  
  20.         //摄像机  
  21.     unsigned int mNumCameras;  
  22.     C_STRUCT aiCamera** mCameras;  
  23. };  

这结构太简洁了。

2.aiNode :

Cpp代码  

  1. struct aiNode  
  2. {  
  3.     C_STRUCT aiString mName; // 名字  
  4.     C_STRUCT aiMatrix4x4 mTransformation; // 父的相对变换  
  5.     C_STRUCT aiNode* mParent; // 父节点  
  6.         // 孩纸节点  
  7.     unsigned int mNumChildren;  
  8.     C_STRUCT aiNode** mChildren;  
  9.         // 网格  
  10.     unsigned int mNumMeshes;  
  11.     unsigned int* mMeshes;  
  12. };  

3.aiMesh :网格

Cpp代码  

  1. struct aiMesh  
  2. {  
  3.     unsigned int mPrimitiveTypes;  
  4.     unsigned int mNumVertices; // 顶点数  
  5.     unsigned int mNumFaces;   // 面数  
  6.     C_STRUCT aiVector3D* mVertices;  // 顶点集合  
  7.     C_STRUCT aiVector3D* mNormals;  // 法向量集合  
  8.     C_STRUCT aiVector3D* mTangents; // 切线集合  
  9.     C_STRUCT aiVector3D* mBitangents; //双向切线集合  
  10.     C_STRUCT aiColor4D* mColors[AI_MAX_NUMBER_OF_COLOR_SETS]; // 顶点颜色集合  
  11.     C_STRUCT aiVector3D* mTextureCoords[AI_MAX_NUMBER_OF_TEXTURECOORDS]; // 顶点的纹理坐标(u,v)  
  12.     unsigned int mNumUVComponents[AI_MAX_NUMBER_OF_TEXTURECOORDS];//??  
  13.     C_STRUCT aiFace* mFaces; //面的集合  
  14.     unsigned int mMaterialIndex; // 材质索引  
  15.     C_STRUCT aiString mName; //名字  
  16.         // 骨头  
  17.     unsigned int mNumBones;   
  18.     C_STRUCT aiBone** mBones;   
  19.         //动画(这一组参数还未被使用)  
  20.     unsigned int mNumAnimMeshes;  
  21.     C_STRUCT aiAnimMesh** mAnimMeshes;  
  22. };  

4.aiMaterial :材质是一个模板数据结构,材质本身就是N多属性

5.aiTexture :

Java代码  

  1. struct aiTexture  
  2. {  
  3.     unsigned int mWidth;  
  4.     unsigned int mHeight;  
  5.     char achFormatHint[4]; //这个的纹理文件的类型['dds\\0', 'pcx\\0', 'jpg\\0']  
  6.     C_STRUCT aiTexel* pcData; //纹理的内容  
  7. };  
  8.   
  9. struct aiTexel  
  10. {  
  11.     unsigned char b,g,r,a;  // 四元数描述某个像素的颜色和透明度  
  12. }   

6.aiAnimation :动画

Java代码  

  1. struct aiAnimation  
  2. {  
  3.     C_STRUCT aiString mName;  
  4.     double mDuration;  
  5.     double mTicksPerSecond;  
  6.         //节点动画集合,骨骼动画属于节点动画  
  7.     unsigned int mNumChannels;  
  8.     C_STRUCT aiNodeAnim** mChannels;  
  9.         //网格动画集合  
  10.     unsigned int mNumMeshChannels;  
  11.     C_STRUCT aiMeshAnim** mMeshChannels;  
  12. };  

 6.1 aiNodeAnim :节点动画

Java代码  

  1. struct aiNodeAnim  
  2. {  
  3.     C_STRUCT aiString mNodeName;  
  4.         //位置的轨迹  
  5.     unsigned int mNumPositionKeys;  
  6.     C_STRUCT aiVectorKey* mPositionKeys;    
  7.         //旋转的轨迹  
  8.     unsigned int mNumRotationKeys;  
  9.     C_STRUCT aiQuatKey* mRotationKeys;  
  10.         //缩放的轨迹  
  11.     unsigned int mNumScalingKeys;  
  12.     C_STRUCT aiVectorKey* mScalingKeys;  
  13.   
  14.     C_ENUM aiAnimBehaviour mPreState;  
  15.     C_ENUM aiAnimBehaviour mPostState;  
  16. };  
  17.   
  18. struct aiVectorKey //顶点帧  
  19. {  
  20.     double mTime;  // 时间  
  21.     C_STRUCT aiVector3D mValue;  // 值  
  22. };  
  23.   
  24. struct aiQuatKey  // 四元数帧  
  25. {  
  26.     double mTime;  // 时间  
  27.     C_STRUCT aiQuaternion mValue;  //值  
  28. };  

6.2 aiMeshAnim :网格动画

Cpp代码  

  1. struct aiMeshAnim   
  2. {  
  3.     C_STRUCT aiString mName;  
  4.         //所有移动的点都会有一个网格帧  
  5.     unsigned int mNumKeys;  
  6.     C_STRUCT aiMeshKey* mKeys;  
  7. };  
  8.   
  9. struct aiMeshKey // 网格帧  
  10. {  
  11.     double mTime;  // 时间  
  12.     unsigned int mValue; // 值 (这个值没有理解啊)  
  13. };  

7.aiLight :光源

Cpp代码  

  1. struct aiLight  
  2. {  
  3.     C_STRUCT aiString mName;  
  4.     C_ENUM aiLightSourceType mType; // 光源类型 4种  
  5.     C_STRUCT aiVector3D mPosition; // 位置  
  6.     C_STRUCT aiVector3D mDirection; // 方向  
  7.         // 衰减因子,衰减=1/(att0+ ATT1* D+ ATT2* D* D),D是距离  
  8.     float mAttenuationConstant; // att0  
  9.     float mAttenuationLinear;      // ATT1  
  10.     float mAttenuationQuadratic; // ATT2  
  11.     C_STRUCT aiColor3D mColorDiffuse; // 漫反射光的颜色  
  12.     C_STRUCT aiColor3D mColorSpecular; // 镜面光的颜色  
  13.     C_STRUCT aiColor3D mColorAmbient; // 环境光的颜色  
  14.         // 当光源类型为aiLightSource_SPOT(聚光灯)的时候有效  
  15.     float mAngleInnerCone; // 内角弧度  
  16.     float mAngleOuterCone; // 外角弧度  
  17. };  
  18.   
  19. enum aiLightSourceType // 光源的类型  
  20. {  
  21.     aiLightSource_UNDEFINED     = 0x0,   // 全局光  
  22.     aiLightSource_DIRECTIONAL   = 0x1,  // 定向光源,光源的位置无限远  
  23.     aiLightSource_POINT         = 0x2,        // 点光源  
  24.     aiLightSource_SPOT          = 0x3,        // 聚光灯类似的光  
  25. };  

 8.aiCamera :摄像机

Cpp代码  

  1. struct aiCamera  
  2. {  
  3.     C_STRUCT aiString mName; // 名字  
  4.     C_STRUCT aiVector3D mPosition; // 相机的位置,默认值0|0|0  
  5.     C_STRUCT aiVector3D mUp;         // 相机的上方,默认值0| 1 | 0  
  6.     C_STRUCT aiVector3D mLookAt;  // 视点方向,默认值0|0|1  
  7.     float mHorizontalFOV; // 半水平视角的幅度 默认值1/4PI  
  8.     float mClipPlaneNear; // 近视截体平面,默认值 0.1f.  
  9.     float mClipPlaneFar;   //  远视截体平面,默认值是1000.f..  
  10.     float mAspect; // 屏幕的宽高比,这个需要获取  
  11. };  
关注
打赏
1604459285
查看更多评论
立即登录/注册

微信扫码登录

0.0451s