-
Notifications
You must be signed in to change notification settings - Fork 0
PoseMapper
AmaneYamaguchi edited this page Oct 31, 2024
·
2 revisions
PoseMapper は ICameraRig に格納された TrackerType と Transform の組の情報を元に Pose に値を代入することで,アバタの動作を生成する抽象クラスです.
具体的な動作生成の処理は継承クラスが行います.
各 PoseMapper は動作を生成する身体部位が重複しない限り,同一の Pose コンポーネントに対して重ね掛けすることができます(例えば VRIKMapper と OVRHandMapper は重ね掛け可能).
VRIKMapper は決められた TrackerType と対応する Transform を FinalIK.VRIK のIKターゲットに指定することで,アバタの全身の動作を生成します.
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
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