【发布时间】:2014-07-16 12:44:03
【问题描述】:
我正在尝试设置 Three.js 透视相机的 ProjectionMatrix 以匹配我使用不同程序计算的投影矩阵。
所以我这样设置相机的位置和旋转:
self.camera.position.x = 0;
self.camera.position.y = 0;
self.camera.position.z = 142 ;
self.camera.rotation.x = 0.0;// -0.032
self.camera.rotation.y = 0.0;
self.camera.rotation.z = 0;
接下来我创建了一个 4x4 矩阵(在 Three.js 中称为 Matrix4),如下所示:
var projectionMatrix = new THREE.Matrix4(-1426.149, -145.7176, -523.0170, 225.07519, -42.40711, -1463.2367, -23.6839, 524.3322, -0.0174, -0.11928, -0.99270, 0.43826, 0, 0, 0, 1);
并像这样更改相机的投影矩阵条目:
for ( var i = 0; i < 16; i++) {
self.camera.projectionMatrix.elements[i] = projectionMatrix.elements[i];
}
当我现在渲染场景时,我只是得到一个黑屏并且看不到我插入的任何对象。转动相机的角度也无济于事。我仍然看不到任何物体。
如果我插入一个
self.camera.updateProjectionMatrix();
将相机的投影矩阵设置为我的 projectionMatrix 的值后,将相机设置回原始位置(x=0,y=0,z=142 并查看我创建一些对象的原点)和值我在相机中设置的矩阵好像已经被覆盖了。我通过将相机投影矩阵打印到控制台来检查这一点。如果我不调用 updateProjectionMatrix() 函数,值将保持在我设置的状态。
有人知道如何解决这个问题吗?
【问题讨论】:
-
你找到解决这个问题的方法了吗?如果是这样,你能把它贴出来吗?我不得不处理同样的问题。谢谢。
标签: three.js