В Babylon.js как я могу получить / установить угол поворота или угол панорамирования FreeCamera?
Я пытаюсь запечатлеть местоположение и угол поворота FreeCamera, а также угол поворота, чтобы позже я мог изменить положение камеры с точно таким же видом.
(Я работаю с измененной версией примера Collision по адресу http://www.babylonjs-playground.com/)
Кажется, я могу получить camera.position.x, camera.position.y и camera.position.z нормально, но camera.cameraRotation.y всегда дает ноль.
2 ответа
Метод, который я придумал и который работает надежно, заключается в том, чтобы сначала собрать различные характеристики камеры:
var firstPosition=camera.position.x.toFixed(2)+"/"+camera.position.z.toFixed(2)+"/"+camera.rotation.x.toFixed(2)+"/"+camera.rotation.y.toFixed(2)+"/"+camera.rotation.z.toFixed(2);
который я храню в базе данных. Затем, когда это необходимо, я получаю положение камеры:
var firstArray=firstPositionL.split("/");
var firstX=Number(firstArray[0]);
var firstZ=Number(firstArray[1]);
var firstRx=Number(firstArray[2]);
var firstRy=Number(firstArray[3]);
var firstRz=Number(firstArray[4]);
Затем при воссоздании сцены я добавляю это как раз в конце создания сцены. Я поместил его в функцию задержки, чтобы дать сцене время установить себя:
var myVar = setInterval(function(){ myTimer() }, 1000);
function myTimer() {
camera.position.x=firstX;
camera.position.z=firstZ;
camera.rotation.x=firstRx;
camera.rotation.y=firstRy;
camera.rotation.z=firstRz;
clearInterval(myVar);
}
Согласно http://www.html5gamedevs.com/topic/11380-rotate-camera-around-z-axis/ с upVector:
camera.noRotationConstraint=true;
camera.upVector = new BABYLON.Vector3(1, 0.2, -1);
Пример игровой площадки: http://www.babylonjs-playground.com/