在 Babylon.js 中,我如何 get/set FreeCamera 的旋转或摇摄角度?

In Babylon.js how can I get/set a FreeCamera's rotation or pan angle?

我正在尝试捕捉 FreeCamera 的位置和平移角度或旋转,以便稍后可以使用完全相同的视图重新定位相机。

(我正在使用 http://www.babylonjs-playground.com/ 处的 Collision 示例的更改版本)

我似乎能够得到 camera.position.x、camera.position.y 和 camera.position.z,但 camera.cameraRotation.y 总是产生零。

根据 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/#2FNBTG#1

我想出的似乎可靠的方法是首先收集各种相机统计数据:

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);
}