编写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 ...
随机推荐
- 51Nod 1079
题目大意: 一个正整数K,给出K Mod一些质数的结果,求符合条件的最小的K.例如,K%2=1,K%3=2,K%5=3符合条件的最小的K=23. Input 第1行:1个数N表示后面输入的质数及模的数 ...
- spoj8222
地址: 题目: NSUBSTR - Substrings no tags You are given a string S which consists of 250000 lowercase la ...
- HDU - 4786 Fibonacci Tree (MST)
题意:给一张由白边和黑边构成的无向图,求是否存在一个生成树,使白边的数量为一个斐波那契数. 分析:白边权值为1,黑边权值为0.求出该图的最小生成树和最大生成树,若这两个值之间存在斐波那契数,则可以,若 ...
- ElasticSearch recovery过程源码分析
[ES版本] 5.5.0 [分析过程] 找到Recovery有6种状态 public class RecoveryState implements ToXContent, Streamable { p ...
- Tasks in parallel
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- ss+proxifier灵活控制网络代理
SS相比大家都知道,不多说. proxifier可能知道的不是很多(至少在今天之前我是不知道的...可能我孤陋寡闻吧) 之前用ss基本上就是chrome SwitchyOmega+SS实现chrome ...
- Python3.x:常用基础语法
Python3.x:常用基础语法 1,if else语句: 不执行if内的语句,需要用:pass if i>2: #跳过不执行 pass else: print("i= %s" ...
- nfs挂载
安装: yum install nfs-utils rpcbind 配置共享目录:vim /etc/exports /xxx/cloudcms *(insecure,rw,async,no_root_ ...
- chrome 获得点击按钮时的事件
初次了解浏览器高级点的功能,原来这么强 想了解点击一个网页的按钮时触发了什么事件,firefox chrome确实很强大,基本可以监控所有内容 以chrome为例: 在按钮上 右键检查 或者 F12 ...
- 20145302张薇 《Java程序设计》第二周学习总结
20145302张薇 <Java程序设计>第一周学习总结 教材学习内容总结 第三章 第三章讲的是基本类型,变量,运算符和基本条件语句. 基本类型分为: 整数:short(2 byte),i ...