Optional hand model path doesn't seem to work

When using the optional hand model path and setting it to a cdn that has hand models, I still seem to get the default controller hands instead.
Any ideas as to why this might be happening would be greatly appreciated.


Original Post on Discord

by user 303909895755792395

Hey :wave:

what exactly do you mena by “Controller hands”.

The WebXR experience switches between hands and controllers same as Quest does in the menu for example. So both flows are possible and it is up to the player to choose which to use.

Or does it work differently on your end? If so, what version of Unity and Needle are you on?

In the second picture, the users “hands” are controllers, but the optional hands path I specified contains some actual hand models. I assumed those would be loaded by default if I specified an optional hands path

by user 303909895755792395

Gotcha, i presume the URL is exactly https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/ ? Or does the end differ?

Can you inspect the log on the Quest and see if there are any errors in the console? (https://developer.chrome.com/docs/devtools/remote-debugging/)

Also to note, at the path it is trying to finding the right.glb and left.glb, so you have to specify the parent where both of these models are.

No errors in the console (well there is one but its been there a while and unrelated) and yes that is the URL. When you say specify the parent, is that in relation to the URL or in relation to like the avatar in the scene?

by user 303909895755792395

the URL, hm ok.

What version of Unity and Needle are you on?

Looking at the network tab, it doesnt even load them. It still just loads the default “controllers”.
Unity version 2021.3.27f1
Needle version: ^3.7.3-alpha (thats what the package json says)

by user 303909895755792395

Could you try running the Custom Hands sample in your project and validate that it is working?
In the top bar: Needle Engine/Explore samples

If not i would advice to update to the latest version 3.10.2

Will do I’ll try it now and see if it works

by user 303909895755792395

Let me know how that will end up :slight_smile:

So with that sample. I get square blocks on top/inside the default controllers, and a ton of console errors. I’ll try bump the version of needle and see how that goes

by user 303909895755792395

Hi, what errors are you seeing?

cc @herbst🌵

SES_UNHANDLED_REJECTION: TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/engine_element-Q5R3GXEQ.js?v=e4c755c8 lockdown-install.js:1:104145
SES_UNHANDLED_REJECTION: TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/engine_element-Q5R3GXEQ.js?v=e4c755c8 lockdown-install.js:1:104145
SES_UNHANDLED_REJECTION: TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/rapier.es-WKE3D5IP.js?v=641f9bb2 lockdown-install.js:1:104145
SES_UNHANDLED_REJECTION: TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/rapier.es-WKE3D5IP.js?v=641f9bb2 lockdown-install.js:1:104145
SES_UNHANDLED_REJECTION: TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/rapier.es-WKE3D5IP.js?v=641f9bb2 lockdown-install.js:1:104145
SES_UNHANDLED_REJECTION: TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/rapier.es-WKE3D5IP.js?v=641f9bb2 lockdown-install.js:1:104145
SES_UNHANDLED_REJECTION: TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/rapier.es-WKE3D5IP.js?v=641f9bb2 lockdown-install.js:1:104145
SES_UNHANDLED_REJECTION: TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/rapier.es-WKE3D5IP.js?v=641f9bb2 lockdown-install.js:1:104145
Firefox can’t establish a connection to the server at wss://192.168.56.1:1107/. client.ts:77:17
GET
https://192.168.56.1:3000/node_modules/.vite/deps/engine_element-Q5R3GXEQ.js?v=e4c755c8

Loading module from “https://192.168.56.1:3000/node_modules/.vite/deps/engine_element-Q5R3GXEQ.js?v=e4c755c8” was blocked because of a disallowed MIME type (“”). 192.168.56.1:3000
Uncaught (in promise) TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/engine_element-Q5R3GXEQ.js?v=e4c755c8 chunk-MTTW22WQ.js:111008:1
Uncaught (in promise) TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/engine_element-Q5R3GXEQ.js?v=e4c755c8 chunk-MTTW22WQ.js:111008:1
Uncaught (in promise) TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/engine_element-Q5R3GXEQ.js?v=e4c755c8 chunk-MTTW22WQ.js:111008:1
GET
https://192.168.56.1:3000/node_modules/.vite/deps/rapier.es-WKE3D5IP.js?v=641f9bb2

Loading module from “https://192.168.56.1:3000/node_modules/.vite/deps/rapier.es-WKE3D5IP.js?v=641f9bb2” was blocked because of a disallowed MIME type (“”). 192.168.56.1:3000
Uncaught (in promise) TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/rapier.es-WKE3D5IP.js?v=641f9bb2
Uncaught (in promise) TypeError: error loading dynamically imported module: https://192.168.56.1:3000/node_modules/.vite/deps/rapier.es-WKE3D5IP.js?v=641f9bb2 5 @needle-tools_engine.js:1113:3

by user 303909895755792395

To understand the original issue here better: aren’t you literally setting exactly the path where the default hand models are coming from?

I would expect “exactly the same as if the field is empty” as the correct behaviour in this case

.
Also, in your screenshot I see controllers, not hands.
Is your actual goal here to show hand models when the user is using controllers?

Yup this is exactly my goal, to show hand models instead of controllers.

by user 303909895755792395