Skip to content

New Feature: VRTK_ObjectLerp (lerp an VRTK_InteractableObject on grab).  #1433

Open
@wildstyle007

Description

@wildstyle007

Overview

General idea is to add new functionality that smoothly animates an object into position when you grab it. This will be an optional / extra script that you can attach to an VRTK_InteractableObject, providing a slightly different mechanic and visual from the existing immediate grab.

Code In-progress

  • Created a new script class called VRTK_ObjectLerp that smoothly handles the lerp position and rotation of an object over time.
  • You can attach this script to an VRTK_InteractableObject, which then will set itself up to use the VRTK_ObjectLerp.
  • When an object is grabbed by VRTK_InteractGrab this class checks on the grabbing VRTK_InteractableObject to see if there is a valid / configured VRTK_ObjectLerp available, and if the object is set to lerpTransformOnGrab.
  • If the VRTK_InteractableObject is setup to lerp on grab, then rather than complete the grab as normal, the VRTK_InteractGrab method calls back to a new method on the VRTK_InteractableObject that will start the lerp to position, i.e. StartLerpTransformOnGrab.
  • The VRTK_InteractableObject will then call the VRTK_ObjectLerp to start a coroutine for the lerp to position, i.e. DoObjectTranslation.

Not yet done, to be confirmed:

  • Once the DoObjectTranslation method completes, callback / notify the VRTK_InteractableObject that it's done.
  • The VRTK_InteractableObject then calls the VRTK_InteractGrab script to grab the object again. Only this time it will tell the VRTK_InteractGrab somehow that we don't need to lerp, just do a normal / immediate grab.

Other things to consider, as per our chat on Slack:

  • What to do if the object is ungrabbed mid-way, before completion:
    : Move the object back to the start position.
    : Or if it's pass the half way point complete the lerp.
    : Or just drop the object where it is.
    : Perhaps a combination, could have settings to specificy what you want to happen.
  • From @bddckr: "Should work with every grab mechanic, but I think currently some of these things take at least 1 frame, so would be visible. Maybe instantiate a temporary copy and turn of visibility and collisions etc.":
    : Not sure I understand what this is referencing yet.. perhaps I'll see this issue once the base code I've explained above is working.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions