Poser
Introduction
Poser is the module responsible for procedurally generating a grabbing pose around an object. This module can be used to pose a ghost hand so the resulting pose can be applied to master hand before performing a snap interaction.
Objects around which grabbing pose can be generated must have the Posable component attached.
Pose generation
The process of pose generation is performed as follows:
Hand is placed and rotated so hand palm center is (desirably) contacting the object.
Each finger bone is rotated iteratively from an initial pose to a goal pose.
A sphere cast is performed through each bone searching for colliders that might be intersecting the bone.
If that collider is found, lower bones won't be rotated in following iterations.
Model
Hand: Parent model (HandModel) that this module will be connected to.
Posable: Object around which grabbing pose will be generated.
Poses
Opened Hand Pose: Pose where all 5 fingers are extended.
Index Pinch Pose: Pose where thumb tip and index tip are in contact. This pose will be used as goal pose for objects where
Posable.handGesture
is Index Pinch.Full Pinch Pose: Pose where all 5 fingers are in contact. This pose will be used as goal pose for objects where
Posable.handGesture
is Full Pinch.Precision Grip Pose: Fist pose where thumb relies on middle fingers. This pose will be used as goal pose for objects where
Posable.handGesture
is Precision Grip.Power Grip Pose: Fist pose where thumb relies on index finger. This pose will be used as goal pose for objects where
Posable.handGesture
is Power Grip.Custom End Pose: Other arbitrary pose not included above. This pose will be used as goal pose for objects where
Posable.handGesture
is Custom andPosable.customEndPose
is null.
Control
Max Distance: Distance limit for the raycast that goes from hand palm to object.
Ghost Matches Master Wrist: If disabled, hand palm of ghost representation will be in contact with the object.
When Pose Point Is Null: Pose that should be applied when
PoserModel.posable
is null.Use Layer Masks: If enabled, only collision layers specified in
PoserModel.layerNames
will be considered while generating the pose.Layer Names: Layers that will be considered during pose generation. The resulting pose can make finger bones to pass through colliders which layer names are not included in this list.
Performance
Max Iterations: How many rotation steps will be applied to each finger bone during pose generation. Low number of iterations will translate into greater rotations applied to each finger bone on each iteration which is quicker but it can make some bones to intersect colliders. High number of iterations can be expensive but it will generate the pose with more precision.
Only Finger Tips: If enabled, a finger will stop curling into goal pose when its tip touches an object's collider. This option enables finding the pose sooner but at the cost of precision as if some inner finger bone touches the object before the finger tip, this collision won't be considered.
Debug
Draw Lines: If enabled, a line will be drawn from the palm center of the ghost representation to the position of the Rigidbody linked to the posable object.
View
Events
On Set Posable: Event invoked when property
PoserView.posable
is set or modified. ModifyingPoseModel.posable
won't trigger this event.
Last updated