c-frame / aframe-super-hands-component

👐All-in-one natural hand controller, pointer, and gaze interaction library for A-Frame
https://c-frame.github.io/aframe-super-hands-component/examples/
MIT License
356 stars 70 forks source link

Laser controls dragging seems slow? #57

Closed evhan55 closed 7 years ago

evhan55 commented 7 years ago

Hi!

We are using super-hands-component with laser-controls on the Daydream (Google Pixel), and it seems to work! However, the functionality seems to be a bit clunky...... I have objects I am trying to drag around with the laser controls in my scene, but the objects move very little relative to the movement of the laser/controller. Meaning, if I wave the controller back and forth and the laser moves through the scene, the objects only move a tiny bit relative to the distance the laser actually moves. I have to repeatedly grab the object and drag bit by bit to get it to move to where I really want. It's a little hard to make a screencapture on the Daydream, but I can try if that helps!

Thanks!

wmurphyrd commented 7 years ago

The current grabbable component tracks along with controller translation movement, but this doesn't work well for 3DOF controllers like Daydream that function primarily on rotation.

This is the same issue as #55, I think the best solution is adding a new pointable component that is similar to grabbable, but based on controller rotation.

Contributions welcome

evhan55 commented 7 years ago

Oh, this makes sense to me! Okay yes, a pointable component basing dragging on rotation sounds like a good solution. I will look at the implementation for grabbable and see if I can start an implementation, if I am able to get a local build up and running that is.

Thanks!

wmurphyrd commented 7 years ago

I think I've got something working for the pointable component. Could you try out this version of super-hands and let me know what you think?

<script src="https://rawgit.com/wmurphyrd/aframe-super-hands-component/master/dist/super-hands.min.js"></script>

You can also see it in action in the laser-pointer controls example

evhan55 commented 7 years ago

Oh wow, I just tried it, this works much, much better! It worked on the first try, only having to switch out grabbable for pointable, and seems to work on primitive A-Frame geometry as well as OBJ's. Thank you very much!

I will continue to use this component in my tests, and I will report if any issues/bugs seem to come up with it! Happy to have this issue closed.

wmurphyrd commented 7 years ago

@evhan55 I realized the pointable component does everything grabbable does but better, so I'm going to just call it grabbable and replace the old one. This means if you've got any scenes using pointable and linking to super-hands master branch, the next update will break them. I made a release that includes pointable that you can use to keep your code working until I get the next major release out.

<script src="https://cdn.rawgit.com/wmurphyrd/aframe-super-hands-component/v1.1.1-alpha/dist/super-hands.min.js"></script>
evhan55 commented 7 years ago

Oh, thank you very much for the update, and for providing a patch in the meantime! I will make sure to update my link if I do tests soon, and can also give feedback if I find any new issues.

Thanks again!

evhan55 commented 7 years ago

Hi! We tried the patch today, still using pointable, and it still worked well, thank you!

Happy to switch to the release version with grabbable whenever that is out.

After testing the laser pointer in the Daydream controller today, we were intuitively rotating the laser while an object was grabbed, hoping the object would rotate. Do you think that feature is something I should add on top of the component, or do you think it's something that grabbable can or should support out of the box?

edit: When we tried rotating, I mean rotating the wrist around and keeping the laser in place

wmurphyrd commented 7 years ago

The new release is out and also comes with a new progressive-controls component that automatically adapts to work with any device: desktop, mobile, cardboard, GearVR, Vive/Rift

For the rotation, if you add physics to your scene, then the rotation should work automatically with grabbable (check out the a updated physics example linked in the readme). Otherwise, if you figure out the math do to rotation manually, I'd love to add it to grabbable.

On Wed, Sep 27, 2017, 8:51 PM Evelyn Eastmond notifications@github.com wrote:

Hi! We tried the patch today, still using pointable, and it still worked well, thank you!

Happy to switch to the release version with grabbable whenever that is out.

After testing the laser pointer in the Daydream controller today, we were intuitively rotating the laser while an object was grabbed, hoping the object would rotate. Do you think that feature is something I should add on top of the component, or do you think it's something that grabbable can or should support out of the box?

— You are receiving this because you modified the open/close state.

Reply to this email directly, view it on GitHub https://github.com/wmurphyrd/aframe-super-hands-component/issues/57#issuecomment-332704000, or mute the thread https://github.com/notifications/unsubscribe-auth/AJkeq0jwn5vONyryRpOta0KUO1XiIW4Qks5smvuKgaJpZM4O-6hM .

evhan55 commented 7 years ago

Hi!

Oh wow, I just tried the new release, with progressive-controls and making changes based on the physics example! It's great!

Thank you so much! We don't have any immediate feedback, but I can report back as we use it more in our demo app.

Thanks again!

evhan55 commented 7 years ago

Just in case, here is our demo using the progressive-controls with OBJs:

https://time-rail.glitch.me

evhan55 commented 7 years ago

Oh, one possible bug, on the Daydream, setting rhand vs. lhand doesn't seem to be consistent and put the controller to the correct side of the camera. If I find a consistent misbehavior there, I will open a new issue.

wmurphyrd commented 7 years ago

Oh yeah I don't make any attempt to position the controller form those id's, it is just to keep track of when there are two controllers connected