如何与AFrame中的obj或collada模型进行交互

时间:2016-06-02 07:26:23

标签: webvr aframe

<a-assets>
        <a-mixin id="ring" geometry="primitive: ring; radiusOuter: 0.20;
                radiusInner: 0.15;"
                material="color: cyan; shader: flat"
                cursor=" fuse: true"></a-mixin>
        <a-asset-item id="mancloth" src="../models/man.obj"></a-asset-item>
        <a-asset-item id="manclothmtl" src="../models/man.mtl"></a-asset-item>
</a-assets>
<a-entity camera look-controls wasd-controls><a-entity mixin="ring" position="0 0 -3">
        <a-animation begin="cursor-click" easing="ease-in" attribute="scale"
               fill="backwards" from="0.3 0.3 0.3" to="1 1 1"></a-animation>
        <a-animation begin="cursor-fusing" easing="ease-in" attribute="scale"
               fill="forwards" from="1 1 1" to="0.3 0.3 0.3"></a-animation>
      </a-entity>
</a-entity>
<a-obj-model  scale="1 1 1" src="#mancloth" mtl="#manclothmtl"></a-obj-model>

我使用相机与obj进行交互,但aframe.js在第57766行显示错误。如何在不更改aframe.js的情况下解决此问题。

var intersectedEl = intersection.object.el;
intersectedEl.emit('raycaster-intersected', {el: el,intersection:intersection});

intersection.object是THREE.Mesh,所以intersection.object.el未定义!

1 个答案:

答案 0 :(得分:1)

通过将A-Frame实体绑定到模型的每个子项,已在https://github.com/aframevr/aframe/pull/1497修复此问题。

您可以等待A-Frame 0.3.0或使用最新的A-Frame主机。现在,光标使用raycaster来查看相交的对象。使用OBJ / COLLADA模型,它可以创建一个对象树。但是,A-Frame仅将顶级对象视为实体。因此,当raycaster返回对象时,它没有关联实体来发送事件。

现在它应该起作用:

<a-camera><a-cursor></a-cursor></a-camera>
<a-obj-model></a-obj-model>