VG_GraspEditor is a public script that provides a tutorial on the minimal VG API functions for accessing grasps existing in the VG grasp database as well as using the labeling interface.
A VG_GraspEditor Prefab that uses this script (as shown in above image) is added in VirtualGrasp\Resources\onboarding. This prefab can be added into any unity scene and allows runtime adding, deleting and reviewing primary grasps (see Jump Primary Grasp).
Using VG_GraspEditor you can add dynamically synthesized grasps as primary grasps into the grasp DB in runtime.
- The VG_GraspEditor Prefab shows up as an “editing pad” with a number of buttons to allow adding, deleting, deleting all, stepping through primary grasps and experimenting with the Jump Primary Grasp interactions on the object.
- This editing pad is also an interactable object so that it can be grasped and moved close to any object(s) on which grasp editing is needed.
- The grasp editing will be performed on the object currently grasped in one hand. If no object is grasped by any hand, all buttons (currently the text next to it) are grayed out to show there is no valid action on this button.
- Once an object is grasped by a hand, the relevant grasp editing buttons are enabled by showing up the button text (in black).
- When an object’s current interaction type is Trigger Grasp, Jump Grasp or Preview Grasp, the grasps are dynamically synthesized. Therefore the Add grasp button is enabled to add the current grasp into the grasp db.
- Since Preview Grasp gives uninteracted preview of dynamically synthesized grasps, this is chosen as the main interaction type for grasp editing. The first time pushing Toggle button will switch the grasped object to Preview Grasp for adding grasps. Later the Toggle button will toggle between Preview Grasp and Jump Primary Grasp for adding and reviewing added primary grasps respectively.
- If you want to immediately delete a just added grasp, click the Delete grasp button without re-grasping the object.
- If you want to delete all grasps added on this object with this hand, click the Delete all grasps button.
- If you want to experiment with Jump Primary Grasp interaction with the primary grasps, click Toggle interaction button to toggle to Jump Primary Grasp interaction type. When you then re-grasp this object, the primary grasp closest to the current wrist pose will be applied.
- When the current interaction is Jump Primary Grasp, you can also step through to review all the primary grasps by clicking the Step grasp button.
- By stepping through grasps, you can also click the Delete grasp button to delete unwanted grasps.
- There is no need to press any button to save grasps, simply close the application, and the added grasps will be saved into StreamingAssets/VG_Grasps/grasps.db in your project folder.
Using Grasps in Runtime
To use primary grasps for an object, you need to set the object’s interaction type to be Jump Primary Grasp. To do that you can
- either add a VG_Interactable component to the object and to specify for this object locally,
- or specify in Global Grasp Interaction Settings if you want all objects to be only grasped using added primary grasps,
- or use the API function SetInteractionTypeForObject to change this object to use primary grasp in runtime,
- or use the API function SetGlobalInteractionType to change all the objects to use primary grasps in runtime.
Important Note on the Files
The information on added grasps will be stored in the grasp .db file which you will find in each project’s StreamingAssets/VG_Grasps/ folder by default.
The VirtualGrasp plugin will automatically load this file at initialization (e.g. start the game), and save it at releasing (e.g. stop the game).
By this follows that:
- All scenes will use the same added grasps, since the .db file is saved in and loaded from the project.
- If you you are using a version control system and want to share the data with others, you have to commit the .db file to the repository.