PhotoDome with mobile Gyroscope

Hi,

I have a demo photodome, any suggestions on how to implement photodome to work with mobile gyroscope? any reference project or link would help.

We have a camera that rotates with your mobile device:

DeviceOrientationCamera | Babylon.js Documentation (babylonjs.com)

using it together with the photo dome will result in the experience you are expecting

2 Likes

Hi @RaananW, I tried adding ArcRotateCameraVRDeviceOrientationInput() into ArcRotateCamera inputs which gave the results that I expected. But the camera rotation/movement is not smooth rather it stutters. I also tried using DeviceOrientationCamera where the camera rotation/movement is smooth. Any idea why the camera stutters on ArcRotateCamera?

@RaananW will be back next week and have a look :slight_smile:

1 Like

It probably stutters because the refresh rate is very low. The orientation VR camera has a few tweaks you can set in order to get the scene to render better. Before that, have you tried rendering the simplest object? Also make sure you try first with a relatively strong device. Old ones tend to lag.

Can you share a scene that lags? Will be great to test it on my own device as well

1 Like

Hi @RaananW ,

Sharing a sample PG,

https://playground.babylonjs.com/#14KRGG#515

You can also see, the rotation doesn’t work properly as in DeviceOrientationCamera. In DeviceOrientationCamera everything is so smooth. Since I made use of ArcRotateCamera for the entire build (original build) I don’t wish to change it. Any solution is much appreciated.

Device Spec :
Chipset - Qualcomm Snapdragon 730G
GPU - Adreno 618
It is a midrange processor which is good to handle VR i guess.

Do you mean to do something like this?

ArcRotateCameraVRDeviceOrientationInput | Babylon.js Playground (babylonjs.com)

Hi, no. I was expecting something like this

Click on the marked icon for the experience.

How is that different than the device orientation camera?

I wanted to make use of ArcRotateCamera instead of DeviceOrientationCamera. so I came across ArcRotateCameraVRDeviceOrientationInput() which provides the same functionality as DeviceOrientationCamera. But it doesn’t work properly.

What does not work ?

if you don’t change the camera’s position, both work the same (in orientation mode). Are you looking for a unified solution for both mobile and desktop?

You can compare these playgrounds (https://playground.babylonjs.com/#14KRGG#517 - uses DeviceOrientationCamera) and ( https://playground.babylonjs.com/#14KRGG#515 - uses ArcRotateCamera with VRDeviceOrientationInput()) in a mobile device. The rotation also seems to be reversed in ArcRotateCamera and it is not smooth. Not sure what causes such problem.

But, again, why don’t you use the device orientation camera? You are forcing a VR input on a camera that is not VR oriented.
The website you showed has a button to jump into orientation mode - you can do the same, but switching between an arcrotate to the device orientation camera

Yes you are right, I had this approach as another option. Looks like I have to go with this. Anyway, thanks for all the replies. I am left with one question, if we have to use device orientation camera for VR (gyroscope) then is there any specific purpose for having ArcRotateCameraVRDeviceOrientationInput() in ArcRotateCamera? At what scenario will it be useful?

The example I provided you is the arc rotate vr camera, which is using this input