В 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/

Другие вопросы по тегам