我试图通过改变它的世界矩阵来移动相机。但它似乎没有效果。无论相机什么都不动。
camera.matrixAutoUpdate = false
camera.matrixWorld = portal_view(camera,port1_quad,port2_quad)
我尝试过使用matrixupdate = true但仍然没有。我错了什么?
function portal_view(camera, src_portal, dst_portal) {
var inverse_view_to_source = new THREE.Matrix4().getInverse(camera.matrix).multiply(src_portal.matrix);
var new_mat = dst_portal.matrix.clone().multiply(inverse_view_to_source);
new_mat.makeRotationY(3.14);
return new_mat;
}
答案 0 :(得分:0)
matrixWorld
是根据其position
,quaternion
和scale
计算出来的。你不能直接改变矩阵世界'一个对象。换句话说,如果您更改matrixWorld
,则更改不会反映在对象的position
上。您必须更改相机的position
。
您可以做的是,从矩阵中提取translation
和rotation
,然后根据它更改相机position
和quaternion
。