3DSMAX 中的CS 骨骼动画插件初探-程序员宅基地

技术标签: 开发工具  人工智能  c/c++  


3DSMAX 中的CS 骨骼动画插件初探
王玉培 郑利平1
合肥工业大学计算机与信息学院VCC 研究室, 合肥 230009
摘要:首先介绍了3DSMAX 中的CS 骨骼动画制作方法,通过Biped 骨架可以快速方便的制
作两足动物的动画。并介绍了基于3DSMAX SDK 的插件开发,SDK 中类库的组织方式和3DSMAX
的场景组织,最后介绍了和3D引擎密切相关的骨骼动画导出插件的开发过程。
关键词:骨骼动画 插件开发 Biped
Preliminary Study on the CS Skeletal Animation Plug-in in
3DSMAX
WANG Yu-pei ZHENG-Liping
VCC Division, School of Computer & Information, Hefei University of
Technology, Hefei, 230009,China
Abstract: The method of CS Skeletal Animation in 3DSMAX is introduced firstly. Biped
animation can be accomplished quickly and easily by the Biped skeleton. Plug-in Development
based on 3DSMAX SDK, the organization form of SDK library and scene organization form of
3DSMAX are introduced secondly. The design of skeletal animation Export plug-in is described,
which is closely related to the 3D engine.
Keywords: Skeletal Animation Plug-in Development Biped
1 引 言
3D 图形引擎中角色动画是一个重要的组成部分,它在虚拟现实、电子游戏,甚至是
传统的动画制作中均扮演着极其重要的角色。如何实现一个良好的角色动画以引起越来越
多的研究者的关注[1]。目前的许多建模软件都可以快速高效的制作骨骼动画,如3DXMAX

8
和Maya 等,但是如何从这些软件中导出骨骼动画供3D 引擎使用,也是目前骨骼动画系
统的一个重要方面。
3D Studio Max,常简称为3DSMAX,是Autodesk 公司开发的基于PC 系统的三维动
画渲染和制作软件。在3DSMAX 软件系统下,最大的功能是制作高端的角色人物动画,
它集成了自身拥有的一套完整的角色制作及动画实现的工具和命令,并且完美地融合了第
三方的插件等诸多优点。Character Studio(以下简称CS)是3DSMAX 的一个及其重要的
动画制作组件,它可以方便快捷地模拟人物及两足动物的动作。
CS 由两个部分组成,即Biped 和Physique。Biped 是新一代的三维人物及动画模拟系
统,它用于模拟人物及任何二足动物的动画过程。使用Biped 来简单地设计步迹即可使人物
走上楼梯,或跳过障碍,或按节拍跳舞等。还可以把一种运动模式复制到任意一种二足动
物身上而不需要做重复的工作,这样对于诸如群组动画创作就变得轻而易举了。
3DSMAX 是一个开放性的系统,提供了简便的接口和丰富的类库支持。3DSMAX 提
供了两个层次的开发工具:MAXScript 和SDK。MAXScript 简单易学,使用方便,但是它
的限制很多,而且不能开发底层软件;SDK 则可以充分利用3DSMAX 的丰富的类库,对
3DSMAX 进行最为彻底的二次开发。用户通过SDK 中提供的CS 类库,可以开发出适合
自己的骨骼动画插件,常用的是根据3D 引擎的需要,开发合适的骨骼动画导出插件。
2 CS 骨骼动画插件工具介绍
生物是由骨架来支撑肢体,并通过肌肉的收缩和拉伸来控制骨骼的运动,从而产生各
种姿势和运动。在虚拟场景中,为了让角色的肢体能够灵活地运动,使用虚拟骨骼来控制
模型各肢体上的点,各部分的骨骼组成角色的骨架[2]。通过调整骨架,可使角色模型摆出
各种造型。
CS 中的Biped 提供了一套具有人类骨架特点的骨架系统,集成了正向动力学系统
(forward Kinematics)和反向动力学系统(Inverse Kinematics),可以给其骨架设置任意样
式的动作。Biped 的优点在于其骨架能够调整,可以精简枝节数量或是使其变得复杂,还
能通过平移、旋转、缩放等变换方式改变造型。Biped 还可以将角色的运动保存至外部文
件,这些运动文件能够应用到不同结构的Biped 骨架上,自动协调结构差异,得到流畅的
动作。
2.1 人体骨架模型
人体是个非常复杂的系统,由200 多个旋转关节组成的复杂形体,要模拟真实的人体
运动,需要提供所有的关节数据,所以人体运动的仿真远复杂于一般的刚体。由于人体结
构的复杂性,有必要对人体进行抽象和简化[3]。为了更好的描述运动,把人体构造成层次
电脑应用技术 二零一零总第七十七期
9
结构。人体骨架建立好后,为了方便的表示关节之间的联动关系,在一个骨骼链上建立一
个反向运动学链,通过末端效应器的位置反向求解链上各骨骼的位置。
2.2 创建Biped 骨架
在3DSMAX 的命令面板的Create 栏下打开System 按钮,点击Biped 按钮,在任意视
窗中按住鼠标左键并拖动生成一个类似人体的Biped 骨架,如图1 所示。用户可以在Create
Biped 卷展栏中调整建立参数来精细定制Biped 骨架,决定其构成部分以及其枝节的数量,
如图2 所示。
在视窗中创建好biped 骨架后,进入Motion 面板,选择Figure 模式,用户在此模式下
可对Biped 骨架中的任一骨骼平移、旋转、缩放。由于Biped 骨架是系统预设定的,为了
保证其骨架的完整性,用户不可以删除其中的一根骨骼,但可以在其允许的范围内改变其

 

图1 biped 骨架

图2 Create Biped 卷展栏

肢节的数量。
2.3 制作Biped 动画
Biped 骨架具备了模拟人体的肢体和关节运动模式的能力,这依赖于其肢体的层级结
构和运动关系。Biped 使用了完全独立于3DSMAX 的内置IK 系统,通过对FK 和IK 的自

10
动切换和混合使用,用户可以快速有效地制作各种类型的动画。
不仅如此,Biped 还提供了一种更加高效的用于提高动画制作效率的方法——步迹动
画。只需要建立一些脚印,Biped 就会利用自身的模拟人类运动的动力学原理,计算骨架
各肢体的运动,形成自然流畅的动画,如图3 所示。通过选择不同的歩迹类型,可以创作
行走、奔跑和跳跃的动作。按照歩迹自动生成的运动只是精简的动画,为动画设计者提供
了一个框架,在这个基础上用户再发挥自己的想象空间调整骨架来达到自己想要的效果。
Biped 的歩迹动画是根据动力学原理计算歩迹位置及时间关系后自动生成的。通过设
置Biped 的动力学参数可以调整Biped 的运动方式。Biped 的运动方式受到以下四个参数
的影响:平衡因素(Balance Factor)、动力混合(Dynamics Blend)、弹道张力(Ballistic
Tension)和重力加速度(Gravitational Acceleration)。Biped 可以将歩迹以及骨架的所有运
动保存至外部文件,由于Biped 骨架结构的固定性,可将运动信息导入到其它的Biped 骨
架上,而且能够自动匹配不同结构和大小尺寸的Biped 骨架,获得逼真和流畅的效果。同
时Biped 骨架还可以导入从动作捕捉仪器得到的运动数据,方便逼真的制作人物的运动效
果,极大的缩短了制作周期。


图3 Biped 的歩迹模式

 图4 SDK 中的类库继承图
3 3DSMAX SDK 骨骼动画插件开发
3.1 SDK 二次开发
MAX SDK 是一个面向对象的程序库,提供了一组强大的可重用类库,专用于开发
3DSMAX 插件。事实上,3DSMAX 本身就是一个个的标准插件(几何体、修改器、控制

11
器等)组装而成的。3DSMAX 插件是一些动态链接库,以及为与3DSMAX 紧密集成而添
加的一些特殊机制:查找插件的机制,帮助机制以及插件参数配置机制。所有的3DSMAX
插件必须是可重入的、线程安全的[4]。
在3DSMAX 中有一个定制好的Microsoft Visual C++应用向导,可以简化制作动态链
接库的程式化的过程。通过此应用向导,可以快速生成插件的框架。为插件框架添加功能
与编写C++程序一样,只是多了SDK 的可重用类库使用。SDK 的所有类派生自三个抽象
基类:Animatable,ReferenceMaker,ReferenceTarget。其中的继承关系如图4 所示。
3.2 3DSMAX 的场景组织
3DSMAX 的整个场景是树状结构,树的节点用INode 来表示,场景的根节点通过
Interface::GetRootNode 来获得。INode 中的NumberOfchildren 函数和GetChildNode 则用来
访问INode 的子节点。要遍历场景中的对象,只需要通过Interface::GetRootNode 和
GetChildNode 做一次递归循环即可。INode 仅仅是一个虚拟的节点,它本身仅仅包含一些
引用标记和变换信息,并不表示实际的Object,实际的Object 需要附着在INode 上,并以
INode 的坐标系为Object 的局部坐标系。
3.3 CS 骨骼动画导出插件
在3D 引擎中,骨骼动画系统是非常重要的一个组成部分。3DSMAX 骨骼动画导出插
件可将3DSMAX 中制作好的骨骼动画数据导出供3D 引擎使用。骨骼动画系统,包括角色
的蒙皮数据和顶点与骨骼的绑定信息以及动作序列。导出插件分两个步骤导出骨骼动画。
第一,导出角色的蒙皮数据;第二,导出角色的动作序列。
骨骼动画系统中骨架为动画的载体,所有的蒙皮附着在骨架之上。骨架上的骨骼其实
只是一个INode,骨骼仅仅是一些变换矩阵的信息而已。目前没有特别好的办法鉴定那些
INode 是骨骼,比较可行的办法是把所有Skin 修改器中使用的INode 都作为骨骼导出,同
时还需要保存骨骼之间的父子关系。
骨架导出后,进一步需要导出骨架的动作序列。采用的方法是先加载一个已经导出的
骨架,遍历这个骨架中所有的骨骼,找到此骨骼对应的INode 对象,然后确定动画的长度
和帧数,为每一根骨骼保存一个变换矩阵。此变换矩阵为骨骼的绝对变换矩阵,而不是相
对父骨骼的变换矩阵,这样省去了从根骨骼开始计算骨骼的麻烦,但是也多了很多的限制。
比如不能进行动作的混合,不能做动作的差值等。对于动作序列的导出,有两种保存数据
的方式,一种是简单的导出每一帧的变换矩阵,而不区分关键帧,这种方法使用简便,易
于实现,3D 引擎不需要做复杂的差值处理等,但是此种方法保存的数据量大,读写麻烦。
Direct3D 中的骨骼动画导出插件使用的就是这种导出方式;另一种方式是只记录关键帧的
变换矩阵,对非关键帧时刻的变换矩阵则通过3D 引擎的差值处理得到,此种方法导出的
电脑应用技术 二零一零总第七十七期
12
骨骼动画需要3D 引擎具有矩阵差值功能[5]。
4 结束语
骨骼动画技术在虚拟现实、动漫游戏中的应用日益广泛,从3D 建模软件中导出骨骼
动画数据非常重要。一个完整的骨骼动画系统导出插件是一个非常复杂的工程,本文只是
就3DSMAX 中的CS 骨骼动画导出插件中的主要技术做了一些分析和探索,为导出插件的
制作提供了一个大体的框架。
参考文献
[1] 王洪福,陈雷霆,李东魁.三维图形引擎中骨骼蒙皮动画的一种实现方法[J].计算机应用研究. 2006,
12:349-351
[2] 秦文虎,吴宇晖,赵正旭,周晓晶.虚拟角色骨骼模型建立方法研究[J].计算机应用与软件. 2008,
25(1):185-186
[3] 李春霞,杨克俭,李波. 人体骨架模型的建立及IK 问题的一种解决方式[J]. 武汉理工大学学
报,2003,27(6):815-818
[4] 罗胜. 3ds max SDK 插件开发技术[J].机床与液压, 2003,6: 242-243
[5] 金小刚,陆国栋.关节动画和人体动画.电脑动画专栏, 1997 (1) : 40-42

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

转载于:https://www.cnblogs.com/skiwnchiwns/p/10344193.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30530339/article/details/97555995

智能推荐

leetcode 172. 阶乘后的零-程序员宅基地

文章浏览阅读63次。题目给定一个整数 n,返回 n! 结果尾数中零的数量。解题思路每个0都是由2 * 5得来的,相当于要求n!分解成质因子后2 * 5的数目,由于n中2的数目肯定是要大于5的数目,所以我们只需要求出n!中5的数目。C++代码class Solution {public: int trailingZeroes(int n) { ...

Day15-【Java SE进阶】IO流(一):File、IO流概述、File文件对象的创建、字节输入输出流FileInputStream FileoutputStream、释放资源。_outputstream释放-程序员宅基地

文章浏览阅读992次,点赞27次,收藏15次。UTF-8是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节。文件字节输入流:每次读取多个字节到字节数组中去,返回读取的字节数量,读取完毕会返回-1。注意1:字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。UTF-8字符集:汉字占3个字节,英文、数字占1个字节。GBK字符集:汉字占2个字节,英文、数字占1个字节。GBK规定:汉字的第一个字节的第一位必须是1。_outputstream释放

jeecgboot重新登录_jeecg 登录自动退出-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏3次。解决jeecgboot每次登录进去都会弹出请重新登录问题,在utils文件下找到request.js文件注释这段代码即可_jeecg 登录自动退出

数据中心供配电系统负荷计算实例分析-程序员宅基地

文章浏览阅读3.4k次。我国目前普遍采用需要系数法和二项式系数法确定用电设备的负荷,其中需要系数法是国际上普遍采用的确定计算负荷的方法,最为简便;而二项式系数法在确定设备台数较少且各台设备容量差..._数据中心用电负荷统计变压器

HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板_网页设计成品百度网盘-程序员宅基地

文章浏览阅读7k次,点赞4次,收藏46次。HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业_网页设计成品百度网盘

【Jailhouse 文章】Look Mum, no VM Exits_jailhouse sr-iov-程序员宅基地

文章浏览阅读392次。jailhouse 文章翻译,Look Mum, no VM Exits!_jailhouse sr-iov

随便推点

chatgpt赋能python:Python怎么删除文件中的某一行_python 删除文件特定几行-程序员宅基地

文章浏览阅读751次。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。AI职场汇报智能办公文案写作效率提升教程 专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。_python 删除文件特定几行

Java过滤特殊字符的正则表达式_java正则表达式过滤特殊字符-程序员宅基地

文章浏览阅读2.1k次。【代码】Java过滤特殊字符的正则表达式。_java正则表达式过滤特殊字符

CSS中设置背景的7个属性及简写background注意点_background设置背景图片-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏17次。css中背景的设置至关重要,也是一个难点,因为属性众多,对应的属性值也比较多,这里详细的列举了背景相关的7个属性及对应的属性值,并附上演示代码,后期要用的话,可以随时查看,那我们坐稳开车了······1: background-color 设置背景颜色2:background-image来设置背景图片- 语法:background-image:url(相对路径);-可以同时为一个元素指定背景颜色和背景图片,这样背景颜色将会作为背景图片的底色,一般情况下设置背景..._background设置背景图片

Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏8次。Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程

PyCharm2021安装教程-程序员宅基地

文章浏览阅读10w+次,点赞653次,收藏3k次。Windows安装pycharm教程新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入下载安装PyCharm1、进入官网PyCharm的下载地址:http://www.jetbrains.com/pycharm/downl_pycharm2021

《跨境电商——速卖通搜索排名规则解析与SEO技术》一一1.1 初识速卖通的搜索引擎...-程序员宅基地

文章浏览阅读835次。本节书摘来自异步社区出版社《跨境电商——速卖通搜索排名规则解析与SEO技术》一书中的第1章,第1.1节,作者: 冯晓宁,更多章节内容可以访问云栖社区“异步社区”公众号查看。1.1 初识速卖通的搜索引擎1.1.1 初识速卖通搜索作为速卖通卖家都应该知道,速卖通经常被视为“国际版的淘宝”。那么请想一下,普通消费者在淘宝网上购买商品的时候,他的行为应该..._跨境电商 速卖通搜索排名规则解析与seo技术 pdf

推荐文章

热门文章

相关标签