《大力神》项目制作骨骼绑定、特效、技术的制作
水晶石数字教育学院maya1班学员 《大力神》骨骼绑定、特效、技术支持_孙业飞
我在班级毕业作品项目制作中担任的是骨骼绑定、特效及一些技术性工作,在制作项目的过程中遇到的问题是平时学习中预料不到的,随着项目的不断深入,问题会愈来愈多,这也正是在制作项目中是提升水平最快的原因。作为刚刚踏入CG行业的我们,碰到问题时都会觉得束手无策,首先给予我们帮助的肯定是我们的老师,有一点我觉得我们李迎老师做得非常非常好,老师不会上来就教你这个问题应该怎么处理,而是先是把问题分类,针对某类问题教给我们解决问题的方法,让我们自己找出解决问题的方案。我感觉这正是为什么现在许多自学者虽然看了很多教程,但在项目中遇到实际问题的时候还是苦苦找不到解决问题思路的缘故吧。下面我就这绑定和技术这一块工作进行一下介绍和在项目制作过程碰到的一些常问题及处理方法简要的说明一下:
绑定工作说白了其实就是让模型师做好的模型合理的动起来,拿到角色的模型后第一步要做的是分析这个角色,分析他是如何运动的,可以做到哪些动作,一切都考虑好后做起来也就容易很多了。例如片子中的pain,矮敦敦胖乎乎的,运动起来时身体会有挤压和拉伸,解决挤压拉伸这类问题的方法中骨骼的缩放肯定是首选了,在缩放的同时身体还会变细或变得更粗些,这时为了达到最佳的效果可以使用一些简单且非常常用的方法来解决,例如加簇或者晶格变形,另外针对某些特殊的身体形态做一些特殊的目标体,使用Blendshape的方法来解决,变形器运用的得当往往会达到事半功倍的效果。
绑定工作会遇到一种常常出现的问题,就是在已有的骨骼上添加蒙皮物体时maya会提示错误信息,说骨骼没有在初始的位置,
造成这种情况的原因是当骨骼第一次蒙皮时就会产生一个bindPose节点,这个节点记录着参于蒙皮骨骼的所有transform信息,由于各种原因(可能是控制器上有参数或修改骨骼时微动了骨骼),这时再向骨骼添加蒙皮物体时就会提示骨骼没有在初始位置,面对这样的情况如果找不到哪个骨骼曾经被微调过,就无法加入新的几何体蒙皮。解决这个问题比较直接的方法就是将bindPose节点删掉,这样以后再往该骨骼添加骨骼时系统就不会检测骨骼的初始位置了。
还有一种方法是选择蒙皮主关节骨骼,打开属性编辑器(ctrl+a),切换到bindPose选项卡,将Bind Pose勾去掉就可以添加蒙皮几何体了。
在片子中还遇到了不少技术型的难题,hade的头发,开始时测试了许多方法,试着用粒子和maya fire去做都没有达到预期的效果,最后还是改用柔体。头发建出来后,建立骨骼将其蒙皮,把一根曲线转成柔体,权重影响值调整合适,然后使用spline Ik的方法用曲线带动骨骼来控制头发的运动。如图
片子中大力士的披风、hade的衣服使用的是syflex布料插件运算的,如今maya8.5已经加入了新的nCloth布料模块,专业快速及真实的布料与maya的制作流程也结合得愈发紧密了。
绑定在整个CG制作流程中占有着非常重要的地位,是一个承上启下的环节,模型做好后下一环节就是绑定了,也可以说绑定也是为模型把关的环节,毕竟做的不是静帧,要动起来漂亮动得合理,并不是所有的事情都是绑定可以做得到的,各个环节的相互配合是相当重要的,例如布线不合理就算绑定这做得再好也很难将角色的动作做得漂漂亮亮的,这时就要返回到模型阶段进行修改。动画环节也是一样,绑定是为动画服务的,要多与动画师多交流,做出运动起来合理,动画师做动画时方便的骨骼系统是绑定工作者的一直的追求。团队往往是要磨合一段时间的,磨合是在磨合什么,磨合的就是配合,相临环节沟通,相临环节的监督。
下面我简要说一些关于绑定方面的小技巧:
1.说起绑定肯定要说一下权重了,这是一项很耗时的工作,maya中互导权重的工具并不是很强大,Export skin Weight Maps工具是依赖于UV的,成功的几率很低,我们可以用mel语言开发一些自己的权重要工具。下面是列举一个简单的用mel来获得和赋予点权重的方法:
选择蒙皮模型的某个点,运行下列的mel
string $selobjname[]=`ls -hl`;;//获得选择的点所在物体的transform节点名称
string $selname[]=`ls -sl`;获得选择的点的名称
string $skinclustername=`findRelatedSkinCluster($selobjname[0])`;//获得该模型的蒙皮簇
string $joints[]=`listConnections($skinclustername+".matrix"
`;//获得模型蒙皮的所有骨骼列表
skinPercent -v -q $skinclustername;//读出该点的各各关节的权重值
设权重值时先选中要赋予权重的点,然后使用skinPercent –tv 骨骼命称 权重值 –tv 骨骼命称 权重值 ……蒙皮族的名称 点的名称即可.
下面是我自己做的旋转工具,主要是调整骨骼轴向时使用的,因为在视图中调整骨骼轴向时是不能精确调整的,只能粗略的调整,如果想精确的调整骨骼轴向时这个工具就显得十分方便。
首先先择要调整轴向的骨骼,然后进入轴向层级,如图
选择要调整的轴向坐标进行调节,调整好后如图
类似这样的mel命令还有许多,在项目为了方便工作我编写了大量的工具来加速我的工作,有时会提高几倍甚至更高效率。
不过不会mel也没有关系,maya的功能已经足够强大了,几乎含盖了所有的方面。但还是希望这个小工具能给大家一些启发,让不懂mel的朋友慢慢将mel运用到自己的工作中去。
例如可以编些添加控制器的工具,互导权重的工具、也可以为项目开发一个骨骼的插件,写个面板,如果喜欢C++的朋友还可以操控一下maya api来编一些变形器和自己的IK系统,如今maya8.5也加入了python语言,也可以用脚本语言的方式操作maya api了。
各种各样的变形器是绑定最好的工具,搭配着一些工具节点,例如pointOnCurveInfo获得曲线上某点的位置信息、pointOnSurfaceInfo获得曲面上某点的位置信息,再运用线性IK和spline IK这些工具就可以把点、线、面和骨骼联系起来,达到控制角色的目的。一定要活学活用,maya提供了太多非常实用的工具,仔细分析仔细研究你就会发现原来这个工具还可以这样那样的用途。
建立工具节点的命是createNode,例如建立一个得到曲线某点的信息(如位置)节点的命令如下:
createNode pointOnCurveInfo;
在片子中panic的尾巴与屁股是连动的,屁股在上下动时尾巴的根部一些区域是要随着身体而牵动的,所以把靠近屁股的部分单独处理。读者也一定想到了很多方法,可以使用簇或线变形来解决类似的问题,这里我借使用pointOnCurveInfo节点处理这个问题,和大家一起了解pointCurveInfo工具节点的用法。思路是首先将尾巴做成单节的骨骼,然后沿尾巴建立一根NURBS曲线,然后用pointOnCurveInfo节点获取的曲线上CV点的坐标信息,再将坐标信息连接到骨骼的位移参数上,这样只要移动CV点就可以带去骨骼运动了,再将最靠近屁股的一个点或几个点建立一个簇(cluster),将该簇做为跨关节的子物体就可以了,屁股一动带去尾巴前一段一起运动了。详细过程如下:
先把靠近身体的几个关节断开层级(shift+p),成为单个关节,
然后建沿尾巴建立一条NURBS曲线,只要可以穿过几个单独的尾巴关节就可以了,因为这几个关节是要受曲线CV点控制的。如下面
这时还不能用线来控制骨骼的运动,运行createNode pointOnCurveInfo;建立pointOnCurveInfo节点,
pointOncurveInfo节点的输入是需要曲线的形状节点,首先打开连接编辑器(Connection Editor)
选择建立的曲线的形状节点。打开大纲视图中形状节点的显示
选择曲线的形态节点,如下图
然后点击连接编辑器的Reload Left按钮,将曲线的形态节点做为输出,然后进入大纲视图,工具节点在大纲视图中默认是看不到的,将大纲视图菜单中DAG Object Only的勾去掉就可以找到刚才建立的pointOnCurveInfo1节点了,选择该工具节点,点击连接编辑器的Reload Right按钮,
将curveShape1的World Space属性与pointOnCurveInfo1的Input curve属性建立连接,选择pointOnCurveInfo1节点,打开属性编辑器(ctrl+a)
Parameter属性就是曲线上的位置信息,将Turn On Percentage选项勾选上后,是以百分比的形式调整曲线上采样点了,Parameter为0是曲线的首端,为1是曲线的末端,这样调节起来就比较容易理解了。然后建立按断开的关节数建立几个NURBS球体(也可以是别的物体,只是起到定位的作用),将球体的位置依附到曲线上。
打开连接编辑器,将pointOnCurveInfo1加载到左侧,做为输出。将球体选择载入到右侧,做为输入,将pointOnCurveInfo1的Position输出给球体的translate属性。
依照同样方法再建立几个pointOnCurveInfo节点和几个球体进行定位,Parameter参数依次为:
0.21、0.51.0.81.
然后用NURBS球体对相临的单节骨骼进行点约束,全部做完后就可以移动曲线的CV点带动NURBS球体因为骨骼被球体约束,模型也就间接的被线带动了,
用线带动模型的方法有很多,本例只是想介绍一下使用工具节点来处理一些蒙皮上的情况,大家可以触类旁通,综合运用学到的知识,多思考多交流,去发掘新的方法而应用到实际工作和学习中去,只有这样,才会不断的提高解决问题的能力,才能有不断的进步不断的提高,总有一天会成为经验丰富的高手。
以上是我在工作和学习中的一些收获,希望能给大家带来启发和帮助,最后希望所有的CG爱好者,在CG这条道路上一路走好,感谢李迎老师和为CG行业付出了辛勤汗水的老师们,我们这些菜鸟还需要你们多多帮助和指导。
此日志的引用地址
GB2312 http://blog.tyou.com.cn/trackback.php?id=86&encode=gb2312
UTF-8 http://blog.tyou.com.cn/trackback.php?id=86&encode=utf-8



























4 条评论
1. 生命美学 | July 3, 2007, 12:06 pm
很专业的啊,看了很有启发的,
2.aa | July 5, 2007, 9:38 pm
横好的经验总结,期待更好的作品 :)
3. xx | July 8, 2007, 3:14 am
牛人啊。看了你的文件,盛事读了10年书啊
4.天才 | August 23, 2007, 8:19 am
谢谢啊,找了半天找到这里,你的文章对我帮助太大了!
发表评论