美文网首页
Blender实现小人行走

Blender实现小人行走

作者: Nino_Lau | 来源:发表于2019-04-12 13:01 被阅读0次

    目标实现

    利用Blender 2.80 beta实现一个简单的行走循环动画。

    target

    效果展示

    • 总体循环效果:
    whole effect
    • 局部效果:
    effect
    • 走路动作的片段:
    walking snipshot1 walking snipshot2 walking snapshot3

    优点

    • 小人拥有整体的骨架🦴
    • stickman 有真实的骨肉影响权重(骨动肉动🍖)
    • stickman 骨架符合反向动力学IK构造
    • 基本实现小人循环行走🚶的姿态
    • 相机跟踪渲染小人📷

    缺点

    • 行走姿态不够自然,右腿比左腿略长一点
    • 渲染场景还不够多样化
    • 还未尝试用表皮修改器为小人面部进行描摹

    实现步骤

    实现小人行走看似容易,却包含了繁杂的步骤,我按照实现顺序进行描述。

    建立骨架

    为了实现复杂的行为动画,首先需要导入小人模型并键入骨架。

    bone

    调整骨架并选中,tab编辑模式下E键挤出骨头,由此构建统一的骨架。

    armature

    为了让骨头带动肉动,为skin设置父集armature,我们要建立父集关系:在物体模式下,选中armature,然后shift同时选中stickman,control+P选择set parents to object

    bones connect skin

    这时候,小人的“皮”就能跟着肉动了。有时候骨头是分离的,但是我们需要让它们有关联,为了让父骨带动子骨动,我们也要建立父集关系:首先option+P选择clear parent,清除父集关系;然后control+P选择connected

    separate parents connect parents

    小人本身就是一个obj,所以无需再进行整体连接。为了简单起见,设置为自动权重。control+tab姿态模式下,control+P进行骨架形变,然后从弹出的小框内选择自动权重。

    deform automatic weights

    当然也可以手动调整权重:物体模式下,选中骨架,再选中stickman,打开权值绘制模式,我们就可以绘制权重了。调整笔刷大小和颜色,蓝色表示无影响,红色表示影响力为1。

    weight paint

    为了获得更好的效果,让每根骨头“牵一发而动全身”,IK骨应用反向动力学原理设计更优雅的行走动画。挤出一根骨头,姿态模式下选中IK目标骨,同时shift选中依附骨,shift+I添加IK骨。这时候我们发现,移动IK骨,依附骨也会跟着动。

    Add IK

    这样,小人的骨架就基本制作好了。

    动画制作

    首先我们为了让动画循环并让小人沿曲线行走,我们首先要设置一个行走路径。Add一个圆,用同样的方法,为骨架设置父集circle。这样小人就能按着圆的轨迹平移了。

    circle parent

    在动作编辑器模式创建行走动作。首先要新建一个walk轨道。

    walk track

    在这个通道中,插入关键帧。右键,在insert key frame中采用insert whole frame

    insert keyframe whole character as frame

    以此类推,插入多个关键帧在walk通道。新建一个NLA(NonLinear Animation)轨道——NLA track。这之后,将walk通道push down到NLA轨道中,我们这时候就看到骨架对象下,出现了包含walk通道的NLA轨道。

    push down channel

    为了让小人行走动作循环,选中walk通道,并进行Action Clip进行操作,我这里调整了frame长度为28和重复30次数,来应对实验要求。

    action clip

    制作动画的最后一个环节就是为了让动画能够渲染,我们必须要合理地摆放控制镜头。毕竟小人是这个动画的主角,为了让相机时时刻刻对准小人,需要相机跟踪功能。首先新建一个相机。

    new camera

    打开相机约束,设置相机跟踪的相关功能,设置成功之后镜头对准目标,有一条虚线,镜头对准target——我设置的骨架。当然相机也可以设置轨道——建立和circle的依附关系,原理和上面一样,不再赘述。

    target projection protagonist

    这样小人行走动画就制作好了!大功告成,简单渲染了一下。虽然走地有点丑,但是总体效果还是差强人意的😄!

    effect

    实验心得

    • 编辑模式下挤出骨头的时候,如果要单边挤出,不能选中整根骨头,不然会从两边挤出。
    • 这个实验中,stickman.obj文件中的小人一开始好像就是不对称的,所以建立骨架的时候不能用X镜像,不然会不对称(然而自己手动调整好像更丑)。
    • 实际上,微调的贡献远远大于采用权重调整、反向动力学等操作。因为走路过程手上动作很少,所以不给手建立IK骨看起来效果反而更好。
    • 这个题目没有体现权重的重要性,因为是一个裸体小人,所以每一根骨头都会直接影响肉身,所以这个题目设置blender自带的自动调整权重就很好,但在某些带饰品的动画人物身上需要做微调
    • 为了让父骨带动子骨动,两个不连接的骨头也会有藕断丝连的牵连关系,个人理解模拟了人体韧带的功能
    • 个人感觉这个实验中,IK骨的功能完全可以用为游离骨添加父集IK骨功能来实现,觉得IK骨没什么特殊的功能。
    • 添加IK骨的时候,应该选中两个目标骨,一开始我以为只用给IK骨add IK就OK了,导致卡了很久。
    • 动画制作的原理是让小人围着一个圈原地踏步,但是这个好像不符合走路运动的常识。
    • 一开始我想采用形态键来设置关键帧,但是后来证明这是个naïve的想法。
    • 调整任务动作十分的耗费精力,因为不对称,我全程手动调整,所以有些动作不是对称的,这点严重影响了我的工作效率和效果。而且丑陋的姿态严重影响了我的成就感。
    • 编辑动画的过程中有很多概念,按部就班就不会出问题,顺序对实验结果的影响很大。动画制作过程中经常会混淆track和channel的概念,加上我命名没有区分,导致后期逻辑混乱。
    • Action clip操作弥足重要,因为如果没有好的clip frame length,会导致小人动作不够协调——当然这个问题也可以从制作关键帧的那步做文章。
    • 设置相机轨道的顺序会对相机跟踪的参数产生影响。
    • To Do未来打算尝试多场景渲染和利用表皮修改器进行面部描摹。

    参考资料


    相关文章

      网友评论

          本文标题:Blender实现小人行走

          本文链接:https://www.haomeiwen.com/subject/wpqcwqtx.html