Skip to content

PoseMapper

AmaneYamaguchi edited this page Oct 31, 2024 · 2 revisions

PoseMapperICameraRig に格納された TrackerTypeTransform の組の情報を元に Pose に値を代入することで,アバタの動作を生成する抽象クラスです. 具体的な動作生成の処理は継承クラスが行います. 各 PoseMapper は動作を生成する身体部位が重複しない限り,同一の Pose コンポーネントに対して重ね掛けすることができます(例えば VRIKMapperOVRHandMapper は重ね掛け可能).

主な継承クラス

VRIKMapper

VRIKMapper は決められた TrackerType と対応する TransformFinalIK.VRIK のIKターゲットに指定することで,アバタの全身の動作を生成します.

OVRHandMapper

OVRHandMapper はOculus Integrationのハンドトラッキング機能によって取得したユーザの指の関節に対応する Transform の姿勢をアバタの指の関節の Transform に代入し,アバタの指の動作を生成します.

アバタ動作生成の流れ

graph LR
HMD <-.->|bind| HeadIKTarget
HeadIKTarget -->|TrackerTypeを介してTransformを参照| PoseMapper
PoseMapper -->|動作を生成| Pose

Pose(("Pose"))
PoseMapper["PoseMapper"]
subgraph ICameraRig
  HMD("HMD Transform")
  HeadIKTarget("TrackerType.HeadIKTarget")
end
Loading

クラス図

classDiagram
PoseMapper --> Pose : 動作を生成
PoseMapper --> ICameraRig : CameraRigの座標を参照
LocalCameraRig ..|> ICameraRig : 実現(シングルユーザ用)
ServerCameraRig ..|> ICameraRig : 実現(マルチユーザ用)
IKMapper --|> PoseMapper
VRIKMapper ..|> IKMapper
VRIKMapper ..> VRIK
OVRHandMapper ..|> PoseMapper

class Pose
class ICameraRig{
<<interface>>
TryGetTransform(TrackerType)
}
class PoseMapper{
<<abstract>>
MapOnUpdate()
}
class IKMapper{
<<abstract>>
}
class VRIKMapper
namespace RootMotion.FinalIK{
  class VRIK
}
class OVRHandMapper
Loading

Clone this wiki locally