编写3ds max插件时遇到的问题总结
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/
这几天在给公司的美术编写3ds max 2009使用的插件,遇到了一些问题,在此记录一下解决方案
一、调试3ds max插件的一个小技巧
这个我是参考了其他人的博客:http://blog.csdn.net/zhengkangchen/article/details/6424806
简单来说就是在3ds max sdk提供的接口的基础上再做一层封装,将实际的插件逻辑写在一个新的DLL里,通过动态加载、卸载这个新的DLL,达到不关闭3ds max就更新插件的目的。
在使用过程中我遇到了一个小问题——卸载DLL时会导致3ds max崩溃,后来发现是因为在DLL中返回了字符串常量指针,导致FreeLibrary之后3ds max继续尝试访问该字符串常量指针时崩溃。
解决方案是将相应的字符串常量储存到一个静态的string变量中,避免3ds max直接访问DLL中分配的内存。
二、将布料动画转化为Morpher动画导出
3ds max 2009支持将布料动画转化为关键帧动画,不幸的是这种关键帧动画并不能使用3ds max sdk提供的morpher modifier接口直接导出,因此需要另外使用其他的方法导出。
解决方案是使用Interface提供的SetTime接口获取每一个采样时间点中模型顶点的位置,再保存为自己所需要的数据格式,这个过程中有几点需要注意:
- 每次SetTime之后都要重新初始化IGame,否则会导致获取的数据错乱
- 每次SetTime之后都要调用Mesh节点的EvalWorldState接口,更新网格的顶点,否则只能获取到第一次SetTime的数据
- 通过这种方式获取的顶点数据是应用网格Position/Rotation/Scale变换之前的顶点数据,如果网格包含相应的空间变换,还需要自行将顶点乘以相应的矩阵
编写3ds max插件时遇到的问题总结的更多相关文章
- 学习3ds max插件开发过程中的一些小结
1. 3ds max是以树状结构来管理整个场景的,每个树节点类型为INode 2. Interface类很关键,可以通过其中的GetRootNode.NumberOfChildren和GetChild ...
- 万圣节福利:红孩儿3D引擎开发课程《3ds max导出插件初步》
ds max文件夹,插件文件夹以及3ds max的可执行程序文件夹: 位的,这里要改成x64,否则启动程序后3ds max会提示"不是有效的win32程序"之类的对话框. 然后要将 ...
- 摄像机内参相关(3ds max)
一般的原理参考:http://ksimek.github.io/2012/08/13/introduction/ 对于3ds max建模时使用的target camera,如果想得到它的内外参,可以利 ...
- 运行 3ds Max 时出现的性能问题
运行 3ds Max 时性能减慢或迟缓通常是由于视频配置冲突或内存分配问题引起的.关于性能问题的一大难点在于缩小范围确定问题原因.以下是一些限制 3ds Max 操作的常见情形,以及纠正这 ...
- 3ds Max从入门到精通
1. 软件的下载与安装 这里用的是3ds Max2009简体中文版 32位 在 Win7上运行记得打上sp2补丁,不然会有bug. 2. 3ds Max的历史 3ds Max可以用在动画和游戏,点云数 ...
- 转:折腾一晚上Bullet及Ogre相关工具的成果 -- 3Ds Max,Maya, blender, GameKit
起始目的很简单,整合Bullet及Ogre,找个能够生成.scene和.bullet文件的建模工具. 折腾一晚上Bullet及Ogre相关的东西,基本上就像爱迪生发明灯泡一样,得出了N个失败的教训,总 ...
- 【Unity】3.3 用3ds Max 2015制作模型并将其导入到Unity
分类:Unity.C#.VS2015 创建日期:2016-04-05 一.常用三维软件简介 由于游戏引擎本身的建模功能相对较弱,无论是专业性还是自由度都无法同专业的三维软件相比,所以大多数游戏中的模型 ...
- 3Ds Max制作克劳族少女教程
作者:Andrius Balciunas 使用软件:3ds Max, ZBrush 3ds Max下载:http://www.xy3dsmax.com/xiazai.html ZBrush下载:htt ...
- 3ds Max 2018 在安装后无法启动或出现不稳定
问题: 安装 3ds Max 2018 后,软件无法正常启动,或在打开后不久出现不稳定和崩溃. 原因: 有多种原因可能会导致这些错误: ▪ 3ds Max.Windows 更新和 ProSound.d ...
随机推荐
- centos7 最小化安装后的配置优化
echo #CENTOS7echo #1.最小化安装之后需要做的事echo 2.配置echo 2.1 安装网络yum install net-tools -y echo 2.2 更新机器名echo h ...
- eclipse上的.properties文件中文编辑显示处理
最近在对接银联备份金,将相应的SDK导入到eclipse后,打开.properties文件中文注释变成了如下样子,很不方便查阅参照: 平常开发我们希望看到的是如下样子,很直观能明确配置的参数代表的信息 ...
- handle 和module
<httpHandlers> <add verb="*" path="*" type="ClassLibrary831.TestHa ...
- Mysql中间件_haproxy在启动过程中报错_Starting proxy : cannot bind socket
在搭建好haproxy准备启动中,使用service命令的方式启动没有报任何错误,但是监听服务发现并没有想象的顺利,搜索各种帖子,参考对照发现,发现一条新的命令,^_^,试着用下面命令启动,惊喜~发现 ...
- 20145307第五次JAVA学习实验报告
20145307<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 实验名 ...
- 20145312 《Java程序设计》第2周学习总结
20145312 <Java程序设计>第2周学习总结 教材学习内容总结 1.1类型.变量与运算符 1.1.1类型 1.基本类型 整数:short(2字节).long(8字节).int(4字 ...
- 20145322 《Java程序设计》第7周学习总结
20145322何志威 <Java程序设计>第7周学习总结 教材学习内容总结 第十二章 如果使用JDK8的话,可以使用Lambda特性去除重复的信息. 在只有Lambda表达式的情况下,参 ...
- 20145327 《Java程序设计》第三周学习总结
20145327 <Java程序设计>第三周学习总结 教材学习内容总结 对象:存在的具体实体,具有明确的状态和行为. 类:具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属 ...
- C++求矩阵的鞍点
矩阵的鞍点就是指它在本行中的值最大,在本列中的值最小. 求解思路: 求出每行的最大值MaxRow以及每列的最小值MinColumn 保存行最大值的位置和列最小值的位置 如果行最大值得位置和列最小值的相 ...
- 学Git,用Git ①
本月开始接触到Git版本管理工具,觉得很有意思,在这里总结一下学习Git的一些心得体会. 要在Mac上完整的使用git进行版本管理,需要熟悉Mac终端操作命令和Git操作命令两种命令,索性两种命令加在 ...