【题外话】
实验室人手不足,虽然自己连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 上,首先在界面右侧的 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进行绑定了,在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