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

DTW算法封装

动态时间规整算法是我们为了检测两段骨骼动画是否相似而使用的算法,为了实现给用户的动作评分的功能,我将它封装到了一个actor中。
将普通c++代码改写成Unreal C++还是比较容易的,我这里基本上只需要添加一下UFUNCTION宏然后把数组改成UE4提供的容器即可,改写之后的结果如下:
这里写图片描述
编译之后就可以在蓝图中使用JudgeActor提供的功能了。

记录每一帧的骨骼位置

由于dtw算法的输入是一段时间序列内每个骨骼的位置,所以我创建了一个ActorComponent用来记录该信息。但是这个时候我发现了一个令人绝望的事实——UE4蓝图无法使用容器存储容器(。﹏。)。然而这一点对我来说很重要,因为我要实现的功能其实有大量的重复代码是可以用多层循环解决的,这就让我很难受了。本着先做一个demo之后可以再改成c++的想法,我选择了一条错误的道路,还是实现了这个蓝图类,最后的结果就是蓝图中有数处类似下图所示的代码:
这里写图片描述
实现这个蓝图类的过程让我感受到了图形化编程还是不够靠谱啊,这一套连下来我的手都不行了,果然还是像emacs和vim一样尽量多用键盘少碰鼠标比较高效。
之后在关卡中放置两个带动画的Character,然后给他们添加上这个组件,再在关卡蓝图里面实现开始录制、结束录制、输出DTW计算结果的功能,就可以测试了。
这里写图片描述
可以看到DTW算法可以正常运作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值