V1.0.0 - rc2 (2022-11-18)

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 (see MyVirtualGrasp 0.15.0),
    • now maximally 2 Sensor setups can be assigned to each element of a a list of Avatars (see MyVirtualGrasp 1.0.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 prefab has improved 3D shape and texture. And Preview Grasp is added into the Toggle button control to allow using it as the main interaction to search and add 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.
  • 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.
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.
Known Issues:
  • When graspable object is very close to an index pushable object, after grasp the object, pushing gesture may not form.

  • 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).

V0.15.0(2022-07-27)

Major Functionality Changes:
  • Breaking change: The sensor configuration in MyVirtualGrasp has been refactored:
    • Each controller profile (earlier VG_AutoSetup) has been ported into a ScriptableObject of type VG_ControllerProfile (in Resources/ExternalControllers), uncluttering the MyVirtualGrasp interface.
    • To resolve update issues: for a sensor in avatar in MyVirtualGrasp, just drag and drop the controller profile .asset you want to use into the “Profile” slot.
    • You can customize the profiles fully now.
    • The profile supports list of controller names, separated by ‘;’, in order of priorization. For example “OculusHand;UnityXR” (assuming that you have enabled both controllers properly) will use Oculus hand tracking as a priority, but if no hands are tracked, it will fallback to UnityXR controllers.
    • VG_AutoSetup has been removed from the API and GUI.
    • Origin transform has been kept in MyVirtualGrasp to allow overwrite of the name-based origin in the VG_ControllerProfile.
  • Breaking change: VG_SynthesisMethod has been removed.
  • Breaking change: VG_GraspStudio related script, resources and prefab have been removed, and is replaced with VG_GraspEditor which is a much simpler interface that can be used in runtime in any client’s unity project.
GUI / Component Changes:
  • Avatar Model Field removed to unclutter the interface. We always assume humanoid hand models for now.
  • If your version supports networking (Pro feature), you can now enable DebugSettings->UseNetworkIDs to set network ID for avatar’s left/right hand (through MyVirtualGrasp->Avatar), and set network ID for object (through VG_Articulation).
  • VG_Articulations / VG_Interactables will be grayed out during runtime to make clear that changing them has no effect. To change them, use the adequate API functions.
  • All changes triggered by API functions that change VG_Articulations or VG_Interactable (except RecoverObjectJoint) are now reflected in the Inspector components.
  • The control flags (that were a list of checkboxes in each Sensor before) have been replaced with a nicer VG_SensorControlFlags [Flags] enum. Due to the change above related to VG_ControllerProfile, they were also moved into VG_ControllerProfile assets.
  • Slightly re-ordered some Global Grasp Interaction Settings in MyVirtualGrasp.
  • VG_ExternalController cleared up and simplified.
  • Bugfix: when anchor of VG_Articulation is not set, no change needs to be reflected on anchor when calling API functions such as ChangeObjectJoint.
API Changes:
  • Uncluttered API from a number of classes and enums that did not need to be public.
  • TOGGLE_SYNTHESIS and TOGGLE_INTERACTION removed from VG_EditorAction.
  • GetBroadcastSignal – if your version supports networking (Pro feature) – was extended with a flag argument to be able to pick out specific parts of the network signal.
  • SetAvatarSpecificObjectSelectionWeight and ClearAvatarSpecificObjectSelectionWeights added, allowing to specify different selection preferences on an object for different avatars.
  • SetObjectJointState added to set an articulated object’s state in runtime.
  • Formerly deprecated SetGestureDuration and SetPushAngleThreshold are removed.
  • Formerly deprecated ResetObject and ResetAllObjects are removed.
Other / Internal Changes:
  • The .NET TargetFrameworkVersion has been downgraded from 4.8 to 4.7.2 since it caused some issues for Unity+VSCode users.
  • Debug messages that come from the native VG library to the console have been equipped with “context” as well (if applicable), meaning that selecting the message will highlight the GameObject the message relates to.
  • New external controller “UnityInteractionHand” added that supports controller supported by Unity’s action-based Unity Interaction Toolkit (together with “XRI Default Input Actions.inputactions” in Resources).
  • VG_ExternalControllerManager runtime optimizations.
  • Bugfix: rig registration now also considers hidden bones.
Update to VG Core library:
  • Dramatic runtime performance optimization for dynamic grasping
  • Improved pinch dynamic grasp on small objects. (fixed known issue from 0.14.0)
  • Always make SwitchGraspObject and JumpGraspObject succeed to grasp the target object. (fixed known issue from 0.14.0)
  • Fixed a crashing bug: when an object and all its upstream objects have FIXED VG_Articulation joint, when grasped by two hands, when one hand releases crash happens. (fixed known issue from 0.14.0)
  • Fixed a crashing bug: networking objectSignal will not crash anymore when invalid key is provided.
Known Issues:
  • When graspable object is very close to an index pushable object, after grasp the object, pushing gesture may not form.

  • A few events such as OnObjectGrasped and OnObjectDeselected do not function correctly for proxy avatars in multiplayer scenes.

  • The planar joint does not support discrete states and ChangeObjectJoint as yet.

  • Preview grasp is not able to pick up a physical object once grasp is triggered due to event handling is not taking care of this interaction type yet.

  • If Haptics is enabled in Sensor Control specifications, haptics feedback is not consistently given at the moment of grasp, release or collision on build.

  • MakeGesture have a bug when choose gesture from VG_GraspType.FLAT.

  • When using the VG_GraspEditor on Android, the grasp database is not modified. We recommend for now to do all grasp editing in the Unity Editor.

V0.14.0 (2022-06-17)

Major Functionality Changes:
  • Breaking change: ChangeObjectJoint is extended with one additional input parameter “new_anchor_transform”.
  • Physical objects are allowed to have disabled VG_Articulation components with any constrained joint types. Note the enabled VG_Articulation can only have Floating joint type.
  • Customized selection weight (different from default value 1.0f) will be recovered when object is switched from hidden to selectable again to enable interaction.
GUI / Component Changes:
  • SteamHand.cs added as new external controller to support any controllers supported through SteamVR (for example Knuckles).
  • When using finger tracking devices, Finger Control Type option – “BY_ANIMATION” is disabled, so only recommended BY_SENSOR_FULL_DOFS is used.
  • GUI issues of some Unity versions resolved by making lists [NonReorderable].
  • Pause / Resume replay of recorded sensor data control is added to VG_Recorder component: Shift + Replay Sequence Key is used to pause or resume replay.
  • MyVirtualGrasp’s elements have been re-ordered. For example: controllers at top to be closer to AutoSetup, GraspButton section removed and merged into Interaction settings.
  • All AutoSetup options have been renamed to better reflect the names of the external controllers.
API Changes:
Other / Internal Changes:
  • Onboarding scene object models are improved and sound effect added.
  • Guard mesh and rig are compatible when registering avatars.
  • Using special characters for object name in Unity is allowed and won’t affect VG functionality anymore.
  • A couple of text optimizations to the VirtualGrasp Tutorials to improve understanding.
  • Bugfix to avoid NullReference if a ForceReleasedObject is deleted in the same frame.
Update to VG Core library 0.11.0:
  • Fixed bug that is examplified in onboarding Task 3: after assembling cap to the bottle where cap becomes bottle’s child, then grasp bottle and cap together could make cap move off the initial position relative to the parent bottle. (fixed known issue from 0.13.0)
  • Fixed bug on if game object’s pivot is relatively far away from mesh center, there is strange interactive behavior on PRISMATIC joint (both through VG_Articulation or ArticulationBody): the rotating movement of controller can result in unexpected translation of object along the joint axis. Other constrained joint types are also affected. (fixed known issue from 0.13.0)
  • Fixed bug on if an object has rotational VG articulation joints, when switch from two hands grasping to one hand, or when one hand grasps an object at the moment of another hand releasing it, the remaining grasping hand have trouble to control the constrained object movement. (fixed known issue from 0.13.0)
  • Two hands grasp interaction with an object is improved. Both hands now contribute to the position and rotation changes of the grasped object.
Known Issues:
  • When graspable object is very close to an index pushable object, after grasp the object, pushing gesture may not form.

  • A few events such as OnObjectGrasped and OnObjectDeselected do not function correctly for proxy avatars in multiplayer scenes.

  • The planar joint does not support discrete states and ChangeObjectJoint as yet.

  • Dynamic Grasp on small or thin objects sometimes thumb has no contact on the object.

  • Preview grasp is not able to pick up a physical object once grasp is triggered due to event handling is not taking care of this interaction type yet.

  • If Haptics is enabled in Sensor Control specifications, haptics feedback is not consistently given at the moment of grasp, release or collision on build.

  • MakeGesture have a bug when choose gesture from VG_GraspType.FLAT.

  • ResetAllObjects and ResetObject are not working properly.

  • SwitchGraspObject and JumpGraspObject may fail due to bad position of the target object with respect to the hand.

  • Crashing bug: when an object and all its upstream objects have FIXED VG_Articulation joint, when grasped by two hands, when one hand releases crash happens.

V0.13.0 (2022-05-23)

Major Functionality Changes:
  • The AutoSetup function was optimized by adding it to each single sensor. No need for indexing sensors anymore.
GUI / Component Changes:
  • VirtualGrasp menu re-organized for better usability.
  • Some VirtualGrasp menu functions were made obsolete/removed: “Create VG Scene,” “Convert object tags to VG_Articulations,”
  • The “About” (VirtualGrasp) window was made fixed size.
  • A “Welcome” window was added that can be access from the VirtualGrasp menu. It will automatically open if it is detected that XR Plugin Management is not installed, but used in the scene. The choice to install the UnityXR package and the Unity Tutorial package is provided to the user.
  • MyVirtualGraspBurst was removed.
  • In VG_Highlighter, if no shader is assigned, the included “RimLight” shader will be used.
API Changes:
  • All functions that were “XYZAtRuntime()” functions (such as RegisterAvatarAtRuntime()) have been renamed by removing that suffix (such as to RegisterAvatar()).
Other / Internal Changes:
  • A more appealing environment was added to the VG_Onboarding scene.
  • A version check was added to the BakingClient to inform you if a newer version of VG is available for download.
  • SDK was successfully tested with Unity 2022.1.0b16.
  • Some 3D models in the VG_Onboarding scene were simplied and optimized.
  • Additional .xml files have been packaged along the .dll libraries to expose the comments / summaries for the API into the coding environment.
  • Creating a VG_Editor scene can only be done when XR Management is installed and a vg_tmp directory exists.
  • Unity Tutorial Framework dependency handled. Version >=2.0 needs to be installed to run VG Unity tutorials.
  • physicsDefaultContactOffset removed from DebugSettings. We won’t fiddle with your project settings anymore.
  • Some graphical adjustments to the onboarding scene.
  • Allowed to get rid of the VG welcome window if you want to.
  • A number of warnings that were not really warnings were removed.
Update to VG Core library 0.10.0:
  • Fixed bug on new recording sensor recording using VG_Recorder is pending the data to earlier recordings. (fixed known issue from 0.12.0)
  • Fixed bug on successively recording sensor data using VG_Recorder can lead to crashing. (fixed known issue from 0.12.0)
  • Fixed bug on the 2nd method – pressing button “Export Scene in Edit” to Create Debug Files has a bug: instead of create debug files in vg_tmp folder, it enabled “Export Scene in Runtime”. (fixed known issue from 0.12.0)
  • Fixed bug on runtime change parent of an interactable object with constrained joint type may result in unexpected joint axis different from its initial setting. (fixed known issue from 0.12.0)
Known Issues:
  • When graspable object is very close to an index pushable object, after grasp the object, pushing gesture may not form.

  • A few events such as OnObjectGrasped and OnObjectDeselected do not function correctly for proxy avatars in multiplayer scenes.

  • If game object’s pivot is relatively far away from mesh center, there is strange interactive behavior on PRISMATIC joint (both through VG_Articulation or ArticulationBody): the rotating movement of controller can result in unexpected translation of object along the joint axis. Other constrained joint types are also affected.

  • If an object has rotational VG articulation joints, when switch from two hands grasping to one hand, or when one hand grasps an object at the moment of another hand releasing it, the remaining grasping hand have trouble to control the constrained object movement.

  • The newly added planar joint does not support discrete states and ChangeObjectJoint as yet.

  • Dynamic Grasp on small or thin objects sometimes thumb has no contact on the object.

  • Preview grasp is not able to pick up a physical object once grasp is triggered due to event handling is not taking care of this interaction type yet.

  • If Haptics is enabled in Sensor Control specifications, haptics feedback is not consistently given at the moment of grasp, release or collision on build.

  • There is an Inspector GUI artifact in VG_MainScript/Sensors, but it is a known Unity issue.

  • In onboarding Task 3, there is a bug after assembling cap to the bottle where cap becomes bottle’s child, then grasp bottle and cap together could make cap move off the initial position relative to the parent bottle. This will not happen however if you first grasp bottle then later another hand grasp the cap. We have identified cause and the problem will be fixed in V1.0.0.

V0.12.0(2022-04-14)

Major Functionality Changes:
  • VG_BakingClient has been overhauled with support of Prepare project in the same GUI without the need to move to Debug Settings if there are no runtime spawned interactable objects.
GUI / Component Changes:
  • AutoSetup enum name for Oculus finger tracking was changed from “Quest_FT” to “Oculus_FT” to conform with the file names and avoid confusion.
  • Fixed confusion of disabled (unchecked) VG_Articulation component. Now, if the component is added but disabled (unchecked) the object will not be interactable. Runtime enabling or disabling this component will make the object interactable or uninteractable respectively. However note that it is more efficient to change object’s interactable status by SetObjectSelectionWeight. (fixed known issue from 0.11.1)
API Changes:
  • There are no API changes.
Other / Internal Changes:
  • Updated GleechiHands with better shader and material, as well as bone structure for finger pose mapping and grasp interaction (fixed known issue from 0.11.1).
  • Updated Unity tutorials for VG baking client.
  • Bugfix on if two hands trigger grasp on a physical object at the exact same moment, the hands will form grasps, but the object freeze and can not be moved by hands. (fixed known issue from 0.11.1)
Update to VG Core library 0.9.0:
  • Bugfix on unreliable grasp and release triggering for finger tracking solutions OCULUS_FT. (fixed known issue from 0.11.1)
  • Bugfix on if two hands grasp on a non-physical FLOATING object, when one hand releases, the other hand could have a big offset from sensor position. (fixed known issue from 0.11.1)
Known Issues:
  • New recording sensor recording using VG_Recorder is pending the data to earlier recordings.

  • Successively recording sensor data using VG_Recorder can lead to crashing.

  • The 2nd method – pressing button “Export Scene in Edit” to Create Debug Files has a bug: instead of create debug files in vg_tmp folder, it enabled “Export Scene in Runtime”.

  • Runtime change parent of an interactable object with constrained joint type may result in unexpected joint axis different from its initial setting.

  • When graspable object is very close to an index pushable object, after grasp the object, pushing gesture may not form.

  • GetReplayStartWristPose does not give accurate wrist pose.

  • A few events such as OnObjectGrasped and OnObjectDeselected do not function correctly for proxy avatars in multiplayer scenes.

  • If game object’s pivot is relatively far away from mesh center, there is strange interactive behavior on PRISMATIC joint (both through VG_Articulation or ArticulationBody): the rotating movement of controller can result in unexpected translation of object along the joint axis. Other constrained joint types are also affected.

  • If an object has rotational VG articulation joints, when switch from two hands grasping to one hand, or when one hand grasps an object at the moment of another hand releasing it, the remaining grasping hand have trouble to control the constrained object movement.

  • The newly added planar joint does not support discrete states and ChangeObjectJoint as yet.

  • Dynamic Grasp on small or thin objects sometimes thumb has no contact on the object.

  • Preview grasp is not able to pick up a physical object once grasp is triggered due to event handling is not taking care of this interaction type yet.

  • If Haptics is enabled in Sensor Control specifications, haptics feedback is not consistently given at the moment of grasp, release or collision on build.

V0.11.1 (2022-04-11)

Major Functionality Changes:
  • Breaking change: Avatar IDs that were before the array index have been replaced by the Unity instance ID of the SkinnedMeshRenderer that relates to the avatar. The VG API is providing helper functions and the SDK scripts have been adjusted accordingly. Check out GetSensorControlledAvatarID, GetReplayAvatarID, and GetAvatarID.
  • Released Gleechi’s first original avatar in VirtualGrasp/Resources/GleechiHands. This replaces earlier released OcculusHands, so in the VG SDK that support only one avatar, only GleechiHands are supported.
  • Added planar joint support on VG_Articulation. See VG Onboarding Task6 to show the example use.
GUI / Component Changes:
  • AutoSetup “External” string for Oculus finger tracking was changed from “QuestHand” to “OculusHand” to conform with the file names and avoid confusion.
  • Bugfix on AutoSetup in MyVirtualGrasp is broken. Please refer to the manual “AutoSetup” sections on the ExternalController you like to use. (fixed known issue from 0.10.1)
  • VG_Articulation has been overhauled as a dynamic component to improve user experience.
  • Replay and Remote checkboxes for avatar are only shown if the VG version supports this feature.
  • VG_Interactable added “Throw Velocity Scale” and “Throw Angular Velocity Scale” to allow specifying object-specific throwing power that overwrite those set in Global Grasp Interaction Settings.
  • VG_Recorder has improved file management so that users can optionally provide in Recording Filename with either a single file name like “MyRecordingFile”, or a folder and a file name like “MyRecordingFolder/MyRecordingFile”. Also adding the file extension “.sdb” is only optional.
API Changes:
Other / Internal Changes:
  • Bugfix on OnObjectSelected event is not invoked for object with Index Pushable interaction affordance.
  • Bugfix on OnObjectGrasped event is not invoked for JumpGraspObject call. (fixed known issue from 0.10.1)
  • Bugfix on after an interactable object with constrained joint follows the move of its non-interactable parent (or an ancester), the moment when hand grasp or push this constrained object, it jump back to the original global pose. (fixed known issue from 0.10.1)
  • Bugfix on physical avatar when grasping physical object with sticky hand interaction type object and hand is grandually moving away.
  • Further performance optimization of selecting which objects need to be synced between Unity and VG.
  • Improved grasping and sliding a physical object on another object with collider. Note however still Unity physical material with smaller friction should be used for desired sliding behaviors. (fixed known issue from 0.10.1)

  • Provide error message when trying to use an controller but not enabling its #define (e.g., VG_USE_LEAP_CONTROLLER).
  • Provide error signal if interactable object is labeled as Static.
  • Provide error signal if start a scene without providing SkeletalMesh for avatar setup.
  • Provide error message if you are on Mac that Mac is not supported.

  • All #defines that enable controllers with dependencies on third party plugins have been prefixed with VG_ (e.g., USE_LEAP_CONTROLLER is now VG_USE_LEAP_CONTROLLER) to avoid conflicts with non-VG defines.
  • Onboarding scene added Task6 to showcase VirtualGrasp’s newly added support of planar joints.
  • Added first Unity tutorials.
Update to VG Core library 0.8.0:
  • Bugfix for physical avatar index finger push gesture formation is not smooth. (fixed known issue from 0.10.1)
  • Improved pinch grasp on small objects. (fixed known issue from 0.10.1)
  • Bugfix for when hand form index finger push gesture grasp synthesis adopted push gesture problem.
  • Bugfix for JumpGraspObject crash on unbaked object problem.
Known Issues:
  • There is a problem of unreliable grasp and release triggering for finger tracking solutions OCULUS_FT.

  • If two hands grasp on a non-physical FLOATING object, when one hand releases, the other hand could have a big offset from sensor position.

  • If a game object only has a disabled (unchecked) VG_Articulation component, this game object is still marked as interactable so that you can grasp it. And even if this disabled VG_Articulation set a joint other than Floating, it will behave as Floating joint. These are undesired behavior and will be fixed.

  • If two hands trigger grasp on a physical object at the exact same moment, the hands will form grasps, but the object freeze and can not be moved by hands. This is difficult to reproduce but still could happen.

  • The newly released GleechiHands does not have perfect mapping of real finger poses when using finger tracking solutions like OCULUS_EXT and LEAP_EXT.

  • A few events such as OnObjectGrasped and OnObjectDeselected do not function correctly for proxy avatars in multiplayer scenes.

  • If game object’s pivot is relatively far away from mesh center, then there is strange interactive behavior on PRISMATIC joint (both through VG_Articulation or Unity ArticulationBody): the rotating movement of controller can result in unexpected translation of object along the joint axis. Other constrained joint types are also affected.

  • If an object has rotational VG articulation joints, when switch from two hands grasping to one hand, or when one hand grasps an object at the moment of another hand releasing it, the remaining grasping hand have trouble to control the constrained object movement.

  • The newly added planar joint does not support discrete states and ChangeObjectJoint as yet.

  • Successively recording sensor data using VG_Recorder can lead to crashing.

  • When graspable object is very close to an index pushable object, after grasp the object, pushing gesture may not form.

  • Preview grasp is not able to pick up a physical object once grasp is triggered due to event handling is not taking care of this interaction type yet.

  • If Haptics is enabled in Sensor Control specifications, haptics feedback is not consistently given at the moment of grasp, release or collision on build.

  • Dynamic Grasp on small or thin objects sometimes thumb has no contact on the object.

V0.10.1 (2022-03-01)

Major Functionality Changes:
  • Breaking change: Removed support of using VG_Articulation component with constrained joints (non-FLOATING joint) on objects with Rigidbody. Developers are encouraged to use Unity Joints or Unity ArticulationBody for physical joints.
  • Breaking change: in VG_Articulation, “Pivot” changed name to “Anchor” to be more consistent with the terminology used by Unity ArticulationBody. And “Push Pivot” changed name to “Push Direction” to be more descriptive. Due to the name change, the reference can be lost and need to be reassigned.
  • More stable grasp interaction with physical objects and better throwing experiences.
GUI / Component Changes:
  • In Global Grasp Interaction Settings changed variable name “Grasp Speed” to “Grasp Animation Speed” and “Release Speed” to “Release Animation Speed”. The default values for them are reduced to 0.05 (from 0.1) and 0.1 (from 0.2) second respectively to make grasp and release more snappy. The minimum values for both are reduced to 0.01 second (from 0.1 second).
  • In Global Grasp Interaction Settings added “Throw Velocity Scale” and “Throw Angular Velocity Scale” to control power of throw on grasped objects.
  • VG_Articulation editing is disabled when object has Rigidbody component. (Was disabled when object has ArticulationBody component in version 0.9.6)
  • Made VG_MainScript abstract since one should only use a child class (such as MyVirtualGrasp).
  • Improved handling of AutoSetup when a VG_MainScript is created (such as adding a sensor instead of complaining it has not been added).
  • MyVirtualGrasp/Avatars added “Replay” check to indicate if this avatar is to be used for sensor replay. If not checked, it will be controlled by sensor / controller.
API Changes:
  • Breaking change: VG_Controller.SetProcessedByFrame() function is removed. If you want to set an avatar for sensor replay, you can specify the avatar for replay by checking Replay in MyVirtualGrasp component.
Other / Internal Changes:
  • Event handling bugfix: OnObjectFullyReleased do not trigger on objects that are not grasped.
  • Onboarding scene Task3 improved ManageContainerObject.cs script.
  • Onboarding scene added Task4 showcase VirtualGrasp’s support of interaction with ArticulationBodys.
  • Onboarding scene added Task5 showcase VirtualGrasp’s support of object assembly with VG_Articulation without rely on physics.
  • Endpoints for CABVG cloud baking updated to new server.
  • Hidden affordances (such as after switching a VG_Articulation from revolute joint to fixed joint) are ignored as they should be.
  • Recording files added to StreamingAssets.
  • Bugfix when objects are moved to a different parent which has not been registered.
Update to VG Core library 0.7.0:
  • Default hand pose animation is improved.
  • Dyamic Grasp rejection rate is improved.
  • Improved hand palm colliders for physical avatar.
  • Removed the controller hand offset when runtime change a grasped object’s VG Articulation to FLOATING joint type.
Known Issues (To Be Fixed In Next Release)
  • Index finger push gesture formation is not smooth when avatar is set to be physical.
  • OnObjectGrasped event is not invoked for JumpGraspObject call.
  • After an interactable object with constrained joint follows the move of its non-interactable parent (or an ancester), the moment when hand grasp or push this constrained object, it jump back to the original global pose.
  • Grasping and sliding a physical object on another object with collider shows obvious non-smooth behavior due to some artificial manipulation of object velocities.
  • AutoSetup in MyVirtualGrasp is broken. Please refer to the manual “AutoSetup” sections on the ExternalController you like to use.
Known Issues:
  • Since Unity 2019 or earlier versions do not have Unity ArticulationBody, these earlier versions of Unity is not supported.
  • A few events such as OnObjectGrasped and OnObjectDeselected do not function correctly for proxy avatars in multiplayer scenes.
  • Dynamic Grasp sometimes has unnaturally large thumb extention.
  • Grasps on small objects may have unatural finger placement.
  • If a game object only has a disabled (unchecked) VG_Articulation component, this game object is still marked as interactable so that you can grasp it. And even if this disabled VG_Articulation set a joint other than Floating, it will behave as Floating joint. These are undesired behavior and will be fixed.

V0.9.6 (2022-02-15)

Major Functionality Changes:
  • Breaking change: Prefabs GleechiLib and GleechiLibBurst removed. You are expected to just insert a VG_MainScript component (such as MyVirtualGrasp) on a GameObject of your choice.
  • Grasp .db will be handled automatically, no manual deployment needed anymore (UploadGraspDB menu entry removed).
  • Removed ObjectIdentifiers. The single and only component to mark objects as interactable is VG_Articulation. This should not break earlier use of VG_Interactable as Unity will create missing VG_Articulation component through RequireComponent requirement.
  • Performance speed up by handling only subset of close-by objects.
  • Added
GUI / Component Changes:
  • GraspStudio optimized and extended (see VG_GraspStudio).
  • Helper tooltips adjusted after documentation being transferred to docs.virtualgrasp.com.
  • Disabling VG_Articulation editing when ArticulationBody is on object.
  • Adjusted auto-setup offsets for provided hand model when using UnityXR.
API Changes:
  • OnObjectFullyReleased event carries VG_HandStatus instead of Transform, aligning with all other VG events.
  • VG_AutoSetup.QUEST renamed to VG_AutoSetup.UNITYXR
  • VG_VrButton extended with GRIP_OR_TRIGGER to enable both buttons for grabbing.
  • VG_Controller.SetObjectAffordances() added to change object affordances in runtime.
Other / Internal Changes:
  • Event handling order bugfix: OnObjectReleased() called before OnObjectFullyReleased()
  • All assets (onboarding scene) provided as Prefabs.
  • .scn files also saved when using Save Debug Edit.
  • Avatar Bone management optimized.
  • Removed Unity Garbage Collection during Editor time.
  • Initial support for Unity ArticulationBodies.
  • Improved upon physical object handling.
  • Improved upon physical hand handling.
Update to VG Core library 0.6.6:
  • Added support to interact with objects with Unity ArticulationBody components.
  • For non-physical objects (objects without RigidBody or ArticulationBody), grasping a child object with constrained joint will also move the parent non-physical object, and the movement will propagate back to upstream non-physical objects as long as they are connected through constrained joints.
  • DG can grasp on the inner structure of a complex object, for example a driving wheel.
  • Improved fitting of physical avatar finger colliders.
Known Issues:
  • When grasping freely movable physical objects, movement with the object is suboptimal with observable wobbling effects. This is to be fixed in next release.
  • When throwing a physical object, the object velocity is suboptimal. This is to be fixed in next release.
  • Dynamic Grasp sometimes has unnaturally large thumb extention.
  • Grasps on small object may have unatural finger placement.

V0.9.5 (2022-01-14)

GUI / Component Changes:
  • Grasp DB file for baking can now be adjusted in scriptable object VG_VirtualGraspDbFile.
  • All objects and hand included as Prefabs and used as Prefabs in VG_Onboarding scene.
Other / Internal Changes:
  • Bugfix that if loading .db at start fails, it will not overwrite at end.
  • Proper reading of VG_Onboarding’s fallback .db when no .db is found.
  • PDFs added in Doc/ for offline tutorial and offline API documentations.
Update to VG Core library 0.6.5:
  • Bugfix that intermediate empty object can cause crash.
  • Won’t save empty object db entries into grasp db file.
Known Issues:
  • If an object has rigidbody, changing object physical properties such as drag or mass won’t affect VG interaction.
  • Dynamic Grasp sometimes has unnaturally large thumb extention.
  • Grasps on small object may have unatural finger placement.

V0.9.4 (2021-12-16)

Other / Internal Changes:
  • VG_BakingClient updated to support larger files.
  • Warning added if you have an index-pushable, physical (i.e. Rigidbody) object but no physical hand that would be needed to interact with a physical button.
Update to VG Core library 0.6.4:
  • Default hand pose becomes more natural.
  • Pinch grasp object is chosen more strictly.
Known Issues:
  • If an object has rigidbody, changing object physical properties such as drag or mass won’t affect VG interaction.
  • Dynamic Grasp sometimes has unnaturally large thumb extention.
  • Grasps on small object may have unatural finger placement.