在 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
我正在尝试通过单击场景外的按钮来找到 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