Serialization 在3JS中序列化摄影机状态
在ThreeJS场景中序列化(或保存或封送)摄影机的状态,然后稍后取消序列化(或加载或解组)摄影机的最佳方式是什么 现在,我正在保存相机位置、向上和(欧拉角度)旋转字段的x、y、z坐标。稍后,我尝试通过调用Serialization 在3JS中序列化摄影机状态,serialization,3d,three.js,Serialization,3d,Three.js,在ThreeJS场景中序列化(或保存或封送)摄影机的状态,然后稍后取消序列化(或加载或解组)摄影机的最佳方式是什么 现在,我正在保存相机位置、向上和(欧拉角度)旋转字段的x、y、z坐标。稍后,我尝试通过调用position.set(),up.set(),和rotation.set(),来恢复此相机,然后调用updateprojectMatrix()。我假设序列化和取消序列化时默认的Euler角度旋转顺序相同 这是否正确?我建议改为存储相机的矩阵。这包括摄影机上的整个变换,包括位置、旋转和缩放 序
position.set()
,up.set()
,和rotation.set()
,来恢复此相机,然后调用updateprojectMatrix()
。我假设序列化和取消序列化时默认的Euler角度旋转顺序相同
这是否正确?我建议改为存储相机的矩阵。这包括摄影机上的整个变换,包括位置、旋转和缩放 序列化:
const cameraState = JSON.stringify(camera.matrix.toArray());
// ... store cameraState somehow ...
// ... read cameraState somehow ...
camera.matrix.fromArray(JSON.parse(cameraState));
// Get back position/rotation/scale attributes
camera.matrix.decompose(camera.position, camera.quaternion, camera.scale);
反序列化:
const cameraState = JSON.stringify(camera.matrix.toArray());
// ... store cameraState somehow ...
// ... read cameraState somehow ...
camera.matrix.fromArray(JSON.parse(cameraState));
// Get back position/rotation/scale attributes
camera.matrix.decompose(camera.position, camera.quaternion, camera.scale);
被接受的答案对我不起作用,相反,我提出了以下解决方案:
camera.position.x = saved.position.x;
camera.updateProjectMatrix()
重新计算投影矩阵
我需要将序列化的矩阵存储在数据库中,您对矩阵的近似大小有什么建议吗?