Humanoid 概要

概要

VRM 的 Humaniod,主要根据能否接受运动捕捉中的 Forward kinematics(FK/正向运动学) 的运动作为标准来决定。

假设一帧的 动作(姿势) 由以下的信息来表示。:

为了让一个 Gltf Scene(Unity Hierarchy)接收这些数据并再现相同的姿势,需要满足以下条件:

备注
更具体地说,如果骨骼的长度不同,姿势就会有些偏差。针对这种问题的解决方案,我们称之为重定向,但在VRM中并没有专门的规范。如果 股骨、膝盖、脚踝 到 脚跟 的比例不一样,就会导致站立时脚跟在地面产生一些滑移。】

因为是以 Unity 的 HumanoidAvatar 为基础决定的,所以基本上是一样的。

https://docs.unity3d.com/Manual/AvatarCreationandSetup.html

此外,为了简化程序处理,VRM 的 Humanoid 规范增加了以下内容

备注
特别是缩放是一个很复杂的问题,如果缩放中心不是原点、存在负缩放、以及XYZ轴分别有不同的缩放的话,编写程序时处理这些问题非常麻烦。

 

T-Pose

T_pose.png

对手腕和手指的初始姿态进行了规范。

 

Unity 的 Humanoid

在 Unity 中,有一个名为“Avatar”的对象。你可以将其设置为“Humanoid”模式。虽然 Avatar 是 Unity  的一个对象,但 Humanoid Avatar 的设置界面是 fbx importer(fbx导出器) 的一部分。因此,你不能从非 fbx 的数据创建包含 Humanoid Avatar 的模型。但是,由于存在能够从程序中创建 Humanoid Avatar 的功能,使得 UniVRM 能够创建 Humanoid Avatar。humanoid component

 

与 BVH 的兼容性

与初始姿势为 T-Pose 的 BVH 文件兼容。 

 

详情

骨骼列表与 Unity 文档中的 HumanBodyBones 相同。

 

相关问题

 

参考

 


Revision #4
Created 27 July 2024 07:04:53 by 北溟瞬息
Updated 2 September 2024 08:31:25 by 北溟瞬息