PencilMan Part 2
搁置了有一年左右的时间了,最近闲来无事,重新捡起来,继续剩下的工作:使用advanceSkeleton 进行角色装配并使用smooth方式绘制权重。
角色最终效果:

部分表情效果:

模型:

设定草图:

最终效果:

贴图:

最近研究了有关UV展开及贴图绘制的一些资料和技巧,总结如下:
1、目前贴图UV 展开的方法有了很大的改进,新的算法已经把uv 展开方法从基本的图形映射方式进步到uv的自动计算展平(演算前要把uv按需要剪开)工具可以使用UVLayout,unfold3D,另外Modo内建的UV功能也非常好用,实现方法也类似。maya 7.0后增加的unfold功能正是实现的这样的算法,这个oldman模型的展开正是完全使用的maya的内建功能。在maya中使用unfold同时配合relax,这两个工具灵活运用实现复杂模型的UV 展开工作也是很舒服的,完全可以胜任工作要求。
2、角色贴图绘制的方法,首先要在完成UV展开的模型上bake一张全局光照的阴影图,作为贴图绘制的基础,同时可以使用maya的3d paint功能在模型上绘制处眉毛,发髻等参考线并输出贴图,作为具体绘制时的指示。使用photoshop分层贴图进行绘制,可以随时刷新进行渲染检视。一般会输出一下几张图:
a、color map
贴图的基础色彩要靠它实现,也是其他图的基础。
b、bump map
凹凸贴图,控制凹凸细节的生成,划痕,伤口等
c、diffuse map
这个我最近才算正确理解了,其实漫反射贴图的真正意义在于贴图中越白的部分,越呈现处color map中的固有色彩,越暗的部分,固有色彩也变得越暗,一句话就是通过贴图增加表面的暗部细节。
d、specular color
高光贴图,控制高光区域,如角色嘴唇,脸颊,鼻头,等表面的高亮部分要靠这张图实现细节控制
e、ambientColor
环境光贴图,这张用的人好像不多,不过我这里重点推荐一下,它对于模拟实现sss(次表面反射)效果还是很管用的,可以通过这种较暗色彩的颜色贴图模拟实现表面的那种通透效果,利用这种贴图使角色表面不同部分透处不同程度不同颜色的光照感觉,很想sss的效果。
关于arm rigging的相关设置方法:
1、骨骼的设置,手臂部分需要四段骨骼,除了上臂和肘部外不要忽略肩部和前臂的骨骼;
2.fk ik控制器,上臂和肘部的两个fk控制器,腕部的Ik控制器(ik effector要在超图中由前臂关节处移到腕关节处)、手腕部的旋转控制器(包括控制手腕和前臂的旋转)、位于腕部的IKFK切换控制器 ,手指各种动作的控制器。
2、上臂和肘部的两个fk控制器采用orient constrain,或者parent constrain来约束相应骨骼的fk运动;ik handle point constrain到ik控制器;手腕部的旋转控制器orient constrain腕部关节的旋转(parent constrain 旋转部分也可),这里要控制两个方向的旋转,同时使用连接编辑器连接另一个旋转轴到前臂的相应旋转,观察人的腕部运动方式就知道了,手腕翻转的时候是前臂骨骼带动的~然后再Point constrain 手腕部的旋转控制器到腕关节上,这样不论是切换到ik还是fk 手腕部的旋转控制器都会跟随腕部关节位移!
3、ikfk 切换控制器要新建属性IKFKSwith(0~1);关联到ikhandle 的 IK Blend属性;另外为了控制方便,可以使用表达式关联IKFKSwith到相应控制器的Visibility
4、手部控制器要新建相应的控制属性(各finger的Curl、Spread属性),通过驱动关键帧和表达式结合实现对手指手掌等骨骼的控制,进而实现手部各种动作。
最近在研究maya人物角色绑定,查阅了一些新的资料和教程,也研究了自己手头的几个常用的角色绑定文件,对自己以前的设置方法进行了一定的总结和优化,争取最近逐步整理出来。
1.比较orient constrain,point constrain和parent constrain:
maya 后来增加的parent constrain具有point 和orient两个的的功能,但有不是简单的两项功能的合并,其实是有很大不同的~
orient constain和point constrain 分别实现对物体间的旋转和位移进行约束,这在角色绑定中是很常用的方法,实现各种控制器对骨骼及IK链的控制,parent constrain即父子关系约束由于子物体具有继承父物体位移和旋转的特征所以效果上具有和前面两种约束控制很相似的功能,其实有很不一样,(When a Parent constraint is used, rotating the target objects affects the constrained object’s rotation along the world axis. When a Point and orient constraint are used, rotating the target objects affects the constrained object’s rotation along its local axis.)这句话的意识是当应用Parent constraint时被约束物体是按照约束物的世界坐标轴进行位移和旋转的跟随一致的,而orient constrain,point constrain则是按照约束物的自身局部坐标轴进行位移和旋转的跟随一致的。这一点是有很大区别的。
话说回到实际的应用中,在传统的手臂FK控制中往往需要约束手臂的骨骼的旋转到相应的FK控制器上,正往往通过
orient constrain来实现,不过有事犹豫控制器的局部坐标轴和相应骨骼的局部旋转坐标轴方向并不一致,可能就会出现问题,被约束的骨骼会按控制器的局部坐标轴产生旋转扭曲,解决方法很特别就是利用一个空组作为桥梁进行一下统一,Ctr+G建立空组null1,按V点吸附到控制器要控制的骨骼关节上,将null1 orient constrain到相应的骨骼,完成后null1的局部坐标会和约束骨骼一致(一般会产生一定的旋转),然后就可以删除约束控制了,再将控制器作为null1的子物体,然后freeze 控制器的transformations,这样控制器的局部坐标也和相应骨骼一致了。完成这些准备后就可以继续上面的步骤orient constrain相应的骨骼到控制器了,这样由于局部坐标轴已经一致了,也就不会产生任何旋转上的扭曲了。
这是传统的解决方案,当然,出现parent constrain后就可以不用这么麻烦了,直接使用 parent constrain就解决问题咯,我是这么尝试使用的,不知道会不会有其他额外的问题~

全部模型在modo中创建,通过这个项目充分体验到了使用Modo建模的快捷,很难想象,在一周内,如果model在maya内完成会是多么痛苦~不过maya import时应用参考模型及相应的管理功能对这个项目顺利快速完成提供了重要支持~
时间紧迫,贴图完成的很草,不过模型都是按客户要求在modo里做的,放几个截图吧: