在MotionBuilder中绑定C3D动作和模型
【题外话】
实验室人手不足,虽然自己连MotionBuilder一点都没有用过,但是老板叫自己干也只能硬着头皮上了。本文详细介绍了MotionBuilder 2013中的摄像机操作以及在MotionBuilder中导入C3D动作文件,并最终与指定人物模型绑定。
【文章索引】
【一、动作文件的导入】
打开MotionBuilder以后,选择 File 菜单,然后选择 Motion File Import。MotionBuilder支持导入.fbx .bvh .htr .trc .asf .amc .c3d等多种格式的运动文件,不过需要注意的是,运动文件所在路径不能含有中文名,如果含有中文名程序直接崩溃退出,不过有意思的是,MotionBuilder的打开和保存功能并没有这个问题。
选择文件后会出现如下的对话框,motion.c3d即为导入的文件。
由于C3D文件的头部记录了第一帧的序号,所以这里实际的第一帧的序号为126,虽然在MotionBuilder或其他软件中做动画并不会出现问题,但是如果编写程序调用该动作时可能会有些问题,建议双击开始时间修改为0,修改完开始时间结束时间会自动修改。当然,如果现在不修改的话,也可以导入后在 Navigator 里找到 Takes,然后再找到刚才添加的这个Take,然后修改 Local start 也可。
点击 Import 后,在MotionBuilder中即会出现导入的动作捕捉点。
【二、界面控制】
在界面的左上角可以在 View 菜单中控制与显示有关的设置,比如:
- 选择 Viewer Layout 可以设置同时显示几个显示面板。
- 选择 Perspective -> Producer Perspective 可以使用透视相机。
- 选择 Orthographic -> Producer Front / Back / Right / Left / Top / Bottom 可以使用不同的正交相机,快捷键分别是切换到前后为Ctrl+F,右左为Ctrl+R,上下为Ctrl+T。
- 选择 Default Camera View 或按快捷键Alt+Home可以复位为该摄像机的默认设置。
在界面上方的五个按钮是用来调整摄像机的,都是将鼠标按在指定按钮上然后用鼠标拖动实现调整的。
Orbit (L) | Pan / Tilt (R)
- 鼠标左键 左右拖动为沿水平轨道调整摄像机位置,上下拖动为沿垂直轨道调整摄像机位置。
- 鼠标右键 左右拖动为调整摄像机转动角度(Pan),上下拖动为调整摄像机倾斜角度(Tilt)。
- 除此之外 按住Shift+Ctrl键拖动鼠标也可实现同样功能。
Travelling with Interest (L) | Travelling (R)
- 鼠标左键 上下左右四个方向拖动即为调整摄像机的位置。
- 除此之外 按住Shift键拖动鼠标也可实现同样功能。
Dolly (L) | Dolly with Interest (R)
- 鼠标左键 上下(或左右)拖动为推拉摄像机。
- 除此之外 按住Ctrl键拖动鼠标或使用鼠标滚轮也可实现同样功能。
Zoom (L)
- 鼠标左键 上下(或左右)拖动为调整摄像机视野(Field Of View)角度。
Rool (L) | Roll +15 deg (R)
- 鼠标左键 左右拖动为左右转动摄像机(Roll)。
- 鼠标右键 左右拖动为每次左右转动摄像机(Roll)15度。
除此之外,还可以在 Navigator 中选择 Cameras,然后选择 Producer Perspective,同样可以进行摄像机的相关设置。
【三、绑定动作到Actor】
要实现动作与模型的绑定,首先需要将动作绑定到 Actor 上,首先在界面右侧的 Character Controls 面板中选择 Create 里的 Actor。
然后界面中将会出现一个人物模型,如下图所示,由于动作捕捉点与 Actor 不对齐,首先需要将使用平移、旋转和缩放工具将其对齐。
其中如果要调整所有运动捕捉点的话,可以点击上图中人脚下的白色球体,选中后会变为绿色,然后分别按T键、R键和S键可以分别实现平移、旋转和缩放。其中按R键后会出现如下图所示的界面。
其中红色、绿色、蓝色和褐色的圆圈为按不同方向进行调整,也可使用灰色的圆圈为任意方向。选中要调整的圆圈,其会变成白色,然后使用鼠标拖动即可,例如如下所示。
同样的,按T后会出现如下所示的界面,同样也是红、绿、蓝三个,分别点击移动鼠标调整即可。
当动作捕捉点整体与 Actor 在同一位置后,可以再调整身体上的部位,使得身体上的部位与捕捉点对应即可。为了便于调整也可以点击 Display 菜单,选择 X-Ray 模式,显示出 Actor 的骨骼来,然后点击骨骼也可以进行调整,方法与调整整体一样,只不过调整起来更复杂些罢了。
全部调整完后类似如下的效果:
然后点击 Navigator 面板下的 Actors,选择 Actor,然后在右侧的 MarkerSet,然后点击 Create 即可,如下图所示。
然后在 Navigator 中将会出现 MarkerSet 一项,同时在 Actor Settings 的 Actor 中出现一系列表示关节的圆圈,表示这个部位绑定的捕捉点数量,如下图。
其中各部位的名称如下,由于左右对称,所以只标注了一边:
接下来只需要选择捕捉点然后拖动到指定的圆圈中即可。选择的方法有两种:
- 在视图中选中捕捉点显示的方块,可以按住空格键多选,然后按Alt键将其拖动到指定关节所表示的圆圈。
- 在 Navigator 中选择 Opticals,然后在其中找到导入的动作,比如这里叫 C3D:optical,然后选中指定名称的捕捉点,可以按住Ctrl键多选,然后直接拖动到指定关节所表示的圆圈即可。
其中我这里使用的捕捉点与骨骼的对应关系如下,参考了VICON的说明。其实对应关系可以有不同的方式(相关链接3、相关链接4、相关链接5),当然有时候因为数据也需要灵活调整,或者有些部位不绑定:
Actor 部位 | C3D 捕捉点 |
Head(头部) | LFHD(左太阳穴)、RFHD(右太阳穴)、LBH(左后脑)、RBHD(右后脑) |
Chest(胸部) | C7(颈椎根部,脊椎第七节)、T10(背部中点,胸椎第十节)、CLAV(胸骨上端)、STRN(胸骨剑突位)、RBAC(右后背心) |
Hips(臀部) | LFWT(髋骨左前方)、RFWT(髋骨右前方)、LBWT(左髂后上棘)、RBWT(右髂后上棘) |
Left shoulder(左肩) | LSHO(左肩肩骨末端突出处) |
Right shoulder(右肩) | RSHO(右肩肩骨末端突出处) |
Left elbow(左手肘) | LELB(左手肘关节外围突出处(鹰嘴突)) |
Right elbow(右手肘) | RELB(右手肘关节外围突出处(鹰嘴突)) |
Left wrist(左手腕) | LWRA(左手手腕靠拇指端)、LWRB(左手手腕靠小指端) |
Right wrist(右手腕) | RWRA(右手手腕靠拇指端)、RWRB(右手手腕靠小指端) |
Left hand(左手) | LFIN(左手中指关节下方) |
Right hand(右手) | RFIN(右手中指关节下方) |
Left knee(左膝) | LKNE(左脚膝盖关节外缘) |
Right knee(右膝) | RKNE(右脚膝盖关节外缘) |
Left ankle(左脚踝) | LANK(左踝关节外缘突出处) |
Right ankle(右脚踝) | RANK(右踝关节外缘突出处) |
Left foot(左脚掌) | 忽略 |
Right foot(右脚掌) | 忽略 |
Left toe(左脚趾) | 忽略 |
Right toe(右脚趾) | 忽略 |
在绑定所有捕捉点后可以点击 Actor Settings 中的 Snap 按钮,此时 Snap 按钮左侧的选项将会勾上,即可完成绑定,现在点击播放按钮,Actor 就会随着捕捉点进行运动了,然后保存为fbx文件即可。
如果播放后发现绑定的效果不好,可以取消勾选 Snap 按钮左侧的选项,然后编辑后重新绑定,此时会出现如下的对话框,选择TR(Translate / Rotate)即可。
【四、角色化模型】
若要绑定到模型,首先需要把模型角色化,如果模型已经角色化过,可以跳过这节。首先打开一个模型,出现如下图所示:
在 Character Controls 面板中点击 Defination,如果出现的如下图所示则表示没有角色化,如果模型已经角色化,则下图中左数第二个锁定图标应为锁定状态并且显示为灰色的骨骼应该显示为绿色。
绑定骨骼时只需要双击指定骨骼,然后除了该骨骼外的其他骨骼将会变暗,表示现在正在绑定该骨骼,然后在视图中点击对应的骨骼即可。比较智能的是,默认时左边数第三个图标 Mirror Matching 是选中的,所以如果绑定了一边的骨骼,另一边会自动绑定,当然也可以手动将其去除。除此之外,点击手边和胸部的下三角还可以绑定更多骨骼,胳膊与腿旁边也有一些骨骼可以绑定,但这些骨骼不绑定也不会影响角色化。
在身体上的所有骨骼均绑定成功后,右上角验证状态(Validation status)的圆圈会变为绿色。
然后选择左数第二个 Lock Character,然后会出现如下图的对话框,选择Biped(两足动物)即可完成绑定。
【五、绑定模型与Actor】
在模型角色化以后就可以与之前绑定好动作的Actor进行绑定了,在MotionBuilder打开角色化后的模型后,选择 File -> Merge,然后打开刚才保存的动作fbx文件,与打开的对话框稍有不同,直接点击 Merge 即可。
此时在视图中发现之前绑定好的 Actor 与当前模型在一起显示了,如下图:
然后选择 Character Controls 面板中的 Source,然后选择 Actor 即可(如果没有角色化,则选择 Actor 时会提示错误),如下图:
然后模型就会与之前绑定好动作的 Actor 一起动了,此时可以点击播放查看效果。
最后,点击 Character Controls 面板左侧的菜单,选择 Bake (Plot) -> Bake (plot) To Skeleton 然后保存文件即可。
【相关链接】
- MotionBuilder基础(二):http://www.southcn.com/cartoon/campus/huale/200502211376.htm
- 動作質地之領域知識後設資料分析結果:http://metadata.teldap.tw/project/filebox/dance/mid%20term%20paper.pdf
- Maya to MotionBuilder: Importing C3D and mapping Actor:http://gsfinalmajorproject.blogspot.com/2012/03/maya-to-motionbuilder-importing-c3d-and.html
- motionbuilder第三章:角色动画(六)映射光学运动数据:http://wenku.baidu.com/view/81c1da3e0912a216147929a0.html
- Manual iQ - InteractFields:http://www.interactfields.com/aulas/cadmh/wp-content/uploads/2011/04/Manual_IQ.pdf
- Preparation v1.2:http://www.udel.edu/PT/Research/MAL/preparation_v1_2.pdf
在MotionBuilder中绑定C3D动作和模型的更多相关文章
- 如何在FineUIMvc(ASP.NET MVC)视图中绑定多个模型?
起因 这是知识星球内的一个网友提出的,按理说ASP.NET MVC中一个视图只能绑定一个模型(Model),在视图顶部标识如下: @model IEnumerable<FineUICore.Ex ...
- 008.Adding a model to an ASP.NET Core MVC app --【在 asp.net core mvc 中添加一个model (模型)】
Adding a model to an ASP.NET Core MVC app在 asp.net core mvc 中添加一个model (模型)2017-3-30 8 分钟阅读时长 本文内容1. ...
- SQLALchemy中关于复杂关系表模型的映射处理
映射在第五步,我们还是一步一步来哈 一. 关系介绍 举一个比较经典的关系,部门与员工(以下是我的需求情况,算是把该有的关系都涉及到了) 1.每个部门会有很多成员(这里排除一个成员属于多个部门的情况) ...
- Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读
Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...
- osg中使用MatrixTransform来实现模型的平移/旋转/缩放
osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html# ...
- JQuery在循环中绑定事件的问题详解
JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 <input type="text" nam ...
- [Unity3D][Vuforia][IOS]vuforia在unity3d中添加自己的动态模型,识别自己的图片,添加GUI,播放视频
使用环境 unity3D 5 pro vuforia 4 ios 8.1(6.1) xcode 6.1(6.2) 1.新建unity3d工程,添加vuforia 4.0的工程包 Hierarchy中 ...
- WPF窗体视图中绑定Resources文件中字符串时,抛出:System.Windows.Markup.StaticExtension
问题描述: 在Resources.resx定义了一个静态字符串字段Title,并在WPF窗体视图中绑定为窗体的标题: Title="{x:Static local:Resources.Tit ...
- jQuery中绑定事件bind() on() live() one()的异同
jQuery中绑定事件的四种方法,他们可以同时绑定一个或多个事件 bind()-------------------------版本号小于3.0(在Jquery3.0中已经移除,相应unbind()也 ...
随机推荐
- “Operation is not valid due to the current state of the object.”
将Repeater单页显示的2000条数据一次性提交的时候出现这个错误: Operation is not valid due to the current state of the object. ...
- Tomcat 9.0安装配置(转)
http://www.cnblogs.com/saratearing/p/5811866.html
- Makefile笔记之二------make的递归执行
1.make的递归过程指的是: 在Makefile中使用"make"作为一个命令来执行本身或者其它makefile文件的过程. 2.递归的意义: 当前目录下存在一个"su ...
- Python3.5 day3作业二:修改haproxy配置文件。
需求: 1.使python具体增删查的功能. haproxy的配置文件. global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 lo ...
- 不使用return false阻止event默认行为
当我们点击一个a标签时,如果这个标签的href指向了另一个地址,那么浏览器会默认跳转到此地址.在页面中,有时我们需要触发点击事件,但是又不想触发默认行为,就需要阻止event的默认行为了. 常规做法 ...
- hadoop---前期准备---屌丝
hadoop要求有多台机子进行后续的数据处理,作为屌丝一枚,怎么才能搭建一个合适的环境学习hadoop?这就是本篇将要介绍的----前期准备. 搭建环境没啥好说的,说一下搭建环境多需要的吧 硬件:电脑 ...
- 安装WampServer时出现的问题(丢失VCRUNTIME140.dll或MSVCR110.dll)以及解决办法
今天,在安装WampServer时,刚开始提示了"丢失VCRUNTIME140.dll"的问题. 我就网上查了一下,结果大家说是没有安装VC++,然后我就按照网友们提供的网址去下载 ...
- Erlang 初学者技巧及避免的陷阱
1. 传参或在匿名函数内慎用self() 通常在做消息传递或新建进程的时候我们需要将当前进程的Pid发给目标进程以便接收返回信息,但初学者不留意容易犯以下错误 spawn(fun() -> lo ...
- css中单位px、pt、em和rem的区别
国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? px :像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.(引自CSS ...
- Grunt 使用记录
想了解Grunt,可以先去官网 看看. 第一次接触Grunt是通过Coding的移动端项目, 刚开始因为环境的问题折腾了一两天,然后就顿悟了. Grunt构建工具对于前端开发而言,简直是神器(ps.虽 ...