aimesh node重启_ASSIMP的数据结构

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

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

评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WCF 初识(一)

WCF的前世今生 在.NETFramework 2.0以及前版本中,微软发展了Web Service(SOAP with HTTP communication),.NET Remoting(TCP/HTTP/Pipeline communication)以及基础的Winsock等通信支持。 由于各个通信方法…

iOS 点转成字符串,再字符串转换成点

CGPointFromString(<#NSString *string#>) NSStringFromCGPoint(<#CGPoint point#>)转载于:https://www.cnblogs.com/56ik/p/5111848.html

C/C++关键字解析

2、C/C分别有多少个关键字&#xff1f; 假如别人问某一个关键字是否属于C/C&#xff0c;要能正确的答出来。 1&#xff09;由ANSI标准定义的C语言关键字共32个 auto double int struct break else long switch case enum register typedef char extern return union const flo…

webpack打开项目命令_webpack打包好的页面在项目中怎么运行?

使用webpack打包好了页面和相关的js文件&#xff0c;然后命令输入webpack-dev-server&#xff0c;再浏览器中输入&#xff1a;http://localhost:9090/WebRoot...打开页面能正常的加载样式和数据&#xff0c;无报错。但是本项目是使用Jfnal框架(不知道有没有关系),然后在eclipse…

常见HTTP状态值

状态代码有三位数字组成&#xff0c;第一个数字定义了响应的类别&#xff0c;且有五种可能取值&#xff1a;1xx&#xff1a;指示信息--表示请求已接收&#xff0c;继续处理2xx&#xff1a;成功--表示请求已被成功接收、理解、接受3xx&#xff1a;重定向--要完成请求必须进行更进…

Linux系统:软链接与硬链接的原理分析

1、相关概念 1、索引节点inode(index node)&#xff1a;inode就是索引节点&#xff0c;它用来存放档案及目录的基本信息&#xff0c;包含时间、档名、使用者及群组等。 inode 是 UNIX/Linux 操作系统中的一种数据结构&#xff0c;其本质是结构体它包含了与文件系统中各个文件相…

python编写命令行框架_python的pytest框架之命令行参数详解(上)

前言pytest是一款强大的python自动化测试工具&#xff0c;可以胜任各种类型或者级别的软件测试工作。pytest提供了丰富的功能&#xff0c;包括assert重写&#xff0c;第三方插件&#xff0c;以及其他测试工具无法比拟的fixture模型。pytest是一个软件测试框架&#xff0c;是一款…

Android学习笔记——Handler(二)

对比请看http://blog.sina.com.cn/s/blog_78c913e30100uqmf.html 以下代码是MainActivity.java中的代码 package com.example.handlertest;import android.app.Activity; import android.os.Bundle; import android.os.Handler;public class MainActivity extends Activity {pr…

纯后台生成highcharts图片有哪些方法?

比如说&#xff0c;领导抛给你一个需求&#xff0c;把一些数据做成图表&#xff0c;每天通过邮件发送&#xff0c;让领导能在邮件中就看到图片&#xff0c;你会有什么思路呢&#xff1f;本人使用的是phantomjs这个神器&#xff0c;它的内核是WebKit引擎&#xff0c;不提供图形界…

操作系统:虚拟页式存储管理(缺页中断、页面置换算法)

1、基本工作原理 1、基本工作原理 在进程开始运行之前&#xff0c;不是全部装入页面&#xff0c;而是装入一个或者零个页面&#xff0c;之后根据进程运行的需要&#xff0c;动态装入其他页面&#xff1b;当内存已满&#xff0c;而又需要装入 新的页面时&#xff0c;则根据某种…

小程序 长按api_高质量的微信小程序样式模板应该长什么样?

现在不懂技术的小白若想快速制作自己的小程序&#xff0c;一般是通过小程序模板来实现。通过在模板上添加自己的图片、文字、商品等等&#xff0c;可以很简单地生成一个小程序。不过要想把小程序做得好看&#xff0c;你得找高质量的小程序样式模板才行。那么高质量的微信小程序…

(笔记)Mysql命令drop database:删除数据库

drop命令用于删除数据库。drop命令格式&#xff1a;drop database <数据库名>;例如&#xff0c;删除名为 xhkdb的数据库&#xff1a;mysql> drop database xhkdb;[例子1] 删除一个已经确定存在的数据库&#xff1a; mysql> drop database drop_database; Query…

web安全测试-AppScan使用分享

这里主要分享如何使用AppScan对一大项目的部分功能进行安全扫描。 ------------------------------------------------------------------------ 其实&#xff0c;对于安全方面的测试知道的甚少。因为那公司每个月要求对产品进行安全扫描。掌握了一人点使用技巧&#xff0c;所…

面试题:找两个有序数组所有数第K小的数

给定两个有序数组arr1和arr2&#xff0c;再给定一个整数k,返回两个数组中所有数中第k小的数。要求&#xff1a;如果arr1的长度为N&#xff0c;arr2的长度为M&#xff0c;时间复杂度请达到O(log(min{M, N}) ) 例如&#xff1a; arr1 {1,2,3,4,5} arr2 {3,4,5} k 1; 因为1为所…

ros 开源物体检测_ROS kinetic + Realsens D435i + ORK + LINEMOD 物体识别

1. ORKORK (Object Recognition Kitchen) 是 ROS 集成的物体识别库&#xff0c;当前 Kinetic 版本的 ROS 只集成了部分功能包的二进制安装文件&#xff0c;所以需通过源码编译安装。安装依赖库sudo apt-get installmeshlabsudo apt-get install libosmesa6-devsudo apt-get ins…

雪碧图sprity 合并多图使用心得

介绍 sprity 是一个模块化的雪碧图生成工具会根据目录中的图片生成相应的雪碧图和样式文件&#xff0c;支持retina图&#xff0c;可以内嵌base64 编码格式的图&#xff0c;支持不同的图片格式和有不同的图片引擎可以选择。sprity 的前身是css-sprite,sprity的 git地址 sprity的…

团队项目第二次冲刺(4)

已经做到两个界面的链接。 今天对用到的数据进行定义及对程序进行完善。 遇到的问题&#xff1a;在进行页面之间的连接时用到的intent语句运用不好。出现了很多次的bug。转载于:https://www.cnblogs.com/cuipengbo/p/4586519.html

itil v4和v3的区别_ITIL从v3到v4 - 这是新的ITIL

ITIL 4即将发布(原计划2019年1月到3月)&#xff0c;v4的领域要大得多&#xff0c;重点放在业务和技术领域&#xff0c;比如我们要如何运作&#xff0c;以及如何通过敏捷&#xff0c;DevOps和数字化转型在未来发挥作用?十年前&#xff0c;比特币推出&#xff0c;詹姆斯卡梅隆发…

面试题:根据Unix时间戳计算时间

根据Unix时间戳计算时间&#xff0c;不分年月大小&#xff0c;每月三十天&#xff0c;每年按360天计算。开始时间1970/01/01 00:00:00,输入秒数&#xff0c;显示时间 思路一&#xff1a;进位&#xff0c;60秒进1分钟&#xff0c;60分进1小时&#xff0c;24小时进1天&#xff0…

华为荣耀6 H60-L02/L12(联通版)救砖包【适用于无限重启】

本帖最后由 HOT米粒 于 2014-11-16 20:43 编辑 华为荣耀6 H60-L02/L12&#xff08;联通版&#xff09;救砖包【适用于无限重启】说明&#xff1a; 1、本工具包用于华为荣耀6 H60-L02&#xff08;联通版&#xff09;&#xff1b; 2、本工具适用于在Honor Logo 无限重启的童鞋恢复…