去年在Oculus Connect 3体验过《Lone Echo》的多人竞技玩法, 品质很高, 算是VR游戏中的一线大作了. 正好今年GDC上他们分享了一些关于VR中角色动画的一些经验, 还是比较有借鉴意义的, 毕竟Avatar做了全身的VR游戏少之又少.


这是一个太空失重背景下的游戏, 可以用手抓住环境物体或者推墙进行反向的漂浮. 一开始他们是通过手部射线了检测是不是抓住静态几何体, 通过让身体与双手保持与真人1:1的相对位置来驱动身体, 但是这样对于抓/推动态的环境物体效果不是很好. 原因是游戏逻辑的更新与物理引擎的更新会有次序上的问题.

后来抓取的实现修改成了基于物理的Constraint来代替射线.

有趣是他们在头跟手之前也加了个Constraint, 这样手抓到移动的物体上就可以带动玩家进行漂浮移动了.


手抓物体的动作在多数VR游戏中都是使用美术预先制作的动画, 但《Lone Echo》中要求可以抓住世界中的任意表面. 所以他们通过程序化的方式来计算手指抓住物体时的角度.

针对单根手指来看这个问题, 其实就是求解三角形与圆盘的交点:
1. A*搜索靠近手掌的最近三角形
2. 根据相交边找到相邻的三角形
3. 持续这个过程直到不在圆盘范围内
4. 计算与相交点接触的手指角度, 取最大的那个来旋转手指
5. 拇指使用另外的算法, 分享中没有提及

为了避免手与表面穿插, 需要在手掌与表面之间做一些距离和角度的约束.

虽然这样做减少了一些走样, 但是射线拾取到错误的表面会导致手掌吸咐到表面时的角度或位置偏转过大, 与真实手的位置不同步后一下就让人出戏了(影响VR体验). 所以需要选择一个同步代价最小的位置.


双臂的动画是比较难模拟的, 这是因为我们只有三个点的位置(朝向): 头, 左手, 右手. 对于肩, 胸, 肘的信息是我们是不知道的, 只能通过IK算法进行估算.

在肩与手的位置确定的情况下, 我们只需要估算肘部的转动角度, 肘部的弯曲角度只与肩到手的距离有关系, 是确定可以计算出来的.

肩部位置的估算涉及到锁骨的伸展和朝向. 朝向指向手的方向, 伸展通过一条手肩距到伸展量的曲线映射进行估算.

胸部的朝向通过混合三个方向的权重进行估算: 头的观看方向, 头到左手的方向, 头到右手的方向. 运行时也会调整这些权重的分配, 因为手离胸近的时候它的权重就小了, 如果手在身后, 那就完全忽略掉它的影响.

手臂的长度是可以动态调整的, 因为虚拟手的位置必须与控制器的位置1:1进行同步.

所以手臂的IK估算一共有5步.


对于脊柱和双腿的运动模拟, 主要是通过角度约束从脖子一级级往下传递, 与双臂的IK是分开计算的. 由于《Lone Echo》是一个太空行走游戏, 所以不需要处理双腿与地面的走路/下蹲等, 只需要根据位置和速度进行模拟跟随躯干即可.
对于待机/推开/观看等, 是通过叠加动画师制作的动画来实现的.

总结: 《Lone Echo》这种太空失重背景的游戏比较少见, 所以其中的攀爬漂浮与双腿的处理不是很具备通用性, 不过手指的抓握模拟与双臂的IK解决思路是值得每个VR游戏学习的, 目前也有一些IK中间件专门针对VR下的三点驱动的FullbodyIK做出了一些尝试, 相信随着技术的成熟, 以后的VR游戏不再是只有一个头和两只手了.

GDC2017: 《Lone Echo》中的VR动画相关推荐

  1. 如何在Unity中制作VR全景动画

    超简单的引言 本教程介绍的是如何一个人制作出像模像样的VR全景动画.笔者没有去详细的研究过动画的制作方式,或者说根本就不了解啊,所以本文章只是门外汉的一次自嗨,请勿认真,作为一种参考即可. 一 总览 ...

  2. Tvori推出2.0版本,让VR动画制作更简单

    升级后的Tvori已经变成了一个VR动画制作利器. VR动画制作工具Tvori去年一上线,便得到不少创作者的认可.最近,Tvori迎来了2.0版本,其操作界面.场景以及功能都发生了重大的改变,这一次将 ...

  3. 访日本Marza团队:Unity引擎制作VR动画实践

    在UNITE 2016 Shanghai上,日本世嘉飒美集团旗下的动画制作公司Marza引得了满堂喝彩,其使用Unity引擎制作动画的经验吸引了许多开发者膜拜学习.在演讲之后,我们采访了Marza团队 ...

  4. Unity中减少VR晕眩症的实用技术(Yanlz+Unity+XR+VR+AR+MR+SteamVR+晕眩症+征兆冲突理论+视野+帧速+相对运动错觉+光场VR+立钻哥哥+==)

    <基于Unity与SteamVR构建虚拟世界> <基于Unity与SteamVR构建虚拟世界> 版本 作者 参与者 完成日期 备注 SteamVR_Unity_V01_1.0 ...

  5. 12个Unity5中优化VR 应用的技巧

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50176429 作者:car ...

  6. 在UE4中创建CG动画 How to create a movie in Unreal Engine 4 using Metahuman

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:1.55 GB |时长:1h 16m 你会学到什么 如何在 ...

  7. Cocos2d-x 3.8.1+Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画

    Cocos2d-x 3.8.1+Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画 引子 这段时间一直努力在把早期版本的拇指接龙游戏(Cocos2d-x 2.2.3+CocoStud ...

  8. android中设置Animation 动画效果

    在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...

  9. Unity中BVH骨骼动画驱动的可视化理论与实现

    前言 找了很久使用BVH到unity中驱动骨骼动画的代码,但是都不是特别好用,自己以前写过,原理很简单,这里记录一下. 理论 初始姿态 在BVH或者其它骨骼动画中,一般涉及到三种姿势:A-pose,T ...

最新文章

  1. TLS1.3 协议的Golang 实现——ClientHello
  2. OpenCV——KNN分类算法 摘
  3. 线程安全的无锁RingBuffer的实现
  4. 全景视频的跟踪与合成方法
  5. 一天1个机器学习知识点(二)
  6. firefox 39 linux,Mozilla Firefox 39.0 Beta 4 发布下载
  7. 下一代网络安全将全部基于行为识别
  8. python 经典100例(1-20)
  9. 烦人的幻灯片(信息学奥赛一本通-T1395)
  10. Ubuntu中切换用户
  11. RDS for mysql备份恢复到本地参考文档
  12. 今天提前回去吧,整理一下,为下周做好准备。
  13. 清华大学操作系统OS学习(七)——进程控制
  14. 实用主义学python 下载_麻瓜编程:实用主义学Python(5套全)
  15. 220421-一些电平转换电路
  16. 机电传动控制第二周作业
  17. 封装win7系统,安装系统时提示:windows无法完成系统配置,若要尝试恢复配置,请重新启动计算机?
  18. 计算机限制360打不开,360安全卫士软件突然打不开是什么情况?问题原因及解决方法...
  19. 【目标检测】《DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection》论文阅读笔记
  20. 如何有效选毕业论文题目?

热门文章

  1. Zen Coding — a new way of writing HTML and CSS code
  2. 奇文共欣赏——《史记·陈冠希本纪》
  3. 人工智能进入十年黄金窗口期
  4. python中面向对象空间时间_python-面向对象的命名空间和组合
  5. zemax初始结构参数设置、选择初始结构依据、初始结构选择的常见途径
  6. 袁国宝:黄光裕不懂认命,张近东不知进退
  7. 微信支付php详解 php,ThinkPHP框架整合微信支付之刷卡模式图文详解
  8. 移动硬盘在电脑上的设备和驱动器中没有读出来,另一台电脑上是好的
  9. ros入门与控制无人机
  10. 如何使用Globus从NCAR官网上下载JRA55数据