将 A 帧与 Three.js 相结合

Combining A-frame with Three.js

我想知道...

是否可以将 Three.js 个元素添加到 A 帧场景中? 假设 A 帧建立在 Three.js 和

之上
three Version: ^0.74.0

登录到您的控制台应该不是什么奇怪的事情吧?

我在我的 A 帧场景元素上尝试了这段代码:

let scene = document.getElementsByTagName('a-scene');
console.log(scene);

var sphereMaterial = new THREE.MeshLambertMaterial( {  } );
var sphere = new THREE.Mesh( new THREE.SphereGeometry( 15, 10, 10 ), sphereMaterial );
    sphere.position.set(150, 20, -170);
    scene.add( sphere );

但是它不起作用,因为场景对象没有添加功能..可能是因为A帧场景不是普通WebGLRenderer的实例?

有人有这方面的经验吗?这将是非常棒的!

A-Frame 建立在 three.js 之上并公开所有底层功能。

<a-scene>.object3D 使您可以访问 THREE.Scene.

每个 <a-entity> 都有一个 object3D 是一个组。您使用 getObject3D(name)getOrCreateObject3D(name, constructor 向组中添加内容。

要在 A-Frame 框架内添加 three.js 元素,请使用 A-Frame 提供的实体组件系统。

AFRAME.registerComponent('mythreejsthing', {
  schema: {
    // ... Define schema to pass properties from DOM to this component
  },

  init: function () {
    var el = this.el;  // Entity.
    var mythreejsobject = // ... Create three.js object.
    el.setObject3D('mesh', mythreejsobject);
  }
});

https://aframe.io/docs/0.2.0/core/entity.html#object3d https://aframe.io/docs/0.2.0/core/component.html