WebXR and Pico

we tryed to implement the webxr (so, the support for VR headset) on this project:

We follow the playcanvas examples and tutorial, but there’s no way to have it working on Pico devices. When we start the vr mode, it simply goes black and than return to the “flat” browser.

The strange thing is that the example posted here works on pico: WebXR VR Lab - PLAYCANVAS
But if we download and rebuild it, it don’t works: TestXR - PLAYCANVAS

It feels like something PlayCanvas’ side happened, but is there something that we could do? Pico said that since the old example works, there’s nothing they can do.

I think it was fixed and should be available in the next release:

Meanwhile, you could build PlayCanvas engine yourself and replace it in the downloaded build.


thank you.

But what do you mean with Build playcanvas engine and replace in the downloaded build?

When you download your app build ZIP, the currently released version of the engine is inside the ZIP archive. You can build the current development version of the engine yourself and replace it. The instructions are here:

This will generate playcanvas.js from the current sources, which includes the fix. Or simply wait for the next public release, then it will just work.

I’ve ran the build command and replaced the playcanvas-stable.min.js I’ve had in the project’s build with the new playcanvas.min.js but the error still occurs.
Just double checking, in the generated .js I see v1.69.2 rev 3e80480 (RELEASE), is it correct or Do I need to manually set the version I want to build?


No, it should be v1.70.0-dev revision 34ecb681b. You probably didn’t build it correctly?

git clone https://github.com/playcanvas/engine
cd engine
npm install
npm run build

There will be playcanvas.min.js (and other variants) in the build folder.

Hi Lexxik,

we tryed to compile the example project and use the engine you mentioned, but this is what we got.
And it’s still not working with Pico: TestXR

Pinging @moka in case he has some suggestions,

In the meantime, could you please check WebXR issue on PICO Neo 3 · Issue #6045 · playcanvas/engine · GitHub and try to provide some logs, as we don’t have that specific device to test on.

Hi @mvaligursky
i can have the pico logs, but not chrome logs as shown in the linked example, since Pico G3 don’t provide a linkable solution for PC, is standalone only.
Should i share pico logs or do you need browser logs?

Any logs showing some errors / warnings or anything that could help us find the problem would be useful. Post away please.

1 Like

Here is the link to the log.
I can see some activity on the openxr that ends with an error (-1 and -15) but i can’t told what this means. I’ve already asked to Pico support but still no answer.

03-27 16:58:36.190443 4183 5299 E APxrRuntime: Call error ‘-15’!
03-27 16:58:36.190615 4183 5299 I chromium: [INFO:openxr_render_loop_base.cc(1156)] ###ken###-openXR OpenXrRenderLoopBase::PushEvent EventPtr=0x6e00c58970 Event: kEndBeginFrame-3
03-27 16:58:36.190661 4183 5299 I chromium: [INFO:openxr_render_loop_base.cc(1244)] ###ken###-openXR OpenXrRenderLoopBase::ProcessSingleEvent Event: kEndBeginFrame-3
03-27 16:58:36.190687 4183 5299 I chromium: [INFO:openxr_render_loop_base.cc(1610)] ###ken###-openXR OpenXrRenderLoopBase::PrepareTexture buffer->mailbox_holder:40:6B:06:D4:B3:CC:A7:52:1C:5A:FB:F3:66:7E:9B:79
03-27 16:58:36.190704 4183 5299 I chromium: [INFO:openxr_render_loop_base.cc(1618)] ###ken###-openXR OpenXrRenderLoopBase::PrepareTexture options->layers_size.size(): 0 frame->layers_shared_buffer.size(): 0
03-27 16:58:36.190806 4183 5299 E chromium: [ERROR:picoxr_api_wrapper.cc(1008)] ###OPENXR_GT###-PicoXrApiWrapper::GetHeadPose alpha=357.514 beta=-8.14441 gamma=-9.87172
03-27 16:58:36.191059 1300 1777 I TransferServer: SysDisplayed app uid : 10049 process_name:com.pico.browser.overseas unity first frame duration : 478
03-27 16:58:36.191922 4566 4653 E chromium: [ERROR:xr_session.cc(1430)] ###openxr###-XRSession::end
03-27 16:58:36.191959 4566 4653 E chromium: [ERROR:xr_session.cc(1449)] ###openxr###-XRSession::ForceEnd
03-27 16:58:36.192067 4183 4183 E chromium: [ERROR:xr_runtime_manager_impl.cc(310)] ###ken###-XRRuntimeManagerImpl::GetCurrentlyPresentingImmersiveRuntime
03-27 16:58:36.192088 4183 4183 I chromium: [INFO:xr_runtime_manager_impl.cc(266)] ###ken###-openXR XRRuntimeManagerImpl::GetImmersiveVrRuntime


@moka will check this out when he can. I suspect he’s on holidays as otherwise he would already have.

What is the Pico Browser version are you using?

Hi @LeXXik

I can’t check right now but for shure the Pico is updated to the last version. Since browser is installed with OS, I suppose we have the last version

Your assumption is just an assumption.

You could also try to use a preview release version:

Hi @LeXXik ,
browser’s version is 3.3.42.

1 Like

Hi, maybe he had the chance to take a look into it?

Yes, @moka fixed the problem:

However, this fix has not yet gone out with an engine release? Are you ok waiting a week or so or do you need this fix urgently?

thanks for the answer @will !
We are not in a hurry, a week or so is more than ok for us

@will i just need an information/confirmation: as far as i read, the problem is that Pico browser can’t handle XRSession.enabledFeatures, even if it is around since mid 2022, is this correct?

I’m asking because i have an open ticket with pico support and i’d like to update them, even if they disappeared since a while