这是距上次插件向导安装配置完毕以后的插件编写经历,其中遇到了不少问题。由于对3DMAX的接口了解很少,很多资料都是从网上整理的。很多资料需要自己筛检。

1.插件向导安装完毕以后就可以创建3Dmax导入插件的工程了,FileImport类型;其中的主要需要编辑的函数有几个,3DMax会在编译的时候发出提示信息:

其中重要的有const TCHAR *AnimationImp::Ext(int n)是设置导入文件后缀名称的。int AnimationImp::DoImport(const TCHAR *filename,ImpInterface *i, Interface *gi, BOOL suppressPrompts)是导入的实现;

2.接口i是导入接口,可以用它来设置一些动画播放范围等参数,gi是3Dmax的全局接口可以调用很多3Dmax的接口。

3.在DoImport函数里面实现自己的导入:

(1)从filename指向的文件里面按自己的格式读入文件内容。

(2)

//帧数
 unsigned NumFrame;

//每一帧间隔秒数

unsigned SecFrame ;

//骨骼节点数目

unsigned NumBone;
 //帧间隔时间
 TimeValue TimeFrame = SecToTicks(SecFrame);

//设置帧播放范围ticks

Interval AnimateRange = Interval(0,(NumFrame-1)*TimeFrame);

i->SetAnimRange(AnimateRange);

//设置帧间隔ticks

SetTicksPerFrame(TimeFrame);

//挂起动画

SuspendAnimate();

//开始录制动画

AnimateOn();

上面这些步骤是必须要做的。

//开始一帧一帧的导入操作

for (int iFrame = 0;iFrame<NumFrame;iFrame++){

INode * pNode;

for (unsigned iNode = 0;iNode<NumNode;iNode++){

if(iFrame==0){

//创建每个骨骼的节点,在这里一定要注意,我开始就犯错了,每一帧都创建了这些节点,

//其实只需要第一帧的里面创建并存储起来就OK了,这样的话以后的帧只是找到对应的节点,做矩阵变化就行了。
Object *pBone = (Object*)gi->CreateInstance(GEOMOBJECT_CLASS_ID  ,BONE_OBJ_CLASSID);
pNode = gi->CreateObjectNode(pBone);

SkeletonINode.push_back(pNode);

//通过对象获得节点

}else{

pNode = SkeletonINode[iNode];

}

pNode->SetName("");

//设置节点CurrentTime点的世界矩阵,包括坐标和旋转,这里需要注意的是Matrix3的row[3]是trans坐标的x,y,z;

//在计算世界坐标的的时候需要跟父节点的坐标矩阵乘以本坐标点的矩阵信息

//这里要注意矩阵一定要计算正确,不然导入以后一团乱

//Tm当前矩阵信息

INode * ParentNode = pNode->GetParentNode();

WorldMatrix = Tm * ParentNode->GetNodeTM(CurrentTime);

pNode->SetNodeTM(CurrentTime,WorldMatrix);

//把节点连接在父节点上

ParentNode->AttachChild(pNode);

//其中可以用下面2个成员函数控制骨骼和节点显示与否

pNode->ShowBone(1);

pNode->Hide(TRUE);

}

}

//恢复动画

ResumeAnimate();

3DMax导入插件的编写(二)相关推荐

  1. 3DMAX导入插件的编写(一)

    在使用3DMAX2010+VS2008编写3DMAX骨骼导入插件的时候遇到的需要注意的问题: 1.3DMAX2010最好是下载英文版本的,因为我下载了几个中文版本的都是不带SDK的. 2.现在完以后在 ...

  2. 3DMAX导出插件的编写

    原文链接: http://liweizhaolili.blog.163.com/blog/static/162307442013117731953/ 作为3D开发人员,特别是3D引擎开发人员,经常会接 ...

  3. UE4 使用UnrealDatasmithMaxExporter插件解决3DMax导入ue4坐标问题

    当需要从3DMAX导入大量模型或导入整个场景到UE4时.这时逐个修改物体的坐标问题是个很麻烦的事而且还不一定准确,所以UE4也提供了一个插件可以从3d max 无损导入到UE4,可以导入整个场景也可以 ...

  4. 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

    标题:从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11155 ...

  5. idea从插件市场或者外部插件库导入插件的方式

    我们平时在使用idea进行开发时,会用到一些插件来辅助开发或增强某些功能.选好合适的插件能帮助我们提高开发效率,事半功倍. 以下提供从idea内部自带的插件市场下载插件和从idea外置插件库导入插件的 ...

  6. SQLMAP插件tamper编写与使用

    今天继续给大家介绍渗透测试相关知识,本文主要内容是SQLMAP插件tamper编写与使用. 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次 ...

  7. 【Gazebo入门教程】第六讲 控制器插件的编写与配置(下)

    [Gazebo入门教程]第六讲 控制器插件的编写与配置(下) \qquad 文章目录 [Gazebo入门教程]第六讲 控制器插件的编写与配置(下) 一.系统插件 二.Velodyne传感器插件 1. ...

  8. [arcgis插件]gis二次开发 报备工具:SHP转TXT文本、TXT转SHP插件

    [arcgis插件]gis二次开发 报备工具:SHP转TXT文本.TXT转SHP插件 [2022.09.28版本更新] 1.shp转txt文件: 选择图层:选择面图层 保存路径:设置一个文件夹路径,可 ...

  9. 【Gazebo入门教程】第五讲 控制器插件的编写与配置(上)

    [Gazebo入门教程]第五讲 控制器插件的编写与配置(上) 文章目录 [Gazebo入门教程]第五讲 控制器插件的编写与配置(上) 一.控制插件的使用方法 1. 插件简介 2. 插件编写流程 二.模 ...

最新文章

  1. EBS form日历可选范围设置(calendar.setup )介绍
  2. 搞个996或247,你的团队就是互联网团队了?
  3. 【项目实战】基于python的申请评分卡模型
  4. Vue中使用v-for实现一对多数据的2层和3层嵌套循环
  5. iframe内嵌框架自适应高度
  6. HTTP/2 流量调试
  7. 《知易行难》扩展练习
  8. treeview 文字垂直方向_word文本排版技巧:改变文字方向的这些方法,你知道吗?...
  9. CIO众论:转型路径和新技术实践
  10. drools 将添加switch支持
  11. 推荐一个可以减少开发量50%的插件!
  12. 戴尔r510服务器修复,DELL R510服务器宕机案例(1)
  13. 自定义填充图案插件 cad_20个超实用天正CAD技巧,效率递增10倍,设计院师傅都在用...
  14. RGMII接口(KSZ9031)
  15. Oracle 自带管理工具
  16. 计算机在档案部门应用范围,计算机在档案管理中的应用
  17. cpu功耗排行_常见NAS CPU处理器性能排行榜(简单天梯图)
  18. 计算机安全模式无法启动,电脑无法启动,电脑安全模式进不去解决方法大全?...
  19. 电网大屏嘻哈分析之 ---- 要想 GDP 数据好,用电绝对不能少 ---- 你信不信篇
  20. 马斯克称“很快”将会提高纯视觉Autopilot系统最高限速

热门文章

  1. 深入探究 WinRT 和 await
  2. PLC数据操作系列之构造不同应用场景的缓存栈FIFO(算法详解)
  3. 重做红楼梦的数据分析-判断前80回后40回是否一个人写的
  4. Cadence Allegro学习之UI界面+创建常见表贴封装
  5. 帝国CMS仿精美的茶杯狐电影网站源码+手机电脑自适应+电影电视剧动漫演员剧情综艺
  6. php+分针和时针重合,时针、分针和秒针重合问题
  7. 基于 SIMULINK 平面五杆机构运动学仿真
  8. mysql 圆周率_mysql - π=3.1415926 - 博客园
  9. 运维学shell还是python_运维DBA要不要学python
  10. GetData Graph Digitizer v2.2.5 for Win 多语言 图像数字化