在 babylonjs 中,如何切换自动旋转行为 on/off?

In babylonjs how can I toggle the AutoRotate behavior on/off?

我正在尝试通过单击场景外的按钮来找到 start/stop 相机在 babylonjs 场景中自动旋转的方法。

var createScene = function () {

        var scene = new BABYLON.Scene(engine);

        scene.clearColor = new BABYLON.Color3(0, 0, 0);

        var camera = new BABYLON.ArcRotateCamera("Camera", Math.PI / 2, Math.PI / 2, 2, new BABYLON.Vector3(0,0,200), scene);
        camera.attachControl(canvas, true);

        var light1 = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(1, 1, 100), scene);
        var light2 = new BABYLON.PointLight("light2", new BABYLON.Vector3(0, 1, -1), scene);

        light1.intensity = 10;
        light2.intensity = 24;

        BABYLON.SceneLoader.ImportMesh("", "samples/79115-0_10MB/", "79115-0_100.obj", scene, function (newMeshes) {

        camera.target = newMeshes[0];

        });

        ////// set the behaviour here /////    
        camera.useAutoRotationBehavior = false;

        return scene;
    };

我曾尝试使用 createScene 函数之外的切换函数来进行更改,但未成功:

function toggleRotate(){
    if(autoR==0){
        autoR=1;
        camera.useAutoRotationBehavior = true;
    }else{
        autoR=0;
        camera.useAutoRotationBehavior = false;
    }
}

好的,您尝试做的事情的解决方案有点棘手。

实际上你需要将你的相机旋转绑定到引擎渲染循环。

例如,您可以使用以下渲染循环:

 var scene = new BABYLON.Scene(engine);
engine.runRenderLoop(() => {
  scene.render();
  rotateCamera();
});

然后您的 rotateCamera 方法包含以下说明:

  rotateCamera() {
    if(autoR==1){
      camera.alpha = (camera.alpha % (2*Math.PI)) + (offset);
    }
  }

偏移量变量是您希望为每一帧旋转相机的值(以弧度为单位)。

然后您的按钮必须调用一个函数来切换 autoR

的值

如需更多信息,请随时访问 BabylonJS 论坛。 https://forum.babylonjs.com/c/questions