import {
Nullable,
Scene,
Vector3,
WebXRControllerPointerSelection,
WebXRDefaultExperience,
WebXRExperienceHelper,
WebXRFeatureName,
WebXRInput,
} from '@babylonjs/core';
let xrHelper: WebXRExperienceHelper;
let xr: WebXRDefaultExperience;
const attachControllers = (xrHelper: WebXRExperienceHelper) => {
const controllers = new WebXRInput(xrHelper.sessionManager, xrHelper.camera);
const xrayPointer = new WebXRControllerPointerSelection(
xrHelper.sessionManager,
{
disablePointerUpOnTouchOut: false,
disableScenePointerVectorUpdate: false,
forceGazeMode: false,
xrInput: controllers,
}
);
xrayPointer.displayLaserPointer = true;
xrayPointer.attach();
return controllers;
};
export const enterXR = async (scene: Nullable<Scene>) => {
if (scene !== null) {
xrHelper = await WebXRExperienceHelper.CreateAsync(scene);
attachControllers(xrHelper);
await xrHelper.enterXRAsync('immersive-vr', 'local-floor', undefined, {});
}
};
export const exitXR = async (scene: Nullable<Scene>) => {
if (scene !== null && xrHelper !== undefined) {
await xrHelper.exitXRAsync();
}
};
using the above code to enter xr and enable controllers, but as soon as i enable controllers that is call the ‘attachControllers(xrHelper);’ function my fps drops to 20, other wise they are between 40 to 50.
attaching the profiling image and profile data
Profile-20220818T132955.zip (465.5 KB)