3Ds MAX骨骼动画导出插件编写
- 格式:pdf
- 大小:269.86 KB
- 文档页数:10
RealFlow 和RealWave 是目前PC 机最好的专用于流体力学模拟的软件,可与包括3ds Max 在内的五款三维软件接口,可将动画场景导入RealFlow 进行碰撞计算,再将得到的粒子和液体模型输出到三维软件中,进行最终渲染,完全没有兼容性的问题。
提供包括倒在杯子中的水、蜡烛流下的液体、气态流动、液体与物体真实碰撞、几种液体混合等在内的真实的、高速的流体力学动态模拟,产生的效果接近高速摄影机拍摄到的水流效果。
RealFlow 和RealWave(流体动力学插件)Realflow和RealWave界面RealFlow 生成的粒子效果可以进行像3ds Max 普通粒子一样进行旋转碰撞、粒子替代和运动继承等操作,可以引入粒子系统模拟多种不同的流体,它基于真实的流体动力学方程,完全CPU 增强,流体的行为取决于粘质、压力、延迟因素等参数,使RealFlow 模拟达到高度真实。
RealWave 可仿真模拟物体与液体的碰撞涟漪效果,可模拟海面、落入物体后水面泛起的涟漪、行驶在水中的船(包括破浪泛起的粒子水花和产生的水面拖尾)。
RealFlow和RealWave实例【摘要】在使用3ds Max 软件进行影视动画制作时,经常会应用到外部插件,本文总结了常用的七个外部插件的特点和操作要点。
这些插件包括:Realflow 和RealWave(流体动力学插件)、C A T (多足动物骨骼系统)、Bones Pro(肌肉蒙皮插件)、Shag:Hair(毛发插件)、DarkTree(程序化材质纹理插件)、AfterBurn (烟雾效果插件)和Phoenix(火焰超现实仿真插件)。
【关键词】3ds Max |外部插件|影视动画|特点|操作3ds Max影视动画制作常用外部插件CAT全称Character Animation Toolkit,是一套专业的角色动画设计包。
这个强大的插件专门用于增强3ds Max的角色动画功能,集非线性动画、I K/F K工具、动画剪辑管理等强大本领于一身。
插件格式介绍:首先需要说明的是,所有外部插件只能对应相应版本的Max,各版本之间不能通用。
除了大型特殊插件,所有外部插件基本都存放于Max安装所在的Plugins和Stdplugs目录下。
Stdplugs 用来存放 3DS Max自身的插件(MAX 的各项功能也是通过插件的方式实现的);外部插件往往被放置在 Plugins 文件夹中。
3DS MAX 外部插件一般表现为几十K、几百K的*.dlo 、*.flt 等文件。
下面详细地列出了各种文件扩展名的含义:*.dlo 位于 Create 面板中,将被用来创建物体*.dlm 位于 Modify 面板中,属新的编辑修改器*.dlt 位于材质编辑器中,是特殊的材质或者贴图*.dlr 渲染插件,在 File > Preferences 菜单的 Rendering 面板中,通过 Production 的Assign 按钮指;也可能位于 Environment 环境编辑器中,属特殊大气效果*.dle 位于 File > Export 菜单中,定义新的输出格式*.dli 位于 File > Import 菜单中,定义新的输入文件格式*.dlu 在 Utility 程序命令面板中,作特殊用途工具栏里*.flt 位于 Video Post 视频合成器中,属特技滤镜,被用来做后期处理*.dls 用于捕捉方面的设置*.dlc 位于Motion移动命令面板中,属于动画控制器或针对于动画控制器的工具*.dlb 其中的Shaders.dlb是作为渲染器类型的外挂*.dlk 用于渲染时预过滤*.bmi 位图文件的增强格式*.dlv 用于渲染特效*.dlh 用于渲染时取样*.dlx 用于系统中的外挂*.dlf 字体类型外挂插件安装方式:1. 标准安装:通常使用标准安装方式的插件都是官方发布的主要大型插件,如:Discreet 3DS Max主程序、Max4.2 Update、Character Studio、Mental Ray 、Reactor ,以及一些其他主要厂商主力推出的插件,如:Cebas 系列、Vector 3D 、Cult 3D Exporter、Hemisphere Deep Paint 3D With Texture Weapons等等。
3Dmax骨骼绑定教程:为角色添加动画效果步骤一:准备工作1. 确保你已经安装了3Dmax软件,并打开一个新的场景。
2. 导入你的角色模型(可以是一个已经完成细节雕刻的角色模型,也可以是一个简单的基础模型,后续可以进行细节添加)。
3. 将场景视图调整为合适的角度,以便于观察和编辑模型。
步骤二:创建骨骼系统1. 选择"Create"(创建) -> "Systems"(系统) -> "Bones"(骨骼)。
2. 在视图中点击一个适当的位置以创建第一个骨骼。
3. 点击鼠标右键,选择"End Create"(完成创建)。
4. 通过继续点击鼠标右键创建其他相关骨骼,构建整个骨骼系统。
5. 使用移动和旋转工具调整每个骨骼的位置和角度,使其适应你的模型。
步骤三:绑定骨骼到模型1. 选择你的角色模型。
2. 在"Modify"(修改)选项卡下,找到"Skin"(蒙皮)工具,并点击。
3. 在弹出的对话框中,点击"Add"(添加)以添加你创建的骨骼系统。
4. 通过拖拽鼠标选择你要绑定的骨骼。
5. 点击"Add"(添加)。
6. 重复以上步骤,将所有骨骼绑定到模型上。
步骤四:权重绘制1. 在"Skin"(蒙皮)选项卡下的"Vertex"(顶点)面板中,找到"Edit Envelopes"(编辑权重)。
2. 点击"Paint Weights"(绘制权重)。
3. 选择一个骨骼,并选择适当的画笔大小和强度。
4. 在模型上点击和拖动鼠标以绘制权重。
5. 重复以上步骤,为每个骨骼绘制权重。
步骤五:测试动画效果1. 在时间轴上选择一个时间范围,用于测试你的动画。
2. 在"Animate"(动画)选项卡下,找到"Auto Key"(自动关键帧)工具,并点击以激活关键帧录制。
MD2是Quake2中使用的模型文件格式,由于其比较简单,容易实现,所以应用很广,是一种经典的动画模型格式。
该文件格式由2部分组成:一部分是文件头,包含了文件ID号、版本号和有关模型的各种数据的起始地址等;另一部分是文件的主体,包含了有关模型的各种数据,如顶点数据、纹理数据、法向量数据等。
通过3DMAX软件你可以自己制作MESH格式的3D模型和贴图,然后转化成MD2格式文件。
需要借助一个小插件md2exporter。
此插件开发较早,通过实践,可以用在当前流行的MAX7或者MAX8上,方法如下下载一个md2exporter插件压缩包,非常小几百K解包,注意里面的MS后缀文件,这就是manscripts文件把它放入你安装3DMAX目录下的scripts目录下,MAX装在哪个区只有你自己知道,一般都是C区默认进入MAX,打开插件面板加载MD2exporter插件,新手按如图步骤,加载成功底下会出现md2exporter对话面板,里面有几个简单选项,可以发现,都是针对动画设置的,钩选save animation,这样才可以保存动画,帧数设置,还有一个framestep 是帧速率设置,通常情况默认导出后会出现动画速度与PV3D里表现不一致,就可以调整这个选项加大倍数,动画速度就会加快。
选中你要导出的模型,export设置下导出路径,OK你就得到一个MD2文件,格式非常小,记得把你绘制的贴图带上。
在导出的时候如果跳出"model not mesh"警告,就说明你的模型不是MESH的,可能是polygon四边形的,请在制作前保证模型是MESH再绑定和加动画。
玩PV3D的大部分都是net ,flash设计人员,可能对3D部分不是很熟悉,此帖希望能对大家有点帮助。
谢谢达达兄的交流平台。
3Dmax骨骼动画制作:给你的角色注入生命随着科技的不断进步,3Dmax这种3D建模和动画软件被广泛应用于电影制作、游戏开发和虚拟现实等领域。
其中,骨骼动画是制作3D角色动作的一种常见方法,通过给角色添加骨骼和控制器,实现角色的自由活动和表达。
本文将介绍使用3Dmax制作骨骼动画的步骤,帮助你给你的角色注入生命。
步骤一:准备工作- 打开3Dmax软件,并导入你已经制作好的角色模型。
- 确定角色的基本姿势,例如站立、行走、奔跑等。
步骤二:添加骨骼- 在3Dmax的菜单栏中选择“创建” - “系统” - “骨骼”。
- 通过鼠标点击在角色模型上创建骨骼链条,骨骼的数量和位置要与角色的动作需求相符。
- 使用“调整”工具栏中的“移动”、“旋转”和“缩放”功能来调整骨骼的位置、角度和大小。
步骤三:给骨骼添加控制器- 选中骨骼链条,点击3Dmax的菜单栏中的“工具” - “控制器” - “点控制器”。
- 在角色模型的关键部位(例如关节处)创建点控制器,用于控制骨骼的移动和旋转。
- 可以使用“智能约束”功能将骨骼与控制器相连,实现控制器对骨骼的实时调整。
步骤四:设置骨骼的权重- 选中角色模型,并转到3Dmax的“编辑” - “多边形” - “编辑多边形对象”面板。
- 在面板中选择“顶点”模式,逐一选中模型上的顶点。
- 调整顶点的权重值,来设置骨骼对顶点的影响程度。
权重值越高,骨骼对顶点的影响越大。
步骤五:制作角色动画- 打开3Dmax的“动画”面板,选择合适的帧范围和帧率。
- 使用关键帧的方式制作骨骼动画,将角色从一个姿势变换到另一个姿势。
- 通过调整控制器的位置和角度,来控制骨骼的移动和旋转。
- 可以使用3Dmax提供的曲线编辑器来调整动画的缓动和流畅度。
步骤六:优化和渲染动画- 在动画制作完成后,对动画进行优化,检查是否有不自然的动作或者交叉问题。
- 使用3Dmax的渲染器来渲染动画,生成最终的动画效果。
- 可以通过调整光照、材质和摄像机设置,来增强场景的逼真度。
3Dmax动画导出与渲染视频教程3D Max是一款功能强大的三维建模和动画软件,它能够创建出令人惊艳的动画效果。
在设计制作完成后,我们通常需要将其导出为视频文件,以供其他人观看或在其他平台上使用。
本文将详细介绍3D Max动画导出与渲染的步骤,帮助读者快速掌握该技巧。
一、准备工作1. 确保你已经安装了最新版本的3D Max软件。
2. 确保你已经完成了动画的制作和编辑,并保存了相应文件。
二、设置导出参数1. 打开3D Max软件并加载你的动画项目。
2. 点击顶部菜单栏中的“文件”>“导出”选项。
三、选择导出格式1. 在弹出的导出窗口中,选择你希望导出的文件格式。
常见的视频格式包括AVI、MP4等。
2. 如果需要调整视频的分辨率、帧率等参数,可以在该窗口中修改。
一般情况下,选择默认设置即可,但根据具体需求可以进行适当调整。
四、选择导出路径1. 在导出窗口中,选择你希望保存的文件夹和文件名。
2. 点击“保存”按钮,确认导出路径和文件名。
五、设置渲染参数1. 在3D Max软件界面的右侧面板中,找到“渲染设置”或“渲染设置器”选项。
2. 点击该选项,打开渲染设置窗口。
3. 在渲染设置窗口中,选择你想要的渲染器。
常见的选项包括“默认扫描线渲染器”或“mental ray渲染器”等。
4. 根据具体需求,可以在该窗口中对光照、材质等渲染参数进行调整。
六、开始渲染1. 在渲染设置窗口中,点击“渲染”按钮。
2. 3D Max软件将开始渲染动画,在处理速度和电脑性能允许的情况下,等待渲染完成。
3. 渲染完成后,你可以在所选择的导出路径中找到导出的视频文件。
七、测试和调整1. 在完成导出和渲染后,你可以观看并检查导出的视频文件。
2. 如果发现任何问题,例如画质不佳或渲染效果不符合预期,可以回到3D Max软件中进行相应调整,重新导出和渲染。
八、保存源文件和相关资源1. 在整个导出和渲染过程完成后,不要忘记保存3D Max项目文件和所使用到的资源文件,以备后续需求或修改使用。
用Maxscript导出3ds Max中骨骼动画数据
何昌霖
【期刊名称】《计算机时代》
【年(卷),期】2010(000)011
【摘要】介绍了从3ds Max导出骨骼动画数据的理论和方法.首先论述了在Max 环境与Direct3D环境中坐标系统的差别、坐标变换原理及其方法,然后介绍了用Maxscript以x文件格式提取Max中的网格、材质数据和骨骼动画关键帧数据的方法.最后对保存数据的基本方法作了简要叙述.
【总页数】3页(P19-21)
【作者】何昌霖
【作者单位】右江民族医学院计算机教研室,广西百色533000
【正文语种】中文
【相关文献】
1.3DS MAXScript在水工结构虚拟现实模型中的应用 [J], 魏群;王宁波;王诗玉
2.3DS MAX及MAXScript在汽车内饰材料定制设计系统中应用 [J], 赵秀栩;李刚炎;杨明忠
3.用MaxScriot从3DS Max导出骨骼动画数据 [J], 何昌霖
4.3DS MAX中数据导入导出问题研究 [J], 许伟
5.MAXScript为3DS Max个性化UI设计过程 [J], 李钰
因版权原因,仅展示原文概要,查看原文内容请购买。
3ds Max插件制作方法3DS Max 插件制作的学习方法要从3ds Max中导出场景信息,大概有两种方式:1.利用3ds Max的sdk制作插件。
2.利用3ds Max的Max Script编写场景输出脚本。
两种方式各有优劣,这里仅叙述我用了数天研究3ds Max SDK并制作插件的学习心得。
1.前期环境配置工作。
首先肯定要安装带SDK的3ds Max,我安装的是3ds Max7。
安装后在maxsdk\help 下有个sdkapwz.zip,把这个文件解压到VS 6.0或VS 2003的application wizard路径下,启动VS就会有3ds Max plug-in的应用程序向导来生成插件程序的框架。
2.制作插件需要了解的几个基本概念。
2.1 我所了解的插件原理是:3ds Max会公布一些接口,插件制作者需要做的是实现这些接口。
例如利用向导生成一个用于场景导出的插件。
就会发现在生成的程序中有一个类继承于class SceneExport,而SDK 中关于这个接口的描述是:This is a base class for creating file export plug-ins. The plug-in implements methods of this class to describe the properties of the export plug-in and a method that handles the actual export process.再看下面的函数说明,可以看到函数是虚函数的方式声明的,所以必须要将其所有的函数进行实现。
2.2 3ds Max是怎样识别插件的接口?还是以上面的场景到处插件为例,程序中还会生成一个继承于ClassDesc2的类,这个类会实现一些关于类的ID,层次信息处理的函数。
估计系统就是根据这个识别处我的插件的接口,没有具体去研究,只了解个大概。
3DMAX5动画导出及模型,动画数据格式分析1 导出⽅法导出unity使⽤的fbx⽂件⽅法⼀般采⽤物体和(⾻骼)动画单独导出的⽅式,物体中不含动画但应该含有相关⾻骼索引,动画中不包含模型(减少资源体积),每个动作单独⼀个动画(这样如果⼀个动作出问题,只需要只对这个动作单独改动即可,美术修改⽅便)导出模型:选中模型和⾻骼,导出选中对象,在弹出框中去掉动画选项(不选⾻骼就不能⽤动画)导出模型时如果要贴图必须把嵌⼊的媒体选项勾上,如果不勾选,3dmax不会⾃动⽣成.fbm格式的贴图也可以不导出贴图,然后把贴图单独放⼊unity,⼿动给模型材质附上贴图导出模型时⼏何体选项⼀个都不选貌似也可以(这个有什么影响以后再试),另外导出模型时动画,摄像机,灯光等都不需要,以unity中的为主单位选厘⽶,另外在3dmax中可以通过菜单-⾃定义-单位设置把单位设置为厘⽶轴向问题显⽰上max(右⼿系)与unity(左⼿)对应关系记录导出时为了保证到unity中旋转没有x轴-90度的问题,要做如下设置缩放问题导出动画:选中⾻骼,导出选中对象(设置可以关了模型全部选项),导出的⽂件名a@b.fbx a是之前导出模型名,b是⾃定义动作名。
动作和模型名称的对应关系在unity中会⽤到关于3dmax默认cs⾻骼与unity⼈型动画不匹配的问题说明直接在max中拖⼀个cs,直接导⼊unity,选择⼈型动画,直接报错原因是max默认⾻骼⽗⼦关系,跟unity⼈型要求不同,感觉上是max特殊了⼀点max中的关系是盆⾻-脊椎0-⼤腿,脊椎-脖⼦-肩膀unity中⼈型的关系需要时盆⾻-⼤腿脊椎-脖⼦脊椎-肩膀这个直接在max中调整下⾻骼⽗⼦关系就能解决上⾯这个强制改变cs⽗⼦关系的⽅法不可⾏,会导致⼀个奇怪的问题,⽐如改完⽗⼦关系后,上半⾝的⾻骼随便转动⼀下,ctrl+z不再恢复17.12.30 ctrl+z的问题原因是没关闭⾻骼体型按钮,调动画之前先关闭这个另外不重新指定⽗⼦⾻骼也能使⽤unity⼈型,上⾯报的只是警告,unity中重新制定下重定向⾻骼就好注意Animation下⾯的Deformations(变形)这个选项要打开,否则动画在unity会报空指针2 模型数据格式3 ⾻骼与动画数据格式。
如何编写自己的3DsMAX骨骼动画导出插件 潘李亮 2007-12-7 xheartblue@163.com
一 简介 在3D引擎中,骨骼动画系统是非常重要的一个组成部分,虽然在一个游戏的真正开发过程中,一个优秀的游戏引擎也许不需要用户去关心它的骨骼动画系统是如何实现的,但是还是有很多人希望了解这样的一个技术。 一个商业化的骨骼动画系统包含的组件是很多的,比如有DCC(Digital Content Creator 数字内容创建工具,比如3Ds MAX , Maya等)插件,蒙皮计算程序,蒙皮渲染程序,动作计算程序,表情系统,柔体系统,音唇同步,以及针对物理系统的接口等。其中DCC插件包含DCC的导出插件和其他专用数据生成插件。 本文将会介绍骨骼动画系统里的一个基础部件:3Ds MAX 的骨骼动画导出插件。2005年底的时候我在csdn的游戏开发频道里发过一个在linux下可以运行的骨骼动画程序,使用的是自定义的骨骼动画模型。从程序发布以后,就有很多人问我关于3Ds MAX插件的编写和骨骼动画数据管理等问题。网络上相对这方面的资源比较少,希望本文对那些在寻找和学习这方面内容的读者能有一定的帮助。另外鉴于作者水平有限,文中难免出现错误的地方,欢迎指正与批评。 本文是介绍如何编写3DsMAX插件的文章,所以假设读者有一定的骨骼动画原理基础和图形编程经验。如果对这两块还比较陌生的读者,建议先阅读相关资料。
二 3Ds Max SDK和插件系统 选择编写3DsMAX(以下简称MAX)来导出的数据的原因是MAX拥有强大的建模能力,并且通过它美工可以方便的修改动作,材质等属性。同时个人感觉MAX的SDK对初学者来说虽然有些晦涩。但是这个SDK还是能非常直接的反映出MAX本身的工作流程的,在熟练以后,使用起来还是比较顺手的。 最新版本MAX9的MAXSDK包含在安装光盘里,在安装完MAX后直接安装SDK,并在工程里添加maxsdk的包含路径和库的路径就可以开始编译max插件了。MAX SDK还提供了3Ds Max Help for Visual Studio,这个帮助系统可以集成到Visual Studio .NET的帮助系统中,非常方便。建议在安装的时候一起装上。 MaxSDK主要目的就是用来开发MAX插件,虽然Max也提供了MaxScript,也可以用来做插件,但是对C++程序原来说,MaxSDK则更顺手一些。 Max插件根据用途分为好几种,每种对应不同的扩展名,在游戏开发中,我们通常比较关心三种类型的插件,他们分别是: 导入/导出插件,对应扩展名为dli/dle, utility 插件,对应扩展名为dlu , 以及扩展名为dlm的modifier。导入导出插件基本上MAX与其它工具交互的接口。Utility插件则可以为MAX增加很多操作功能面板。Modifier则是3DsMAX 3DsMax自带的插件放在X:\3DsMax\maxsdk\stdplugs目录下,而我们自己编写的插件通常会放到X:\3DsMax\maxsdk\ plugins目录下。只要把插件放到这两个目录下,Max在启动的时候就会自动加载你的插件。很多初学者可能会问dlm/dle这些插件是怎么生成的呢?其实这些都是一些标准的dll程序,只是扩展名不同而已。跟编译一个普通的Windows DLL没有区别。 初学MaxSDK最好的例子应该就是MAXSDK自带的sample。在maxsdk的安装目录下可以找到,一般是X:\3DsMax\maxsdk\samples 下。这个目录下已经对插件的种类进行了分类。一般在做骨骼动画导出插件的时候,我们不会选择导出插件而是选择utility插件,这样做的目的是ultility插件在max启动的时候就处于激活状态, 而导出插件则只会在用户选择export命令的那一刻,并且这些插件都可以访问到MAX的整个环境,因此,使用utility插件会让用户更加的方便,本文的例子就是采用utility插件。
图(1)utility插件例子,XReal3D 的模型导出插件 三 构造第一个3Ds Max 插件 本节我将讲述如何快速的建立一个utility插件的框架, 因为关心的是导出插件本身的功能,而不是插件框架本身,因此我给大家提供一个个比较简洁的方法:使用3dsmaxPluginWizard. 这是MaxSDK提供的一个组件,位于X:\3dsmax\maxsdk\howto\3dsmaxPluginWizard下, 仔细阅读一遍这个目录下的ReadMe.txt文件的Installing一小节,就可安装好3DsMaxPluginWizard. 这时候打开Visual Studio 2005.在新建工程中就可以看到3Ds Max Plugin Wizard一项,选择后,看到标签页一共有三页,在第一页Plugin-Type里,选择Utility项,在接下来的Plugin Detail里填入详细信息如图2所示. 图2 Max Plugin Wizard 最后在Project Detials 选项卡里填入maxsdk的路径,插件输出路径和3dsmax.exe所在的路径就可以生成一个utility工程了。 生成的工程仅仅是一个架子,它包含了两个类和一个IDD_PANEL的对话框。第一个类MyMaxSkinExporter是从UtilityObj派生下来的,代表了插件本身。另外一个类从ClassDesc2派生,用来描述这个插件的一些信息。IDD_PANEL则是我们插件的主界面,我们可以简单的理解它就是我们插件的主窗口。 MyMaxSkinExporter有两个重要的函数: BeginEditParams(Interface *ip,IUtil *iu)和EndEditParams(Interface *ip,IUtil *iu)这两个函数。BeginEditParams可以简单的理解成插件的初始化函数,EndEditParams则在插件退出时候被调用。参数Interface *ip 则代表整个Max对象,用它可以访问到MAX程序的所有功能。 编译这个工程,一个简单的utility插件就已经生成了,你可以在刚才Project Detials选项卡里填入的插件输出路径里找到生成的插件。
四 3Ds MAX的场景组织和几何管道 要编写一个导出骨骼动画的插件,必须先了解MAX是如何组织场景的,并了解MAX中一个mesh对象从建立到最终输出都经历那些阶段。下面首先介绍一下MAX的场景组织。 MAX的整个场景是一个树状结构,树的节点用INode来表示,整个树的根节点可以通过Interface::GetRootNode来获得,场景中的所有物体都是INode。INode中的NumberOfChildren函数和GetChildNode则用来访问INode的子节点。要遍历
整个场景中对象,只需要通过Interface::GetRootNode和GetChildNode做一个递归循环就可以了。如果仅仅是想获得在视口中选定的物体,则可以使用Interface::GetSelNodes函数。 INode仅仅是一个虚拟的节点,它本身仅仅包含一些标记和变换信息,并不表示实际的Object。实际的Object需要附着在INode上,并以INode的坐标系为Object的本地坐标系。Max中常见的Object有形状(各种参数曲线),Camera ,Mesh等。Object有自己的变换矩阵(TM), 在很多情况下这个矩阵都是单位矩阵。 INode的变换矩阵可以通过INode::GetNodeTM来获得,而附着在INode上的Object的变换矩阵则通过INode::GetObjectTM来获得,因为Object相对于Node的变换矩阵通常是单位矩阵,GetNodeTM和GetObjectTM获得的矩阵通常也是一样的,但是在必要的时候一定要加以区别。关于INode和Object的变换矩阵问题的详细讨论可以参考我blog上的一篇文章:http://blog.csdn.net/Nhsoft/archive/2005/01/06/241629.aspx
图3 几何管道实例(图来自3Ds Max 9.0 Help) 接下来我来看一下3DsMax一个几何物体的Pipeline。前面说过Object是附着在INode上的,在MAX里,Node有一个Object Reference的指针,指向一个物体对象。熟悉MAX的操作方式的读者都知道,我们在MAX里建立一个对象后,可以在上面添加各种修改器-Modifier。在Max的几何管道中,我们建立的对象通常称为Base Object。所有施加在这个物体上的修改器形成一个修改器堆栈-ModStack。BaseObject经过这个ModStack后形成一个新的Object Reference。ModStack中的每个Modifier都是输入一个Object Reference输出一个Object Reference, 并且在应用第一个Modifier的时候会自动在几何管道里插入一个Derived Object。最终INode的Object Reference将指向这个Derived Object。 Modifier在管道中的应用实例是ModApp对象,一个ModApp代表一个应用在Object上Modifier修改,ModApp包含一个ModContext的数据对象,Modifier用ModContext中的数据来对Object进行修改,以生成最终数据。 修改器按照应用的坐标系不同分成局部空间修改器和世界空间修改器(World Space Modifier)。局部空间修改器仅仅在Object的局部空间中修改Object,不会对坐标系造成影响。世界空间的修改器比如水波纹修改器则要求先将物体变换到世界空间后再进行修改,修改完成后的坐标也是世界空间的坐标。相对来说处理世界空间修改器会麻烦的多。(如果一个物体应用了世界空间修改器,则通过Mesh对象取得的坐标已经是世界坐标
系中的了。不需要再乘以INode::GetObjectTM了)。
五 导出骨骼动画数据 了解了MAX的场景管理和几何管道以后,我们就可以很方便的建立一个如何取得MAX场景中定点数据的流程了。 骨骼动画系统,首先应该包括物体的蒙皮数据和顶点与骨骼的绑定信息。分两部分两介绍皮肤数据的导出。第一步,我们要导出蒙皮数据,为了简单起见,在这里只导出蒙皮的位置,法向量与切向量纹理坐标等信息留给读者自己去研究。在3DsMax里。要