我正在尝试通过单击场景外的按钮来找到一种在巴比伦场景中启动/停止相机自动旋转的方法。
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;
}
}
答案 0 :(得分:1)
好的,您要解决的问题有点棘手。
实际上,您需要将旋转的相机绑定到引擎渲染循环。
例如,您可以具有以下渲染循环:
var scene = new BABYLON.Scene(engine);
engine.runRenderLoop(() => {
scene.render();
rotateCamera();
});
然后您的rotateCamera方法包含以下说明:
rotateCamera() {
if(autoR==1){
camera.alpha = (camera.alpha % (2*Math.PI)) + (offset);
}
}
offset变量是每帧要旋转相机(弧度)的值。
然后您的按钮必须仅调用切换autoR
值的函数
有关更多信息,请随时访问BabylonJS论坛。 https://forum.babylonjs.com/c/questions