How to get controller model as render in WeXR Controller/Hands Models project

Hi there,
https://playcanvas.com/editor/scene/963346
in the above project in controller.js script. The following lines get hands models as Model component. Can someone guide me on how to get the render component. Here’s the snippet of code.
It starts from line 76 in controller.js

this.app.assets.loadFromUrlAndFilename(URL.createObjectURL(blob), 'container.glb', "container", function (err, containerAsset) {
                if (err) {
                    console.error(err);    
                } else {
                    // update model
                    self.modelEntity.setLocalScale(1, 1, 1);
                    self.modelEntity.model.type = 'asset';
                    self.modelEntity.model.asset = containerAsset.resource.model;
                }
            });
        }, this);
 // paint red when tracking lost
                        inputSource.hand.on('trackinglost', function() {
                            self.modelEntity.model.meshInstances[0].material.diffuse.set(1, 0, 0);
                            self.modelEntity.model.meshInstances[0].material.update();
                        });
                        // paint white when tracking restored
                        inputSource.hand.on('tracking', function() {
                            self.modelEntity.model.meshInstances[0].material.diffuse.set(1, 1, 1);
                            self.modelEntity.model.meshInstances[0].material.update();
                        });

@yaustar, can you help me with this?

Hi @yaswanth,

Without testing this, here is the updated version of your code to work with the render component (basically replace model with render at the component level):

this.app.assets.loadFromUrlAndFilename(URL.createObjectURL(blob), 'container.glb', "container", function (err, containerAsset) {
                if (err) {
                    console.error(err);    
                } else {
                    // update model
                    self.modelEntity.setLocalScale(1, 1, 1);
                    self.modelEntity.render.type = 'asset';
                    self.modelEntity.render.asset = containerAsset.resource.model;
                }
            });
        }, this);
 // paint red when tracking lost
                        inputSource.hand.on('trackinglost', function() {
                            self.modelEntity.render.meshInstances[0].material.diffuse.set(1, 0, 0);
                            self.modelEntity.render.meshInstances[0].material.update();
                        });
                        // paint white when tracking restored
                        inputSource.hand.on('tracking', function() {
                            self.modelEntity.render.meshInstances[0].material.diffuse.set(1, 1, 1);
                            self.modelEntity.render.meshInstances[0].material.update();
                        });
2 Likes

Hi @Leonidas, thanks for you reply. But the get the following error

TypeError: render.off is not a function
    _onRenderAssetLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:60409
    _onRenderAssetAdded https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:60398
    set https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:60843
    testHandEntity https://launch.playcanvas.com/api/assets/files/scripts/TestBloom.js?id=60730146&branchId=9ce67acf-950b-4525-9744-f6f431d4b3a7:42
    startLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40061
    fire https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:796
    _opened https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:39989
    _loaded https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40013
launch.js:15178:21
    error https://launch.playcanvas.com/editor/scene/js/launch.js:15178
    testHandEntity https://launch.playcanvas.com/api/assets/files/scripts/TestBloom.js?id=60730146&branchId=9ce67acf-950b-4525-9744-f6f431d4b3a7:35
    startLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40069
    fire https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:796
    _loaded https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40001
    _onFailure https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36994
    handleLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36935
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:34355
    createResources https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32512
    parseAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32985
    loadTexturesAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32647
    parseAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32979
    onLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32926
    parseBufferViewsAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32945
    processAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32901
    parseBufferViewsAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32937
    parseAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32973
    onLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32750
    loadBuffersAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32791
    processAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32736
    loadBuffersAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32761
    parseAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32967
    parseGltf https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32820
    parseAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32961
    parseGlb https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32879
    parseChunk https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32887
    parseAsync https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:32955
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:34351
    _onSuccess https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:2127
    _onReadyStateChange https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:2079
    onreadystatechange https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:2015
    (Async: EventHandlerNonNull)
    request https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:2014
    get https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:1875
    fetchArrayBuffer https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:30750
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:34347
    handleLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36921
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36955
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40022
    startLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40072
    loadFromUrlAndFilename https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40080
    testHandEntity https://launch.playcanvas.com/api/assets/files/scripts/TestBloom.js?id=60730146&branchId=9ce67acf-950b-4525-9744-f6f431d4b3a7:33
    ready https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:30705
    fire https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:796
    _opened https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:39989
    _loaded https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40013
    _onSuccess https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36983
    handleLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36933
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:33523
    _onSuccess https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:2127
    _onReadyStateChange https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:2079
    onreadystatechange https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:2015
    (Async: EventHandlerNonNull)
    request https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:2014
    get https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:1875
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:33517
    handleLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36921
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36955
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40022
    testHandEntity https://launch.playcanvas.com/api/assets/files/scripts/TestBloom.js?id=60730146&branchId=9ce67acf-950b-4525-9744-f6f431d4b3a7:61
    initialize https://launch.playcanvas.com/api/assets/files/scripts/TestBloom.js?id=60730146&branchId=9ce67acf-950b-4525-9744-f6f431d4b3a7:18
    _scriptMethod https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:64027
    _onInitialize https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:64051
    _callComponentMethod https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:64637
    _onInitialize https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:64646
    fire https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:796
    start https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:71140
    init https://launch.playcanvas.com/editor/scene/js/launch.js:14548
    _preloadScripts https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:70885
    init https://launch.playcanvas.com/editor/scene/js/launch.js:14531
    done https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:70842
    onAssetLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:70854
    fire https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:796
    _opened https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:39989
    _loaded https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40013
    _onSuccess https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36983
    handleLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36933
    handler https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:38766
    onload https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:38810
    (Async: EventHandlerNonNull)
    _loadImage https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:38809
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:38780
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:39624
    handleLoad https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36921
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:36955
    load https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:40022
    add https://launch.playcanvas.com/editor/scene/js/engine/playcanvas.dbg.js?version=1.49.4:39913
    createEngineAsset https://launch.playcanvas.com/editor/scene/js/launch.js:18697
    load https://launch.playcanvas.com/editor/scene/js/launch.js:18785
    load https://launch.playcanvas.com/editor/scene/js/launch.js:18785
    <anonymous> https://launch.playcanvas.com/editor/scene/js/launch.js:18590
    emitNone https://launch.playcanvas.com/editor/scene/js/launch.js:5784
    emit https://launch.playcanvas.com/editor/scene/js/launch.js:5869
    ingestSnapshot https://launch.playcanvas.com/editor/scene/js/launch.js:9040
    _handleSubscribe https://launch.playcanvas.com/editor/scene/js/launch.js:9126
    _handleBulkMessage https://launch.playcanvas.com/editor/scene/js/launch.js:8299
    handleMessage https://launch.playcanvas.com/editor/scene/js/launch.js:8243
    onmessage https://launch.playcanvas.com/editor/scene/js/launch.js:8157
    onmessage https://launch.playcanvas.com/editor/scene/js/launch.js:19040
    (Async: EventHandlerNonNull)
    connect https://launch.playcanvas.com/editor/scene/js/launch.js:19029
    reconnect https://launch.playcanvas.com/editor/scene/js/launch.js:19089
    evt https://launch.playcanvas.com/editor/scene/js/events.js:37
    emit https://launch.playcanvas.com/editor/scene/js/events.js:57
    <anonymous> https://launch.playcanvas.com/editor/scene/js/launch.js:13619
    (Async: EventListener.handleEvent)
    <anonymous> https://launch.playcanvas.com/editor/scene/js/launch.js:13613
    <anonymous> https://launch.playcanvas.com/editor/scene/js/launch.js:13634

@yaustar, @Leonidas I think

self.modelEntity.render.asset = containerAsset.resource.model;

I think this line of code is wrong. Since model is different from render. Correct me if I’m wrong.

Good point, that’s correct, check the updated example here, it has a different way of loading a GLB container asset, to instantiate a render entity:

https://developer.playcanvas.com/en/tutorials/loading-draco-compressed-glbs/

1 Like

Thanks a lot @Leonidas, it is working now.

1 Like