# WebXR (replace controllers to default hands)

**URL:** <https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297>\
**Category:** Questions\
**Tags:** webxr\
**Created:** [October 4, 2021, 9:47pm UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297 "2021-10-04T21:47:05Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nawar](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/nawar/32/14923_2.png) [@Nawar](https://forum.babylonjs.com/u/Nawar)\
**Post date:** [October 4, 2021, 9:47pm UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/1 "2021-10-04T21:47:05Z")

</div>

Hello to the creators of Babylon!

The documentation well describes how to interact with controllers, buttons, events, etc.It all works very well!

The only thing I would like to know is if there is some kind of standard hand mesh (not HAND TRACKING) with standard positions (fist, index finger, relaxed hand) and if there is, how can I replace my controllers with this mesh.

And another question. Can I change my controllers at will. For example, if I have oculus controllers, can I voluntarily change them to controllers like pico?

Do I need to use [this repo](https://github.com/immersive-web/webxr-input-profiles) somehow?

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [October 4, 2021, 9:55pm UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/2 "2021-10-04T21:55:39Z")

</div>

I do not think we provide default hands meshes to replace the controllers.

Adding @RaananW who is way more versed than me in WebXR 🙂

Also @PirateJC as it might end up being a nice doc upgrade.

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [October 5, 2021, 12:17pm UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/3 "2021-10-05T12:17:04Z")

</div>

> [@Nawar](#):
>
> is if there is some kind of standard hand mesh (not HAND TRACKING) with standard positions

Sadly - not yet. We have an issue tracked here - [WebXR option to display hand mesh instead of controllers · Issue #9089 · BabylonJS/Babylon.js (github.com)](https://github.com/BabylonJS/Babylon.js/issues/9089)

> [@Nawar](#):
>
> Can I change my controllers at will.

You can force a controller to load with a parameter in the options (`forceControllerProfile`). changing on demand will require a bit more work on your side. The init function is this:

[Babylon.js/webXRInputSource.ts at master · BabylonJS/Babylon.js (github.com)](https://github.com/BabylonJS/Babylon.js/blob/master/src/XR/webXRInputSource.ts#L110)

---

<div class="post-metadata">

**Author:** ![peterimg](https://avatars.discourse-cdn.com/v4/letter/p/50afbb/32.png) [@peterimg](https://forum.babylonjs.com/u/peterimg)\
**Post date:** [November 30, 2022, 11:57am UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/4 "2022-11-30T11:57:58Z")

</div>

Hi @RaananW

Got a problem with WebXR controllers meshes. We got controllers meshes instead of hand meshes in version 5.34.0. Is there a fix for that yet?

Regards

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [November 30, 2022, 11:59am UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/5 "2022-11-30T11:59:03Z")

</div>

Hi! 🙂

sorry, just to be sure - you’re saying that older versions show hands, but 5.34.0 shows controllers instead?

---

<div class="post-metadata">

**Author:** ![peterimg](https://avatars.discourse-cdn.com/v4/letter/p/50afbb/32.png) [@peterimg](https://forum.babylonjs.com/u/peterimg)\
**Post date:** [November 30, 2022, 12:53pm UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/6 "2022-11-30T12:53:31Z")

</div>

Hi @RaananW

I do not know about previous versions but you were mentioning a bug in it.

ATM hands model does not show up for me. I see motion controllers but they work like hands. And the version I’m using is 5.34.0 and I use module imports.

On this playground:

> **[Babylon.js Playground](https://playground.babylonjs.com/#X7Y4H8%2373)**
>
> Babylon.js playground is a live editor for Babylon.js WebGL 3D scenes

I can see hands but not in my project and everything is setup more less the same.

Do I need to import something to have them?

Regards  
Peter

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [November 30, 2022, 12:57pm UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/7 "2022-11-30T12:57:32Z")

</div>

Can you share the code? are you enabling the hand tracking feature?

```auto
xr.baseExperience.featuresManager.enableFeature(BABYLON.WebXRFeatureName.HAND_TRACKING, "latest", {
        xrInput: xr.input,
        jointMeshes: {
            enablePhysics: true
        }
    });

```

---

<div class="post-metadata">

**Author:** ![peterimg](https://avatars.discourse-cdn.com/v4/letter/p/50afbb/32.png) [@peterimg](https://forum.babylonjs.com/u/peterimg)\
**Post date:** [November 30, 2022, 1:09pm UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/8 "2022-11-30T13:09:51Z")

</div>

Hi @RaananW

This is exactly how I initialize it and I got hand functionality but I see controllers rotated180deg Z axis and moving like my hands are moving.

I also imported the entire @babylonjs/core into the project just not to miss anything and still nothing. Do I need to import something else?

Regards  
Peter

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [November 30, 2022, 2:42pm UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/9 "2022-11-30T14:42:12Z")

</div>

no, nothing else needs to be added.

Would be great if you opened a new topic for that and if you could share the project with me so I can debug this. Of course, of you can.

---

<div class="post-metadata">

**Author:** ![peterimg](https://avatars.discourse-cdn.com/v4/letter/p/50afbb/32.png) [@peterimg](https://forum.babylonjs.com/u/peterimg)\
**Post date:** [December 2, 2022, 11:45am UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/10 "2022-12-02T11:45:30Z")

</div>

Hi @RaananW

I got it working by importing the “@babylonjs/loaders” in my projects 😕 I’m using the import module in my project.

Now I got another one. The shader for the hands is not working. I got default Standard material and I can’t make it run as the playground this semitransparent purple once.

I got this:

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/e/1/e1fa2215f99cdcc2b616a5b184d401cec548d4ca.jpeg)

instead of this:

 ![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/b/d/bd8ee18876813a6a17ed2a398c9369ee860fa35d.jpeg)

and they are not rigged at all. My fingers do not move.

What else do I need to import to make this run?

So what Do I do wrong now?

The file with the shader is requested and loaded in the network tab. No error or warning. Just silently is not applying it.

Regards  
Peter

---

<div class="post-metadata">

**Author:** ![RaananW](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/raananw/32/28955_2.png) [@RaananW](https://forum.babylonjs.com/u/RaananW)\
**Post date:** [December 2, 2022, 1:02pm UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/11 "2022-12-02T13:02:16Z")

</div>

That feels like you are loading the wrong models and not enabling the hand support feature.  
You will get the default hands from the webxr controller library if you don’t enable the hands module before starting the session.  
I’ll write it again - would be great if you opened a new thread. Oh, and would be great to see the project or the code you are using. Playground would be wonderful.

---

<div class="post-metadata">

**Author:** ![peterimg](https://avatars.discourse-cdn.com/v4/letter/p/50afbb/32.png) [@peterimg](https://forum.babylonjs.com/u/peterimg)\
**Post date:** [December 5, 2022, 12:38pm UTC](https://forum.babylonjs.com/t/webxr-replace-controllers-to-default-hands/24297/12 "2022-12-05T12:38:48Z")

</div>

> [@RaananW](#):
>
> You will get the default hands from the webxr controller library if you don’t enable the hands module before starting the session.

That was it. Thanks 🙂
