Character Kinematics

  • 基本假设:人体是刚体,通过关节连接形成骨骼

image.png

How to create a pose

  • Joint 不会自动生效…

  • 我们需要仔细计算每个骨骼的位置和方向

Kinematics of a Chain

  • Qi:关节i方向(全局坐标系下)

  • Ri:关节i旋转(局部坐标系下)

  • 问题:在诶出旋转后如何关节连接处的位置?

image.png

image.png

  • 首先初始化Q1-Q4为I

  • 从后往前考虑:先找到Q4相对其父结点Q3的局部旋转R4:

image.png

  • 再考虑Q3相对于Q2的局部旋转R3,这里R3也要叠加到Q4,每次叠加都是旋转关节本身+作用于其所有的自关节:

image.png

  • 继续上述过程直到算到启示的关节:

image.png

image.png

image.png

  • 同时,已知两个朝向也可以计算中间的旋转:

image.png

  • 计算关节位置要从前往后算:Pi+1 = Pi + QiLi。可以从上一步的世界坐标系位置计算下一步的位置

image.png

  • 考察终点x,可以对其进行展开得到x相对于祖先结点的相对运动

image.png

  • 若没有给出旋转矩阵而是给出旋转角θ:可以利用罗德里格公式计算旋转矩阵R

  • 旋轴带动:

    1. 局部坐标系
    2. 旋转轴
    3. 位置
  • 可以将人体关节抽象为树结构:

image.png

Types of Joints

  • 不同的骨骼转动轴不同,旋转的自由度也不同

image.png

Degrees of Freedom (DoF)

  • 自由度描述了表示状态所需要的参数

  • 3D场景中,刚体的自由度为6:

    1. 表示位置DoF=3
    2. 表示旋转DoF=4

image.png

  • 在2D平面上移动,刚体的自由度为3:
    1. 平移DoF=2
    2. 旋转DoF=1

T-Pose? A-Pose?

image.png

Retargeting between reference poses

image.png

  • 先考虑单个物体的重定向:计算RB的时候可以通过旋转的叠加求解,求解路径:B -> A -> C

image.png

  • 考虑整个关节链的重定向,首先根据单个物体的重定向公式可得:

image.png

  • 然后再根据父结点子结点关系旋转可得:

image.png

  • 最终求解可得:

image.png


Inverse Kinematics