-
-
Notifications
You must be signed in to change notification settings - Fork 993
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Feature: VRTK_ObjectLerp (lerp an VRTK_InteractableObject on grab). #1433
Comments
Got this working last night, should have a PR in this weekend. |
Things to note about current code:
|
There is an object lerp setup for testing in the scene for: 005_Controller_BasicObjectGrabbing |
Have this integrated into my project, so have been using it for a few days now while testing other features. Generally it seems to work and pretty consistently. Do have the issues I already noted above to discuss, plus on the initial grab of the object it's a bit 'wonky' on the transition.. but if you drop and pick up the same object it's smooth thereafter... thinking perhaps I'm missing something there. Would appreciate your guys input on this one, as it needs some help. |
I'll try and take a look at it next week. This week is crazy busy for me :( |
No worries @thestonefox -- thanks for letting me know. I'm in maximum overdrive this week also! :D |
I've had like the super briefest of looks over it. I may have another way of doing it that supports all grab types (maybe!) |
Just a quick suggestion, I had this requirement and it felt more natural to perform the lerp during the trigger press (especially with a grabbing avatar hand). So for example if the actual grab happens at trigger axis 1, the lerp occurs smoothly (before the actual grab) from trigger axis 0 to 1. It might be tricky to find a good way to generalise but worth thinking about. |
Thing is I suppose that any control button could be grabbing.. not necessarily the trigger. The code I've prototyped so far moves the object first, then once it's in position does the actual grab. |
Maybe there could be an auto-selected but configurable pre-grab lerp axis. |
that could be time based or controller axis based |
A quick, hacky, non-generic, but functional and simple option (a slightly modified version of VRTK_TrackObjectGrabAttach) with a distance snap threshold and a different maximum velocities before and after snap: https://gist.github.com/jbat100/ab89a5ad4a00ebde8ac78e85516e3ae4 Obviously a solution which meets all the requirements described above would be way better, but this seemed less risky for now. |
Thanks for the contribution @jbat100 .. food for thought. @thestonefox -- any additional thoughts on this feature? Would be great to decide the best course of action and get something into the toolkit. I'm looking to update my local VRTK so will just remove these changes if you have another plan.. let me know, thanks! |
Sorry for the delay, just time always is against me looking at things :( |
Still open to discuss other approaches to this feature @thestonefox -- let me know, thanks! |
I'm still without Dev computer at the moment so hard to work on things |
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
VRTK_ObjectLerp
that smoothly handles the lerp position and rotation of an object over time.VRTK_InteractableObject
, which then will set itself up to use theVRTK_ObjectLerp
.VRTK_InteractGrab
this class checks on the grabbingVRTK_InteractableObject
to see if there is a valid / configuredVRTK_ObjectLerp
available, and if the object is set tolerpTransformOnGrab
.VRTK_InteractableObject
is setup to lerp on grab, then rather than complete the grab as normal, theVRTK_InteractGrab
method calls back to a new method on theVRTK_InteractableObject
that will start the lerp to position, i.e.StartLerpTransformOnGrab
.VRTK_InteractableObject
will then call theVRTK_ObjectLerp
to start a coroutine for the lerp to position, i.e.DoObjectTranslation
.Not yet done, to be confirmed:
DoObjectTranslation
method completes, callback / notify theVRTK_InteractableObject
that it's done.VRTK_InteractableObject
then calls theVRTK_InteractGrab
script to grab the object again. Only this time it will tell theVRTK_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:
: 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.
: 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.
The text was updated successfully, but these errors were encountered: