Making a Hand Grabbable Object
Updated: Nov 3, 2025
HandGrabPoints with HandPoses can be created manually at edit-time or at runtime using Hand-Tracking (recommended).
To create them during Play Mode use the Hand Pose Recorder Wizard, which can be found in the menu Meta > Interaction > Hand Pose Recorder.
- Hand Grab Interactor: The HandGrabInteractor that will be used for recording, assign the left or right hand depending on which hand is going to be used for recording. Assigning this in edit mode and then going into play mode might lose this reference.
- Recordable: The GameObject that you are going to record poses for. It should have a RigidBody. For example, the Key or the Torch in the sample scene.
- (Optional)Ghost Provider: Assign a Ghost Provider to instantly visualize the generated poses. (Pressing the circle on the right should allow selecting the default one)
- (Optional)Poses Collection: Assign an Asset to store or load poses, so they can survive the Play/Edit mode switch. If no asset is provided, a new one will be automatically generated when Storing.
Once the HandPoseRecorder fields are ready:
- Go into Play Mode. Ensure the HandGrabInteractor reference is not missing or reassign it.
- Wrap your hand around the Recordable GameObject and hit the Record key (Space by default) or the Record Pose button in the Wizard. If a GhostProvider was assigned to the Wizard, a HandGhost should appear with the recorded pose.
- Repeat step 2 as many times as needed for the Recordable. There is no need to record left and right HandPoses as these can be mirrored later.
- Before exiting Play Mode, press the Store Poses button in each one of the recordables. This will store the HandPoses in an asset that can be retrieved in Edit Mode.
- In Edit Mode, assign the saved asset and press Load Poses so the recorded HandPoses are restored. This regenerates a HandGrabInteractable+HandGrabPoint at the relevant object for each recorded HandPose.
- You can now tweak the generated HandPoses as described below so they can be used.
Once the base HandGrabInteractable with HandGrabPoints are generated, they can be tweaked, mirrored and duplicated in Edit Mode for a more polished result.
If the HandGrabPoint has an Optional Ghost Provider attached, and it is in Edit Fingers mode (or does not have a Snap Surface attached to it). You can interactively modify the joint rotation in the Scene View. Handles are provided only for fingers set to Locked or Constrained, and only in the relevant axes.
HandGrabPoints support SnapSurfaces to specify the surface along which the recorded Position is valid. When none is provided, the hand will align at the position and rotation defined exactly at the local transform of the HandGrabPoint itself.
The snap surfaces currently available are: sphere, cylinder and box. But new ones can be added implementing the SnapSurface abstract class. To add a SnapSurface, simply attach the component to the HandGrabPoint and set the Optional Surface parameter to it. Most of the relevant values of the surface can be edited directly in the Scene View using the provided handles.
If the HandGrabPoint has an Optional Ghost Provider attached to it and it is in Follow Surface mode, you can visualize the reach of the hand within the surface by moving the mouse around (works best with Alt pressed).
If your application allows users to have custom scaled hands (the default behavior), consider providing some tweaked copies of the default (1x scale) HandGrabPoint. This enables the system to interpolate between the HandPoses and they always look well aligned.
In order to do so, one can simply duplicate the HandGrabPoint GameObject (alongside its SnapSurface) and adjust the local scale, then tweak the finger rotations and surface limits if needed and assign it back to the HandGrabInteractable.
To speed things up, the
HandGrabInteractable component also has a button named
Replicate Default Scaled HandGrab Points that will automatically generate a 0.8x and a 1.2x HandGrabPoint based on the default one. But note that tweaking to the fingers and surfaces might be needed.
Mirroring HandGrabPoints can be done either manually or automatically.
The manual approach requires duplicating a HandGrabInteractable, changing the handedness of all its HandGrabPoints and manually readjusting their positions so they align well.
With the automatic approach , once the HandGrabPoints for one of the hands are ready and linked into the HandGrabInteractable, the button “Create Mirrored HandGrabInteractable” should duplicate while mirroring all the HandGrabPoints into a new HandGrabInteractable. Still it is worth double checking the generated points.
- Input mappings: Learn about how input mappings bridge modalities and interaction types.
- Input hierarchy: Learn about the different input hierarchies.
- Multimodality: Learn about multimodality.
- Ray casting: Learn about indirect interaction through ray casting.
- Touch: Learn about direct interaction through touch.
- Grab: Learn about grab interactions for object manipulation.
- Microgestures: Learn about microgesture interactions.