Three.js 在ThreeJS中手动指定摄影机矩阵

Three.js 在ThreeJS中手动指定摄影机矩阵,three.js,Three.js,我正在做一个项目,在这个项目中,我将在一个用真相机拍摄的视频上绘制3D图形。我得到一个静态投影和视图矩阵,我的任务是在上面绘制实际的图形。我已经在纯WebGL中使用了它,并且知道我正在尝试用3JS实现它。问题是我找不到一种方法来手动设置3JS中相机的投影和视图矩阵 我尝试设置camera.matrixAutoUpdate=false并调用camera.projectionMatrix.set(matrix)和camera.matrixWorldInverse.set(matrix),但它无法正常

我正在做一个项目,在这个项目中,我将在一个用真相机拍摄的视频上绘制3D图形。我得到一个静态投影和视图矩阵,我的任务是在上面绘制实际的图形。我已经在纯WebGL中使用了它,并且知道我正在尝试用3JS实现它。问题是我找不到一种方法来手动设置3JS中相机的投影和视图矩阵

我尝试设置
camera.matrixAutoUpdate=false
并调用
camera.projectionMatrix.set(matrix)
camera.matrixWorldInverse.set(matrix)
,但它无法正常工作。这就像实际变量没有传递给着色器一样

有人知道如何做到这一点吗

到目前为止,我得到的是:

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(
  75,
  window.innerWidth / window.innerHeight,
  0.1,
  1000
);
camera.matrixAutoUpdate = false;
camera.projectionMatrix.set(...)
camera.matrixWorldInverse.set(...)


var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

var geometry = new THREE.BoxGeometry();
var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);

var animate = function() {
  requestAnimationFrame(animate);

  renderer.render(scene, camera);
};

animate();

由于您自己定义投影矩阵,是否尝试使用原始摄影机而不是透视摄影机?请尝试使用camera.projectionMatrix.copy(matrix)而不是camera.projectionMatrix.set(…)