zoukankan      html  css  js  c++  java
  • UE4_f3视角修正

    按之前的步骤做下来,有一个小bug,当我们上下移动视角的时候,只是摄像机在旋转,所以我们可能会看到一些奇怪的东西,比如发现自己没脑袋

    我们想要的效果是能够让 手臂跟随着摄像机一起移动,也就是让我们的模型“弯腰”。

     首先在动画蓝图的动画图表中右键输入transform bone,

     在骨骼中找到有关弯腰的三个关节。

     用get control rotation来获得我们控制器的旋转值。

     运行一下大概是这样的。

     P指的是我们上下的幅度,最高是90,最低是270.(平视时是0,当向下看时会从360开始减,一直减到270)

    Y指的是我们左右的幅度。R表示的是我们的顺时针或逆时针的旋转值(第一人称中一直是0)

    复制三份transform bone,分别指向spine_01,spine_02,spine_03,并且把Rotation的RotationMode改成Add to Existing,表示将输入的值添加到原有旋转值上。

    (Translation 和 Scale 用不到,可以先关掉。)

    用一个变量Spine Rotation表示旋转值。

     

    在动画蓝图的事件图表中新增一个改变spine rotation值的方法。

    说明,因为弯腰只改变一个轴,所以其余两个轴设为与之前的一样。

    注意点一,在动画蓝图中经过测试,当改变X(Roll)时才会改变人物的弯腰状态。而get control rotation中,通过第一次的打印测试,发现Y(Pitch)才是控制器中控制弯腰的轴。

    所以要把Control的Y(Pitch)赋值给 Spine Rotation的X(Roll)。

    注意点二,经过打印测试,当我们抬头时,控制器的Y(Pitch)是从0到90的,低头时是从360到270的。而在动画蓝图中,X填为正值时是弯腰,负值时是抬头。这又是不一样的地方。

    所以做一个判断,如果>180说明我们正在低头,获得(360-当前Y值)。<180说明我们在抬头,直接乘一个负一。

    注意点三,因为我们是同时旋转了三个关节才实现的弯腰抬头,所以我们处理后的值必须/3才能赋给SpineRotation。比如说我们抬头抬到最大90,也就是每个关节最大30。

    添加脚部动画

    首先创建一个2D的混合空间(一个轴表示速度,一个轴表示方向)

    速度设为20个格子,方向设为8个格子

    在速度为360的数轴上添加Run的各个方向的动画。这里还添加了一个冲刺动画和一个静止动画。

     

    把这个混合空间拖到Unarmed_Idel/Run中。

    因为我们只想让腿动,所以我们需要一个骨骼的分层混合。

     

     注意左面的设置,从spine_01开始混合(作为区分上下身的标志),还要把Mesh Space Rotation打开。

     复制上半部分到每个状态中( jump可以不做,因为跳起的时候脚是不动的)

    用一个封装好的函数,calculate direction获得-180到180的方向值。并传入相应的参数。

    视角限制

  • 相关阅读:
    Data Mining --- Information theory:熵/条件熵/互信息(信息增益)/交叉熵(相对熵/KL距离)
    Data Minig --- Decision Tree & ID3 & C4.5 & Gini Index
    Machine Learning --- Boosting & AdaBoost & Bootstrap
    Machine Learning --- Logistic Regression
    jpa动态创建EntityManagerFactory 态设置数据库连接 EntityManager;
    Spring+jpa+access
    关于JDBC 连接Access 数据库
    关于JPA封装数据库数据到实体不调用属性的get和set的方法解决办法
    JDBC和JPA调用储存过程 接收存储过程有返回值
    springMVC+JAP整合彻底摆脱persistence.xml配置文件
  • 原文地址:https://www.cnblogs.com/reluctante1/p/12741782.html
Copyright © 2011-2022 走看看