【问题标题】:A-Frame: How do you add multiple meshes to an entity with setObject3D?A-Frame:如何使用 setObject3D 向实体添加多个网格?
【发布时间】:2017-09-14 03:26:10
【问题描述】:

使用 A-Frames 标签,可以将多个组件作为子项添加到实体:

<a-scene>
  <a-entity>
   <a-box>...</a-box>
   <a-box>...</a-box> 
 </a-entity>
<a-scene>

您将如何使用 setObject3D 方法将其复制到已注册的组件中?

代码笔:https://codepen.io/ubermario/pen/wrwjVG

【问题讨论】:

    标签: three.js aframe


    【解决方案1】:

    是的,您可以随意命名 object3D。 mesh 这个词只是网格普遍接受的,并被几何/材料组件使用。澄清:

    setObject3D('mesh')

    setObject3D('yourobject')

    setObject3D('whateveryouwantbox');

    【讨论】:

    • 谢谢!这种澄清将对文档有所帮助。 'mesh' 文字可能会被错误地解释为创建 three.js 'Mesh' (threejs.org/docs/#api/objects/Mesh)。尤其是当 A-FRame 中使用的方法是 .setObject3D 并且 three.js 中的 'Mesh' 是 Object3D 基类时。
    【解决方案2】:

    据我所知,setObject3D 仅将三个对象映射为 object3D 的根,就像将子实体与父实体合并一样。 为了实现你想要的,你需要:

    • 获取父实体object3D参考
    • 创建三个对象
    • 使用parent.add(three.object)将对象添加到父对象

    在这里提琴:https://jsfiddle.net/kzv3rj6m/1/

    【讨论】:

    • Piotr:.add 方法重复了我在 three.js 中已有的逻辑,但没有将新网格注册到 A-Frame。但是,您的评论(谢谢!)(以及我们的一些人在睡觉;))让我再次仔细查看了文档,我发现我所要做的就是唯一地命名使用 .setObject3D 方法设置的每个对象。跨度>
    • 您想使用父实体,子实体作为原语? &lt;a-customShape&gt; ?
    • 更新 codepen 显示解决方案:codepen.io/ubermario/pen/wrwjVG
    • 是的......这样很容易通过父级对所有子级进行转换。 是我所需要的,你的帮助让我克服了困难,一切都在以超快的速度动态构建!
    猜你喜欢
    • 1970-01-01
    • 2021-08-19
    • 2018-08-23
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多