【题外话】

实验室人手不足,虽然自己连MotionBuilder一点都没有用过,但是老板叫自己干也只能硬着头皮上了。本文详细介绍了MotionBuilder 2013中的摄像机操作以及在MotionBuilder中导入C3D动作文件,并最终与指定人物模型绑定。

【文章索引】

  1. 动作文件的导入
  2. 界面控制
  3. 绑定动作到Actor
  4. 角色化模型
  5. 绑定模型与Actor

【一、动作文件的导入】

打开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可以复位为该摄像机的默认设置。

在界面上方的五个按钮是用来调整摄像机的,都是将鼠标按在指定按钮上然后用鼠标拖动实现调整的。

  1.  Orbit (L) | Pan / Tilt (R)

    • 鼠标左键 左右拖动为沿水平轨道调整摄像机位置,上下拖动为沿垂直轨道调整摄像机位置。
    • 鼠标右键 左右拖动为调整摄像机转动角度(Pan),上下拖动为调整摄像机倾斜角度(Tilt)。
    • 除此之外 按住Shift+Ctrl键拖动鼠标也可实现同样功能。
  2.  Travelling with Interest (L) | Travelling (R)
    • 鼠标左键 上下左右四个方向拖动即为调整摄像机的位置。
    • 除此之外 按住Shift键拖动鼠标也可实现同样功能。
  3.  Dolly (L) | Dolly with Interest (R)
    • 鼠标左键 上下(或左右)拖动为推拉摄像机。
    • 除此之外 按住Ctrl键拖动鼠标或使用鼠标滚轮也可实现同样功能。
  4.  Zoom (L)
    • 鼠标左键 上下(或左右)拖动为调整摄像机视野(Field Of View)角度。
  5.  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 中出现一系列表示关节的圆圈,表示这个部位绑定的捕捉点数量,如下图。

其中各部位的名称如下,由于左右对称,所以只标注了一边:

接下来只需要选择捕捉点然后拖动到指定的圆圈中即可。选择的方法有两种:

  1. 在视图中选中捕捉点显示的方块,可以按住空格键多选,然后按Alt键将其拖动到指定关节所表示的圆圈。
  2. 在 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 然后保存文件即可。

【相关链接】

  1. MotionBuilder基础(二):http://www.southcn.com/cartoon/campus/huale/200502211376.htm
  2. 動作質地之領域知識後設資料分析結果:http://metadata.teldap.tw/project/filebox/dance/mid%20term%20paper.pdf
  3. Maya to MotionBuilder: Importing C3D and mapping Actor:http://gsfinalmajorproject.blogspot.com/2012/03/maya-to-motionbuilder-importing-c3d-and.html
  4. motionbuilder第三章:角色动画(六)映射光学运动数据:http://wenku.baidu.com/view/81c1da3e0912a216147929a0.html
  5. Manual iQ - InteractFields:http://www.interactfields.com/aulas/cadmh/wp-content/uploads/2011/04/Manual_IQ.pdf
  6. Preparation v1.2:http://www.udel.edu/PT/Research/MAL/preparation_v1_2.pdf

在MotionBuilder中绑定C3D动作和模型的更多相关文章

  1. 如何在FineUIMvc(ASP.NET MVC)视图中绑定多个模型?

    起因 这是知识星球内的一个网友提出的,按理说ASP.NET MVC中一个视图只能绑定一个模型(Model),在视图顶部标识如下: @model IEnumerable<FineUICore.Ex ...

  2. 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. ...

  3. SQLALchemy中关于复杂关系表模型的映射处理

    映射在第五步,我们还是一步一步来哈 一. 关系介绍 举一个比较经典的关系,部门与员工(以下是我的需求情况,算是把该有的关系都涉及到了) 1.每个部门会有很多成员(这里排除一个成员属于多个部门的情况) ...

  4. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读

    Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...

  5. osg中使用MatrixTransform来实现模型的平移/旋转/缩放

    osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html# ...

  6. JQuery在循环中绑定事件的问题详解

    JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 <input type="text" nam ...

  7. [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中 ...

  8. WPF窗体视图中绑定Resources文件中字符串时,抛出:System.Windows.Markup.StaticExtension

    问题描述: 在Resources.resx定义了一个静态字符串字段Title,并在WPF窗体视图中绑定为窗体的标题: Title="{x:Static local:Resources.Tit ...

  9. jQuery中绑定事件bind() on() live() one()的异同

    jQuery中绑定事件的四种方法,他们可以同时绑定一个或多个事件 bind()-------------------------版本号小于3.0(在Jquery3.0中已经移除,相应unbind()也 ...

随机推荐

  1. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...

  2. HashMap源码阅读笔记(基于jdk1.8)

    1.HashMap概述: HashMap是基于Map接口的一个非同步实现,此实现提供key-value形式的数据映射,支持null值. HashMap的常量和重要变量如下: DEFAULT_INITI ...

  3. java中的小数的取整的几种函数

    Math类中提供了5个与取整相关的函数,如下所示: static double ceil(double a):天花板函数,返回大于等于a的最小整数(但是以浮点数形式存储). static double ...

  4. Drools API的使用学习

    Drools API的使用学习在 Drools 当中,规则的编译与运行要通过 Drools 提供的各种 API 来实现,这些 API 总体来讲可以分为三类:规则编译.规则收集和规则的执行.完成这些工作 ...

  5. Python 格式化输出

    转载 今天写程序又记不清格式化输出细节了--= =索性整理一下. 注意: 与C/C++  不同的是这里括号后面不需要加' , '号. python print格式化输出. 1. 打印字符串 print ...

  6. 【转】C/S,B/S区别

    C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势. ...

  7. mysql_connect() php7不支持,php5.5可以,是废弃函数

    天用了PHP7,发现和PHP5变化还挺大的,最大的就是MySQL的连接库变了. PHP5中使用mysql_connect()函数进行连接,但实际上,PHP5.5开始,MySQL就不推荐使用了,属于废弃 ...

  8. Linux内核笔记--网络子系统初探

    内核版本:linux-2.6.11 本文对Linux网络子系统的收发包的流程进行一个大致梳理,以流水账的形式记录从应用层write一个socket开始到这些数据被应用层read出来的这个过程中linu ...

  9. React 组件性能优化

    React组件性能优化 前言 众所周知,浏览器的重绘和重排版(reflows & repaints)(DOM操作都会引起)才是导致网页性能问题的关键.而React虚拟DOM的目的就是为了减少浏 ...

  10. linux安装oracle11g

    准备oracle安装文件 Oracle11gR2包含两个文件linux_11gR2_database_1of2.zip和linux_11gR2_database_2of2.zip,将这两个文件通过SS ...