V1.0.0 (2022-12-07)

Major Functionality Changes:
  • Breaking change: The Sensor/Avatar configuration in the MyVirtualGrasp component has been refactored:
    • While before, a list of Avatars could be assigned to each element of a list of Sensors,
    • now maximally 2 Sensor setups can be assigned to each element of a a list of Avatars (see MyVirtualGrasp 1.4.0).
    • If you are updating to this version from an older version, you need to re-configure your MyVirtualGrasp component.
  • Breaking change: The old GetNumGrasps API function changed name to GetNumGraspsInDB to avoid potentially confusing user to think GetNumGrasps is to obtain currently executed grasps on an object.
    • Together with this change, a new api function GetNumPrimaryGraspsInDB is added to give number of enabled primary grasps in the grasp DB.
  • Breaking change: Enum VG_AvatarType has been removed. The old RegisterAvatar API functions have been split upto 3 functions depending on avatar type:
    • RegisterSensorAvatar for sensor controlled avatars, where several overloads exist. The most common is to register an avatar with a single sensor setup without any network output. A secondary sensor setup and network output can be added.
    • RegisterRemoteAvatar for remote controlled avatars in multiplayer applications, and
    • RegisterReplayAvatar for replay controlled avatars.
  • VG_HandProfiles were introduced to simplify the external controller mapping for custom hand models.

  • ChangeObjectJoint (two overloaded functions) and RecoverObjectJoint do not have any function signature change. However from this version, VG will internally remove Rigidbody or ArticulationBody on a physical object if the function call intends to change object joint to a constrained joint type (non-floating), and recover just removed Rigidbody or ArticulationBody when it changes back to floating joint type. This change makes it convenient for Unity developers to benefit from VG’s object articulation system on both physical and non-physical environments.

  • Added “ensemble physical object” support. That is when assembling two physical objects through ChangeObjectJoint, as an example shown in VG Onboarding Task7, grasping the child objects (when child became non-physical due to object change to constrained joint type), the parent which is still a physical object will follow as if the parent-child has become an ensemble physical object.

  • When an object’s Rigidbody component has Rigidbody.isKinematic true, VG will consider this object as a non-physical object. (In previous versions whenever an object has Rigidbody component, even when it is kinematic, VG considers the object physical resulting in some unwanted interaction behaviors.)
GUI / Component Changes:
  • Only one enabled VG_Articulation component is allowed now, and the enabled component reflects the current object articulation status.
  • VG_Articulation for constrained joint types now allows selection of “Motion Type” to be Limited or Free, where Free means there is no limitation along the constrained dof(s) of this joint.
  • VG_GraspEditor
    • The prefab has improved 3D shape and texture, and
    • has been moved to ThirdParty/VirtualGrasp/Resources/GraspEditor/ to separate it from the Onboarding demo scene.
    • VG_GraspEditor script exposed an option Editing Interaction Type to allow developers to choose the main interaction type to use when adding primary grasps.
  • “VirtualGrasp” Menu cleanup. Some obsolete entries were removed.
  • VG_Articulation, VG_Interactable and MyVirtualGrasp scripts are deactivated during runtime to better reflect that changes to them are only valid in editor mode.
  • Grasp and Release animation speeds in MyVirtualGrasp GUI integer fields were replaced by range sliders.
API Changes:
Other / Internal Changes:
  • Fixed a bug: when OnGraspTriggered event invoked, sometimes m_selectedObject is null.
  • Fixed a bug: sometimes an interactable object’s selection weight becomes negative causing this object not interactable.
  • If an object is set to afford INDEX_PUSHABLE interaction, VG library will switch its interaction type to STICKY HAND to avoid some unneccssary debug outputs.
  • VG onboarding task 5 added an additional prefab, “Task5_bottle_with_rigidbody”, in the onboarding scene to show the same AssembleVGArticulation.cs also works on the bottle and cap when they are physical objects.
  • Added VG onboarding task 7 showing off using VG Articulation to assemble a chain with physical objects.
  • For VG onboarding task4 and task5, the function for assembling has improved computation of desired object rotation; the assembling and dissasembling code are called in LateUpdate instead of Update to sync with player input.
  • Multiplayer (not available in free or pro versions) VG support now allows multiple players grasping on the same object at the same time, and also works with complex object settings.
  • Explicit asset database refresh added when VG creates files (such as files for mesh baking input and output).
  • Adjusted In-Editor tutorials to follow the new changes in the VG API and GUI.
  • Improved the project file structure. Among others made it possible to delete the example onboarding folder and resources to make the plugin lighter without affecting VG functionality.
  • Fixed a bug: Preview grasp is not able to pick up a physical object once grasp is triggered. (fixed known issue from 0.15.0)
  • Fixed a bug: If Haptics is enabled in Sensor Control specifications, haptics feedback is not consistently given at the moment of grasp, release or collision on build. (fixed known issue from 0.15.0)
  • The .NET TargetFrameworkVersion has been downgraded from 4.7.2 to 4.7.1 since it caused some issues for Unity+VSCode users.
  • Fixed a bug: when pause a VR app with Occulus button or remove headset, the grasp pose is lost.
  • Improved the status sync of VG_Articulation on a Game Object with the interactability of that objects.
  • Fixed a bug: the second avatar registered has twisted finger bones.
  • Improved the VG_MainScript inspector DebugSettings to become a proper foldout menu.
  • Fixed a bug: crashing when JumpGraspObject, SwitchGraspObject, or TogglePrimaryGraspOnObject is called on an object without mesh assigned to it.
Update to VG Core library:
  • Improved the grasp interaction on object that has rotating joint types.
  • Improved the grasp interaction on floating objects with multiple hands.
  • Completed planar joint features by adding discrete states and ChangeObjectJoint support. (fixed known issue from 0.15.0)
  • Reduced dynamic grasp finger-object penetration when pinch grasp small elongated objects.
  • Fixed a bug: hand twisting when registering multiple avatars of same structure was fixed.
Known Issues:
  • When graspable object is very close to an index pushable object, after grasp the object, pushing gesture may not form.

  • When index finger tip moves in a different direction from wrist, pushing can get double triggered.

  • Multiplayer (not available in free or pro versions) with VG network message still can not solve complete object sync for new player registration.

  • A few events such as OnObjectDeselected do not function correctly for proxy avatars in multiplayer (not available in free or pro versions) scenes.

  • VG main loop currently runs in FixedUpdate rather than Update in order to synchronize VG powered hand object interaction with physics calculation in Unity. This can cause some visual inconsistency showed as non-smooth hand movement with/without holding an object. We recommend you to resolve this by setting the Time.fixedDeltaTime to match the refresh rate of the device you are targetting (e.g. 1f / 72f to target 72 hz displays).

  • VG_Recorder only allows to assign one Replay Avatar, which makes it not work if you have separate hand models when using custom avatar supported by VG Pro version.

  • SetSensorActive does not have effect. If you set it inactive, the avatar’s hands are still controlled and moved by the sensor / controller.

  • “VirtualGrasp -> Make Interactables Readable” helper function is not working. For now you have to manually check “Read/Write enabled” checkbox in the model inspector of your object in order to interact with the object or bake grasp.

  • When an object is held in hand(s), runtime changes of physical properties of Rigidbody or ArticulationBody get lost once this object is fully released.

  • If an object has constrained joint, pushing Step grasp button on VG_GraspEditor to review primary grasps on this object does not work.

  • While a hand grasps a physical object to collide with another physical object, if any colliding object’s collider is disabled, the controller grasping the object will continue to have vibrating haptic feedback until hand releases the object.

  • You can not use OVR Hand (which can be found in the Oculus Integration under Oculus\VR\Scripts\Util\OVRHand.cs) together with VG controllers at the moment, as they both are independently affecting the hand model.