Nitwel / Immersive-Home

Mixed reality experience for interacting with your smart home in a new dimension.
Apache License 2.0
454 stars 18 forks source link

Enable pulling and pushing of item placements at a distance #161

Open goatchurchprime opened 3 months ago

goatchurchprime commented 3 months ago

A common feature for user positioning of objects in space when grabbed by the reticle (laser), rather than the hand, is for the thumbstick forward and back to push or pull the object along the laser.

Sometimes left and right spins the object about its CofG axis. (This can conflict with snap-left and snap-right rotations in a VR game, but it won't affect this application.)

This feature is important for laying out the elements in places that are out of reach (eg above windows or doors), and so you don't have to keep walking across the room like you are positioning a picture on the wall in real life.

To do this by hand-tracking the xr-autohands has a feature to interact with the thumbstick if you pinch the air with your fingers pointing upwards whereupon it shows a ring representing the joystick range. Grab + thumbstick motion is currently impossible in its interface, but we could find some way to enable it. The trick is to route the whole of the hand tracking interface through the controller interface so that you only need to implement the latter interface.

The current feature of grabbing by reticle and only moving by the distance your limb can move is not very useful, particularly at a distance. This reticle grabbing feature probably belongs in the godot-xr-tools, but that's going to be difficult to make happen, so the implementation is not obvious.

Nitwel commented 3 months ago

I've added support for moving objects with the controllers. For hands I'm thinking of an interface which you can interact with using your second hand, but that doesn't have high priority at the moment due to it's complexity, so I'll fully finish this later.