animator animation

================================================animation==================================================

==animation==2016.11.06


从其他美术软件导入到unity 的有3种
一种是导入animation(可修改但需先创建animation控件。然后放进去)(可以改关键帧)===提供可修改动作
一种是导入带白色框的prefab(可拉到场景   代码增加事件 不能改关键帧)含单个动作和模型但是没颜色===提供动作和动作预览
一种是导入带白色框的prefab(可拉到场景   代码增加事件 不能改关键帧)含所有动作合成和模型但是有颜色====主要物体引用以上两个动作,所有

的动作合成可以拆分

legacy
带白色框,不含avatar,含颜色,所有动作
带白色框,不含avatar,不含颜色,带单个动作
一个含颜色和所有动作,一个含拆分后的单个动作,利用率低

修改animation的事件会影响所有共用animation的物体
prefab类可以直接在prefab上看动作
打开animation窗口可以对带animation旧控件的物体修改
大部分animation可以公用通用。主要看放入animation后里面是否有对应的节点

如果在animation新增clip(animation),那么会自动生成animator和animation

================================================animator==================================================
human
使用新的动画human可以减少avatar,可用复用AC,可以IK
带白色框的prefab,含avatar,含颜色
n个带白色框的prefab,不含avatar,不含颜色,含动作
一个含avatar和颜色,一个含动作,最大利用率
================================================总结==================================================
新版和旧版的区别。作用。好处。新版怎么换成旧版,旧版怎么换成新版
1运动重定向2过度动画预览
新版旧版修改。不需要改动美术资源
重定向和IK功能只能用于hunman
公用animation control 不共用 avatar

================================================建模==================================================
骨骼绑定和蒙皮的人形模型---
1建立模型--一般由一组多边形或三角形组成
2骨骼绑定--创建骨骼关节层级(定义了网格内部的骨骼结构及其相互运动的关系)
3关联皮肤--蒙皮(通过关节的动画来控制特定网格的运动)

================================================总结==================================================
一般来说fbx包含了模型和动画
放进去unity里面之后在rig里面可以选择动画的状态:none,Legacy,geneic,hunman
选Legacy之后又可以选择动画存储的地方

 Store in Original Roots    存储在原始根对象中动画存储在动画包的根对象中(这可能与Unity中的根对象不同)。
 Store in Nodes    存储在节点中动画与对象存储在一起。当你有一个复杂的动画设置,并希望有完整的脚本控制时使用此选项。
 Store in Root     存储在根对象中动画存储在场景的变换根对象中。当动画驱动的是有层级结构的物体时使用此选项。

选genius和human可以 选择动画适用于哪个对象 avatar
引用其他avatar 还是自己创建avatar

================================================IK==================================================
==init
 avatar.SetIKPositionWeight(AvatarIKGoal.RightHand,0);//pos权重
 avatar.SetIKRotationWeight(AvatarIKGoal.RightHand,0);//rota权重
 avatar.SetLookAtWeight(0.0f);//lookAt权重
 bodyObj.position = avatar.bodyPosition;//身体位置
 bodyObj.rotation = avatar.bodyRotation;//身体rota
 rightHandObj.position = avatar.GetIKPosition(AvatarIKGoal.RightHand);
 rightHandObj.rotation  = avatar.GetIKRotation(AvatarIKGoal.RightHand);
 lookAtObj.position = avatar.bodyPosition + avatar.bodyRotation * new Vector3(0,0.5f,1);



 
==身体,眼睛,四肢,除了眼睛不要rotation其他都要pos和rota
==主要方法
SetIKPosition(AvatarIKGoal.RightHand,pos)
SetIKRotation(AvatarIKGoal.RightHand,rotat)
SetLookAtPosition(pos)

 SetIKPositionWeight(AvatarIKGoal.RightHand,1)
 SetIKRotationWeight(AvatarIKGoal.RightHand,1)
 SetLookAtPositionWeight(1)

例如右手,他有pos和rota,rota的旋转是关节的旋转,pos在关节的移动
void OnAnimatorIK(int layerIndex)

 ==================================MatchTarget===============
用于旋转角色和攀山
==================================apply root motion ============

=========
apply root motion false
那么动作的位移不会影响到人物,由脚本控制handled by script
void OnAnimatorMove()
{
controller.Move(avatar.deltaPosition);
transform.rotation = avatar.rootRotation;//setfloat里面让状态树改变人物方向,然后根据方向来改人物旋转
       }
              或者直接设置rotation不经过动作
=========
apply root motion true
那么动作的位移会影响到人物
 ==================================总结======================================

    Update Mode:更新模式:Normal表示使用Update进行更新,Animate Physics表示使用FixUpdate进行更新(一般用在和物体有交互的情况下),

Unscale Time表示无视timeScale进行更新(一般用在UI动画中)。
    Culling Mode:剔除模式:Always Animate表示即使摄像机看不见也要进行动画播放的更新,Cull Update Transform表示摄像机看不见时停止动

画播放但是位置会继续更新,Cull Completely表示摄像机看不见时停止动画的所有更新。


    首先,我们发现的是3个默认的状态,这些状态是Unity自动帮我们创建的同时也无法删除:
        Entry:表示当进入当前状态机时的入口,该状态连接的状态会成为进入状态机后的第一个状态;
        Any State:表示任意的状态,其作用是其指向的状态是在任意时刻都可以切换过去的状态;
        Exit:表示退出当前的状态机,如果有任意状态指向该出口,表示可以从指定状态退出当前的状态机;
   
    线条中有一个勾选项Has Exit Time
    我们勾选了该项,在动画转换时会等待当前动画播放完毕才会转换到下一个动画,如果当前动画是循环动画会等待本次播放完毕时转换,所以对于

需要立即转换动画的情况时记得要取消勾选

    当我当前的动画播放完毕后就自动转换到箭头所指的下一个状态(没有其他跳转条件),此时必须勾选该选项,否则动画播放完毕后就会卡在最后

一帧,如果是循环动画就会一直循环播放。

     solo为一定切换到该状态
    mute为不能够切换到该状态
    animation包含animationState包含animationClip包含animationEvent
    animator包含animationStateInfo

    过渡为从一个动画切换到另外一个动画。中间不能逗留
    混合数为两个动画的叠加。可以在中间逗留

     cycle offset为播放偏移

layer包含状态机包含状态
状态机可以包含子状态机
=========================中文手册
http://www.ceeger.com/Components/FBXImporter-Model.html ;
 
================================================end==================================================

猜你喜欢

转载自blog.csdn.net/a133900029/article/details/80184233