如何获取 Three.Camera 引用?

How to get the Three.Camera reference?

我正在尝试将 <a-camera> 输出渲染到 canvas,
我在我的资产中设置了一个 canvas:

<canvas id="canvasnd" crossorigin="anonymous"></canvas>

我有相机:

<a-entity id="ndcam" camera look-controls position="2 1.6 -1" rotation="0 90 
 0"></a-entity>

当我尝试像这样渲染相机输出时:

  var cameraElement = document.querySelector("#ndcam");
  var camera = cameraElement.getAttribute("camera");
  var sceneEl = this.el;
  var renderer = new THREE.WebGLRenderer({
    canvas: canvasnd
  });

  function render() {
    renderer.render(sceneEl, camera);
  }
  render();

我收到 camera is not an instance of three.js camera 错误。 代码在 a 场景中,因此 sceneEl = this.el;.

我尝试获取 camera.elcamera.parentNodesceneEl.systems.camerasceneEl.systems.camera.activeCameraEl,但我真的不知道如何获取有效的 three.camera 参考.

我试过 ,但事件从未触发。
直播fiddle here.

如果您有对 a-scene 元素的引用,您可以直接调用它。

let sceneEl = ...;    
let camera = sceneEl.camera;

相机是一个组件,可以驻留在 a-entitya-camera 中(专用于 API)。如果元素是 A-Frame 基元,它应该有一个存储所有组件的对象。查询相机的简单方法可能是:

let cameraEl = document.querySelector('a-entity[camera]')
if (!cameraEl) {
    cameraEl = document.querySelector('a-camera');
}
let camera = cameraEl.components.camera.camera;

其中第一个相机引用是组件,第二个是 THREE.Camera 的实例。