(个人)VR实时交互的太极拳学习系统创新实训第二周(2)

原创 2018年04月15日 10:55:51

     这篇博客,主要介绍一下,在开始关卡关于摄像机动画和Matinee动画的一些制作技巧和心得。

     因为之前也没有用UE4 制作过摄像机动画,因此进入UE4官方文档查找与摄像机动画有关的方法。

     解析来是具体的制作过程。

  1. 首先在关卡中创建一个Matinee组件:

   

  2 .在选中Matinee,在左侧Matinee的细节栏可以看到“打开Matinee”选项:双击打开编辑器:


3.在场景中添加自己想要的摄像机:


4.在相机的Depth of field 属性中为相机设置属性:


5.接来啦要将摄像机添加进Matinee的动画轨迹中,选中Camera,在Matinee面板的左下角的空白处选择Add New Camera Group,之后可以看到一个当前摄像机的轨道,包括,Movement轨道和FOVAngle轨道。


6.拉长动画轨道:按着Ctrl键用鼠标左键拖动红色三角形,可以拉长时间长度,


7.之后在0.0处,选中Movement轨道,按Entry键,可以看到生成了一个小三角。这个小三角就表示已经在此处KEY帧。


8.打开世界视图,在关卡中将摄像机摆放在自己想要的位置:,这样一个位置就确定了。接下来回到Matinee窗口,将时间快移动到2.0处,按下Entry键,在此处再次添加关键帧。


9.在世界界面中,调整2.0出摄像机的位置,可以看到生成了一条黄色轨迹曲线。这条线就是摄像机当前的轨迹。


10.利用脚本对轨迹进行修改:

UCLASS()  
class MYFIRSTCODE_API AAvatar : public ACharacter  
{  
    GENERATED_BODY()  
  
public:  
    AAvatar();  
    virtual void BeginPlay() override;  
      
    // Called every frame  
    virtual void Tick( float DeltaSeconds ) override;  
  
    // Called to bind functionality to input  
 SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;  
    
    void SetupPlayerInputComponent(class UInputComponent* InputComponent) override; 
    void MoveForward(float amount);  
    void MoveBack(float amount);  
    void MoveLeft(float amount);  
    void MoveRight(float amount);  
  
    void Yaw(float amount);  
    void Pitch(float amount);  
      
      
};

11.之后用同样的方法,创建另外两个机位。


12.将二号机位的开始时间拖到一号机位的结束时间上,

13.在世界中,为二号机位制作一个环绕的效果。


13.三号机位雷同。

14.为了控制时间,在右侧的红色三角处,点击右键,选择Move To Longest Track Endpoint,可以使动画序列时间自动匹配上。


15.接下来就需要添加整个动画序列了,在“轨道”窗口的空白处,单击右键,添加“Add New Director Group”,会在上方出现一个DirGroup:



16.在Director轨道上KEY帧添加不同的摄像机动画,每个摄像机动画的长度可以确定,用不同的颜色长度表示不同长度的摄像机动画。



17.之后保存Matinee,此时会显示需要关闭Matinee。

18.打开关卡蓝图,让关卡开始时就播放Matinee动画。首先选中Matinee再打开关卡蓝图,此时才可以在关卡蓝图中添加一个Matinee的引用。注意一定要选择Matinee才可以。(上图是高亮了Matinee,下图是未高亮)



19.使用Set View Target with Blend 方法来进行画面的替换:

const float SmoothBlendTime = 0.25f;  
TimeToNextCameraChange -= DeltaTime;  
if (TimeToNextCameraChange <= 0.0f)  
{  
    TimeToNextCameraChange += TimeBetweenCameraChanges;  
  
    // Find the actor that handles control for the local player.  
    APlayerController* OurPlayerController = UGameplayStatics::GetPlayerController(this, 0);  
    if (OurPlayerController)  
    {  
        if ((OurPlayerController->GetViewTarget() != CameraOne) && (CameraOne != nullptr))  
        {  
            // Cut instantly to camera one.  
            OurPlayerController->SetViewTarget(CameraOne);  
        }  
        else if ((OurPlayerController->GetViewTarget() != CameraTwo) && (CameraTwo != nullptr))  
        {  
            // Blend smoothly to camera two.  
            OurPlayerController->SetViewTargetWithBlend(CameraTwo, SmoothBlendTime);  
        }  
    }  
} 

20.用Play方法播放Matinee的引用:


21.连接上先前制作的开始界面,借完成了启动关卡的所有操作。因为动画长度为15s,因此使用Delay方法,停止15s再生成UI界面。


(个人)VR太极拳学习系统-创新实训第二周(2)

语音控制集成至关卡蓝图 上次直接在actor蓝图中使用了sphinx-ue4插件,目的只是为了测试该插件的可用性,在确认完确实可用之后,需要根据我们项目的情况来决定如何使用它。 由于我们在不同的关...
  • dying_isaac
  • dying_isaac
  • 2018-04-15 23:38:54
  • 8

(个人)VR太极拳学习系统-创新实训第二周(1)

语音控制系统实现方案改变 上次说到了ue4中实现语音控制系统需要先获取语音输入,然后再进行处理,而获取麦克风输入有三种途径。这一周我先尝试了使用网络子系统下的语音模块,但是照着youyube上一个视...
  • dying_isaac
  • dying_isaac
  • 2018-04-14 02:15:30
  • 11

(个人)实时交互太极拳学习系统创新实训第一周

本周工作本周我做的工作主要是通过计算两个不同动画在播放时同一骨骼相对位置的欧式距离,来对算法进行一个简单的测试。首先在UE4蓝图中写好TeacherDemo与StudentDemo的脚本,再在VS中写...
  • qq_17615227
  • qq_17615227
  • 2018-04-07 21:27:07
  • 12

(个人)VR实时交互的太极拳学习系统创新实训第二周(1)

主要工作:            本周完成的第一个工作是完成了材质,系统进入界面和动画的制作。工作介绍:       1.首先创建一个空的关卡:名字取为start                   ...
  • little_raspberry
  • little_raspberry
  • 2018-04-12 19:03:51
  • 27

(个人)AR电子书系统创新实训第一周(1)

安卓AR宣传手册项目此次,我们要做的项目是一款对宣传手册或海报的内容进行增强现实浏览的安卓手机应用。预想的最终效果是: 通过手机人们可以看到纸上的图片运动了起来,就像《哈利波特》中的魔法报纸一样,这样...
  • Jinfan951108
  • Jinfan951108
  • 2017-05-13 21:41:20
  • 200

(个人)VR太极拳学习系统-创新实训第一周(1)

项目简述 我们预计开发一个基于虚幻4引擎的帮助用户学习太极拳的实时系统,该系统会使用到当前比较热门的人机交互技术来实现功能,例如虚拟现实、动作捕捉、语音控制等。我们预计当该系统开发完毕后,它应该能够...
  • dying_isaac
  • dying_isaac
  • 2018-04-07 18:09:35
  • 16

(个人)太极拳学习系统创新实训第二周(二)

Noitom与UE4的实时连接Noitom官方提供了动捕设备与UE4链接的插件:下载地址。同时也配备了使用文档。不过只按文档上的说明是无法完成实时连接的,还要结合视频上的说明,因为文档中可能作者疏忽漏...
  • qq_17615227
  • qq_17615227
  • 2018-04-15 22:21:37
  • 3

(个人)太极拳学习系统创新实训第二周(一)

实时学习取消了之前适用的计算欧式距离的方法,改用碰撞检测的方式。在学生的各个主要关节添加Sphere Collision,再添加一个隐藏的教师类InvesibleTeacher,该类同样在各个主要关节...
  • qq_17615227
  • qq_17615227
  • 2018-04-11 22:01:00
  • 6

(项目)实时交互太极拳学习系统创新实训第一周

    本周我们首先测试了简单的基于欧式距离的匹配算法,并发现了其中的问题。在阅读相关论文后,了解到DTW算法与基于特征向量匹配算法。经过讨论,我们认为在学习过程中可以使用碰撞检测的方式,对每个关节附...
  • qq_17615227
  • qq_17615227
  • 2018-04-08 14:54:34
  • 8

(个人)实时交互的太极拳学习系统创新实训第二周(二)

实现DTW算法这几天我在VS里用C++初步实现了DTW算法,其实结合项目,我要用到的DTW算法算是简单版了,因为最后不需要逆向搜索出最短路径,只要一个distance。目前能够处理一维数据了,并且经我...
  • qq_33244381
  • qq_33244381
  • 2018-04-15 20:45:39
  • 9
收藏助手
不良信息举报
您举报文章:(个人)VR实时交互的太极拳学习系统创新实训第二周(2)
举报原因:
原因补充:

(最多只允许输入30个字)