自定义角色外观之捏脸

    “捏脸”和“换装”在游戏中一般用来实现自定义角色外观的功能,今天先来说说“捏脸”,“换装”放在下一篇博文中介绍。所谓捏脸从程序员的角度来看,就是获取到面部相关部位的SkinnedMeshRenderer组件,然后修改其BlendShape的权重。那么什么是 Blend Shape?

它其实是单个网格变形以实现许多预定义形状和任何数量之间组合的技术,在Maya/3ds Max 中我们称它为变形目标,例如单个网格是默认形状的基本形状(例如无表情的面),并且基本形状的其他形状用于混合/变形,是不同的表达(笑、皱眉、闭合眼皮),这些被统称为混合形状或变形目标。

听上去原理和Anmimtor的动画混合有些相似。

    //获取SkinnedMeshRenderer组件

    private SkinnedMeshRenderer _SapphiArtChanRenderer_Face; 

    _SapphiArtChanRenderer_Face = t.gameObject.GetComponent();


    //通过UI上的Slider改变相关权重的值

    public void SetFacial_Eye_L_Closed(float newFacialValue)
    {
        _SapphiArtChanFacial_Eye_L_Closed = newFacialValue * 100;
    }

    public void SetFacial_Eye_R_Closed(float newFacialValue)
    {
        _SapphiArtChanFacial_Eye_R_Closed = newFacialValue * 100;
    }



    //设置BlendShapeWeight权重

    _SapphiArtChanRenderer_Face.SetBlendShapeWeight(0, _SapphiArtChanFacial_Eye_L_Happy);

    _SapphiArtChanRenderer_Face.SetBlendShapeWeight(1, _SapphiArtChanFacial_Eye_R_Happy);

    _SapphiArtChanRenderer_Face.SetBlendShapeWeight(4, _SapphiArtChanFacial_Eye_L_Closed);

    _SapphiArtChanRenderer_Face.SetBlendShapeWeight(5, _SapphiArtChanFacial_Eye_R_Closed);

    _SapphiArtChanRenderer_Face.SetBlendShapeWeight(2, _SapphiArtChanFacial_Eye_L_Wide);

    _SapphiArtChanRenderer_Face.SetBlendShapeWeight(3, _SapphiArtChanFacial_Eye_R_Wide);

  通过上述三个步骤的操作可以就可以达到捏脸的效果,如果下次启动游戏你还想看到效果,记得把当前修改后的值保存下来供下次启动后初始化用哟!下面是效果图,还不错吧。 

                                      自定义角色外观之捏脸_第1张图片

你可能感兴趣的:(游戏开发,Unity)