I was following this guide, tried to recreate a pickable bottle with my model and Godot XR Tools. When I’m holding the bottle, i can’t move the hand and it stays frozen with the bottle, while i can move around. I copied the collision of the bottle to the Pickable Object collision, also added Grab Points. Not sure what’s causing the freeze.
This is hard to say without having a copy of the project to play with but I think this has to do with how you’re using the asset itself.
Two possibilities spring to mind.
In XR Tools for pickable objects, you need to inherit the pickable.tscn scene and add your bits to the scene. It’s not enough to assign the pickable.gd script to an scene. This is one weakness in Godot where we can’t alter defaults properties of the node type we’re inheriting so the pickable scene sets up a bunch of things required for things to work correctly.
It’s not impossible to use the pickable script directly on an imported asset that you’ve setup as a rigidbody, but you then need to be careful to manually set all the correct physics layers etcetera by copying them over from the pickable scene.
If you are inheriting from pickable.tscn and the asset is a child in this scene, a clue may be in your screenshot of your import settings. Here it shows you’re importing it as a static physics object. This would result in a static collider on top of the rigidbody and they may be interfering with each other. Though seeing how the bottle behaves correctly when you let it go, I doubt this is the issue.
All in all, I haven’t seen this behaviour myself so I could be completely wrong with either suggestions. If you can create a simple example project that you are willing to share, I’d love to take a look at it for you.
I found pickable.tscn, created a New Inherited Scene
I open a bottle.glb, check that psysics are on in Cylinder child, Body Type - Static, Shape Type - Simple Convex. In Scene parent i change the Root Scale of the asset and reimport it.
Then i’m dragging a bottle.glb asset and made it a child of PickableObject.
On asset node i choose option “Make local” to see open up the asset
There i copied the shape collision of the asset and pasted into the CollisionShape3D of the PickableObject.
I save the scene and instantiate it into the Main Scene to check. I made it a child of the Main Scene, not the child of the table.
I can pick up the Bottle, it just floats, cause i havent added grab positions yet.
I added GrabPointHand Left and Right with closed Cup animation.
After that the asset freezes with the hand while i’m holding it.
Not sure what I’m doing different from the tutorial except for using a specific asset, which might cause issues and instead of dragging nodes to the scene i instantiate via ctrl+shift+a, maybe some issues in the initial setup of the project, that i missed. I only wonder.
I found the issue after someone else also provided a sample project. It looks like you’re making the same mistake.
Sent me on a bit of a wild goose chase because its actually not due to how the pickable object is setup.
If you look at your player setup, you have added the functions to the hand mesh node instead of the controller node. This results in a feedback loop as XR tools attempts to place the hand mesh on the object that is being held, overriding the tracked position.
So from the other project that I was testing with, this is the correct setup:
Note how everything is a child of the controller node.
You can have a double layer setup when using collision hands (this prevents the hand from moving through a table):
The next release of XR tools will have a lot of improvements on how collision hands work.