BVH动捕文件导入到E3D骨骼树

1. BVH动捕文件

BVH动作捕捉文件有两部分组成,第一部分描述了静止状态下角色的基本骨骼结构,角色通常处于Apose,Tpose或Ipose姿态下.文本用树状结构描述了各个关节点的相对位置(OFFSET xyz),连接两关节点的边即是一块骨头(bone).根节点通常选在髋部的中心位置处,向下左右分别长出两下肢,向上长出脊椎/胸椎/脖子/头部,在胸椎处左右分别长出两上肢. BVH文件的第二部分是每一帧动作的关节旋转数据,每个关节一般有Zrotation/Xrotaion/Yrotation三个数据,分别对应顺序旋转的三个欧拉角, 在第一部分描述的静止状态的基础上,再加上这些旋转变换就可以还原角色此时的姿态.另外,根节点相比其他节点还会多出Xposition/Yposition/Zposition三个数据,这样可以让角色进行位置的移动,比如整体的前进,后退,跳跃等. 需要注意的是:作为生物的骨骼,一个关节只能连接一块骨头,即有公共节点的多块骨头应该作为一个整体考虑,他们共用一组旋转数据.比如连接根节点的三个bone和连接胸椎节点的三个bone.

2. E3D骨骼矩阵树

E3D骨骼矩阵树(E3D_BMatrixTree)包含了一个角色的所有骨头(E3DS_BMTreeNode骨骼节点),并将他们以简单的数状结构链接在一起,每一块骨头(E3DS_BMTreeNode)包含了以下数据:
float blen; 骨头的长度
E3D_Vector bv; 骨头的方向矢量(静止状态下)
E3D_RTMatrix pmat; 骨头的静态矩阵(静止状态下,相对其父节点的位置/姿态变换矩阵. 决定了角色的初始姿态.)
E3D_RTMatrix amat; 骨头的动态矩阵(动态状态下,相对于静止状态的位置/姿态变换矩阵)
E3D_RTMatrix gmat; 骨头的世界矩阵(相对于世界坐标系,gmat=amat*pmat*(parent->gmat))
E3D_AnimQuatrices animQts; 骨头的动画帧数据,记录了N组包含时间的四元数Qts矩阵.
可以通过对animQts插值得到某一时刻t下的amat, 然后更新gmat=amat*pmat*(parent->gmat), 最后通过gmat就可以将这个骨头在对应三维位置处渲染出来.

3. 由BVH动捕文件生成E3D骨骼树

E3D骨骼树以每一块骨头作为树的节点,而BVH动捕文件以骨关节作为树的节点,两者有一定的区别,在转换的时候需要通过前后的关节数据来生成一个骨骼节点.弄清了拓扑结构后,就可以将每一帧数据中所有关节的顺序旋转角转换成四元数,最后把结果和时间量t一起保存到对应骨头(E3DS_BMTreeNode)的animQts数组中.
另外,E3D和BVH都是右手坐标系,尽管相对单元骨骼来说其XYZ方向会不同,但是由于所有旋转矩阵都是相对的,因此不会影响最后转换结果.
Refrence BVH files at:

  1. https://github.com/BandaiNamcoResearchInc/Bandai-Namco-Research-Motiondataset
  2. https://wiki.secondlife.com/wiki/Internal_Animations
  3. https://pages.cs.wisc.edu/~pingelm/ComputerAnimation/Motions/bvh/
  4. mixamorig in https://www.mixamo.com

更多https://github.com/widora/wegi/blob/master/cpptest/e3d_animate.h +e3d_animate.cpp

BVH动捕文件导入到E3D骨骼树相关推荐

  1. 基于惯性动捕的动画应用解决方案——3DMAX篇

    ​解决方案流程: 一.穿戴动捕设备 此教程以VDSuit Full为例,具体穿戴请观看对应的穿戴视频或使用说明. 图1.1 二.连接设备并进行标定 2.1设备与软件连接 选择VDSuit Full类型 ...

  2. Maya与NOKOV度量动捕系统连接教程

    目录 一.动捕软件安装 二.数据录制.导入与导出 (一).创建   Markerset (二)数据采集 (三)数据导入 (四).数据导出 三.  插件安装与 Maya 设置 (一)插件安装 (二)Ma ...

  3. MotionBuilder与NOKOV度量动捕系统连接教程

    目录 一.动捕软件安装 二.数据录制.导入与导出 (一)创建   Markerset (二)数据采集 (三)数据导入 (四)数据导出 三.插件安装与 MotionBuilder  设置 (一)插件安装 ...

  4. 基于惯性动捕的动画应用解决方案——MAYA篇

    解决方案流程: 一.穿戴动捕设备 此教程以VDSuit Full为例,具体穿戴请观看对应的穿戴视频或使用说明. 图1.1 二.连接设备并进行标定 2.1设备与软件连接 选择VDSuit Full类型, ...

  5. Blender-绑定动画Auto-Rig Pro 重映射动捕FBX 小K结合 的问题以及解决

    基本使用的教程参考: B站教程参考[Blender/零成本动捕]使用Autorig轻松重映射动捕BVH to FBX to MMD(VMD)等自定义骨骼[附带IK] 小K的FBX文件导入会报错,需要安 ...

  6. 一文了解怎么用动作捕捉设备进行游戏动捕

    动作捕捉设备对于传统动画来说,是一个革命性的革新,最开始动作捕捉设备是应用在影视领域.随着动作捕捉设备不断革新,如早期多为使用光学动作捕捉设备,使用需要搭建大动捕棚使用,对使用环境要求高,成本也高. ...

  7. 基于惯性动捕的动画应用解决方案——MotionBuilder篇

    解决方案流程: 一.穿戴动捕设备 此教程以VDSuit Full为例,具体穿戴请观看对应的穿戴视频或使用说明. 图1.1 二.连接设备并进行标定 2.1设备与软件连接 选择VDSuit Full类型 ...

  8. Unity与NOKOV度量动捕系统连接教程

    目录 一.动捕软件安装与数据准备 二.插件安装与 Unity  设置(实时播放模式) 三.插件安装与 Unity 设置(后处理下实时模式) 使用设备:从仔动作捕捉套装(NOKOV度量) 软件:CONG ...

  9. 做过《战神》《死亡搁浅》的光子动捕专家,怎么理解动捕?

    10月9日,在2021年腾讯游戏开发者大会上(TGDC),腾讯互动娱乐光子技术中心Lead Motion Technician Kevin Wang以<捕风捉影,让虚拟更现实>为主题,立足 ...

最新文章

  1. 查找重复文件_重复文件快速查找删除
  2. python职能-python随机模块22个函数详解(下)
  3. 禁止Dockpanel拖动
  4. 网狐棋牌(八) 异步引擎 和 网狐棋牌(九) 服务引擎概览
  5. 002——php字符串中的处理函数(一)
  6. MVC5+EF6 入门完整教程四
  7. 表锁 行锁 页锁 是什么区别
  8. 简述物联网感知技术_雄芯一号芯片发布 智慧城市物联网感知体系升级换新
  9. 如何高效学习一门新技术
  10. 生物信息学研究生课程-1
  11. 今年过年收大礼,劼哥带你进阿里
  12. 一文带你由浅入深Netty异步非阻塞世界(持续更新~~~)
  13. 工具类库系列(六)-TimeTool
  14. 趣头条的开屏广告有什么优势呢?适合哪些企业投放?
  15. php解决时间2038问题,PHP实例:关于PHP转换超过2038年日期出错的问题解决
  16. 跟小静读CLR via C#-开篇及目录
  17. Wyn Enterprise 报表数据过滤
  18. 圣思园——JAVA SE Lesson 1
  19. quadro 2000专业显卡 win7计算机体验指数5.9,英伟达全新Quadro K2200专业级显卡评测...
  20. 后羿采集器怎么导出数据_数据采集教程_新手入门_常见问题清单_后羿采集器

热门文章

  1. plsql批量导出、导入
  2. 木姐说副业利用短视频,操作驾考赚钱项目副业,轻松实现财务自由
  3. 发货单表格用什么软件做
  4. html+css实现奥运五环(环环相扣)
  5. Windows 10 删除桌面右键菜单项
  6. whereis命令用法举例
  7. 增量pi和pid调节代码
  8. 51单片机抢答器c语言代码,使用51单片机实现抢答器的设计资料和代码说明
  9. google开源服务器apprtc的搭建
  10. ubuntu10.04下设置桌面特效