6

私は考えていた...

Three.js 要素を A フレーム シーンに追加することは可能ですか? A-frame が 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 のインスタンスではないためでしょうか。

誰もこれを経験していますか?とても素晴らしいでしょう!

4

1 に答える 1

13

A-Frame は three.js の上に構築され、基礎となるすべての機能を公開します。

<a-scene>.object3D は、.object3D へのアクセスを提供しますTHREE.Scene

それぞれがグループである を<a-entity>持っています。object3Dと を使用getObject3D(name)getOrCreateObject3D(name, constructorて、グループに項目を追加します。

A-Frame フレームワーク内に three.js 要素を追加するには、A-Frame が提供する Entity-Component システムを使用します。

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

于 2016-07-13T18:00:41.763 に答える