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

1.aiScene :根节点

struct aiScene

{

unsigned int mFlags; // 一个状态段

C_STRUCT aiNode* mRootNode; // 根节点

// 网格

unsigned int mNumMeshes;

C_STRUCT aiMesh** mMeshes;

//材质

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;

};

这结构太简洁了。

2.aiNode :

struct aiNode

{

C_STRUCT aiString mName; // 名字

C_STRUCT aiMatrix4x4 mTransformation; // 父的相对变换

C_STRUCT aiNode* mParent; // 父节点

// 孩纸节点

unsigned int mNumChildren;

C_STRUCT aiNode** mChildren;

// 网格

unsigned int mNumMeshes;

unsigned int* mMeshes;

};

3.aiMesh :网格

struct aiMesh

{

unsigned int mPrimitiveTypes;

unsigned int mNumVertices; // 顶点数

unsigned int mNumFaces; // 面数

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]; // 顶点的纹理坐标(u,v)

unsigned int mNumUVComponents[AI_MAX_NUMBER_OF_TEXTURECOORDS];//??

C_STRUCT aiFace* mFaces; //面的集合

unsigned int mMaterialIndex; // 材质索引

C_STRUCT aiString mName; //名字

// 骨头

unsigned int mNumBones;

C_STRUCT aiBone** mBones;

//动画(这一组参数还未被使用)

unsigned int mNumAnimMeshes;

C_STRUCT aiAnimMesh** mAnimMeshes;

};

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

5.aiTexture :

struct aiTexture

{

unsigned int mWidth;

unsigned int mHeight;

char achFormatHint[4]; //这个的纹理文件的类型['dds\\0', 'pcx\\0', 'jpg\\0']

C_STRUCT aiTexel* pcData; //纹理的内容

};

struct aiTexel

{

unsigned char b,g,r,a; // 四元数描述某个像素的颜色和透明度

}

6.aiAnimation :动画

struct aiAnimation

{

C_STRUCT aiString mName;

double mDuration;

double mTicksPerSecond;

//节点动画集合,骨骼动画属于节点动画

unsigned int mNumChannels;

C_STRUCT aiNodeAnim** mChannels;

//网格动画集合

unsigned int mNumMeshChannels;

C_STRUCT aiMeshAnim** mMeshChannels;

};

6.1 aiNodeAnim :节点动画

struct aiNodeAnim

{

C_STRUCT aiString mNodeName;

//位置的轨迹

unsigned int mNumPositionKeys;

C_STRUCT aiVectorKey* mPositionKeys;

//旋转的轨迹

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 // 四元数帧

{

double mTime; // 时间

C_STRUCT aiQuaternion mValue; //值

};

6.2 aiMeshAnim :网格动画

struct aiMeshAnim

{

C_STRUCT aiString mName;

//所有移动的点都会有一个网格帧

unsigned int mNumKeys;

C_STRUCT aiMeshKey* mKeys;

};

struct aiMeshKey // 网格帧

{

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; // 环境光的颜色

// 当光源类型为aiLightSource_SPOT(聚光灯)的时候有效

float mAngleInnerCone; // 内角弧度

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

评论

aimesh node重启_ASSIMP的数据结构相关推荐

  1. aimesh node重启_华硕 RT-AC86U 和 网件 R7000 组 AiMesh 成功

    家里之前买了一个 R7000 主路由器,后来我嫌我房间里的信号有点烂( 5G 信号只能 2 格,网速比 2.4G 还慢),所以就入手了一个华硕 RT-AC86U 作为主路由器,R7000 则作为 AP ...

  2. aimesh node重启_RT-AC86U AP模式 AiMesh无线组网不稳定

    两台RT-AC86U无线组网,一台RT-AC1900P有线组网.主路由为RT-AC86U,操作模式选择:无线接入点(AP)模式 / AiMesh 路由器(AP 模式):手机连接到RT-AC86U Ai ...

  3. linux停止nodejs,node.js – 在linux重启后,nodejs消失了

    我刚用安装成功的nvm安装了nodejs版本0.10.14. 在安装nodejs之前,我安装了zeromq 2.2.0版. 出于测试目的,我试图在下面运行一个基本的pub示例. var zmq = r ...

  4. 数据结构算法集---C++语言实现

    /// // // // 堆栈数据结构 stack.h // // // /// #include<iostream.h> template<class Type>class ...

  5. redis重启命令_这可能是你见过最全面的Redis主从复制原理

    全是干货的技术号: 本文已收录在github,欢迎 star/fork: https://github.com/Wasabi1234/Java-Interview-Tutorial 在Redis复制的 ...

  6. 记ByteCTF中的Node题

    记ByteCTF中的Node题 我总觉得字节是跟Node过不去了,初赛和决赛都整了个Node题目,当然PHP.Java都是必不可少的,只是我觉得Node类型的比较少见,所以感觉挺新鲜的. Nothin ...

  7. HashMap里的Node

    一. HashMap类中的Node<K,V>类里有一个Node<K,V> next.那以Node<K,V>.next.next.next这种结构形式存储元素就是所说 ...

  8. 西瓜书决策树实现(基于ID3)补充——采用自定义数据结构实现

    刚刚写过一篇决策树实现的案列,树结构采用python自带的字典作为存储决策树的数据结构,为了下一步便于实现预剪枝和后剪枝,老叔认为采用自定义数据结构可能会更便于操作,也更灵活,可以在节点随意添加自己认 ...

  9. 数据结构与算法--头歌(educoder)实训作业题目及答案

    目录 Java 数据结构之图 第1关:图的表示 第2关:深度优先搜索 第3关:广度优先搜索 第4关:单源最短路径 Java 数据结构之排序 第1关:选择排序 第2关:插入排序 第3关:归并排序 第4关 ...

最新文章

  1. Python爬虫案例-获取最新的中国行政区域划分
  2. 刚出炉!程序员人才补贴:单项目最高补贴1000万元
  3. 据我所知,这是第一个完整实现运动分割、动态目标追踪等的「开源」动态SLAM系统!...
  4. NLP——基于transformer 的翻译系统
  5. c++ softmax sigmoid
  6. 【机器人系列】支付宝支付控件输入框模拟输入,输入框模拟输入
  7. 检索图书 FindMess.java
  8. 【机器学习基础】数学推导+纯Python实现机器学习算法10:线性不可分支持向量机...
  9. SpringBoot入门教程(十五)集成Druid
  10. disaster——我都做了些什么啊!
  11. 2005.2.21 至 2005.8.8
  12. NullPointerException : HiveAuthorizerImpl.checkPrivileges(HiveAuthorizerImpl.java:85)
  13. 构建指定仓库_使用Travis CI自动构建和部署你的GitBook
  14. Html中的span与a的区别,a标签和span标签的区别
  15. 物联网定位系统:GPS、WiFi、基站、RFID…
  16. EE308_lab1-2
  17. 经济学文章---巨量人口对政经的加速减速效应、
  18. Nothing is impossible
  19. 物联网平台分为几层,你了解吗
  20. linux查看使用的字体大小,查看linux下的字体

热门文章

  1. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 问题
  2. dubbo-环境搭建,实现一个简单地dubbo实例(附github地址)
  3. VUE2第五天学习---自定义指令
  4. 原博客文章(Apache初配2008/4/8)
  5. 老陈学 C++ 序列之二: 友元函数
  6. 你的GitHub,怎么和我用的不太一样?
  7. Python操作Excel删除一个Sheet
  8. Android 基于注解IOC组件化/模块化的架构实践
  9. Mac下的Jenkins安装
  10. SUSE12系统安装及LVM设置详解