从A-Frame或JS更新Collada(.dae)文件代码

时间:2016-11-14 09:14:51

标签: javascript html three.js collada aframe

我在A-Frame中加载了collada(.dae)文件。它装好了。但现在我必须从用户输入更新该文件,如颜色等。如何从html,js或A-Frame更新.dae文件中的代码

这是加载的A帧代码:

<a-scene>
   <a-assets>
        <a-asset-item id="box" src="box.dae"></a-asset-item>
   </a-assets>
   <a-entity id="collada" collada-model="#box"></a-entity>
       <a-entity id="cmr" position="0 1 5" rotation="0 0 0">
         <a-camera> 
           <a-cursor color="#2E3A87" >
         </a-camera>
       </a-entity> 
</a-scene>

那么如何使用html,js,A-Frame或其他任何内容更新.dae文件中的代码?

这是Collada档案:box.dae

1 个答案:

答案 0 :(得分:1)

A-Frame的内置组件仅支持非常基本的覆盖(您可以使用例如material="color: red"来设置模型的颜色,我不确定)。对于任何更高级的东西,您将需要使用A-Frame本身使用的THREE.js API。我建议查看THREE.js文档 - 这里有很多关于如何自定义Material和Geometry实例的细节 - 但这是一个非常基本的例子:

 AFRAME.registerComponent('model-overrider', {
   init: function() {
     this.el.addEventListener('model-loaded', function(e) {
       var model = e.detail.model;
       model.traverse(function(o) {
         if (o instanceof THREE.Mesh) {
           // modify o.material or o.geometry here.
         }
       });
     });
   }
 });

用法:

<a-entity collada-model="..." model-overrider> </a-entity>

THREE.Material的文档:Material

有关更复杂的示例,请变形各个顶点,请参阅<a-ocean/>

当然,如果您想进行任何严格的手动编辑,您将需要使用Blender,Maya或其他3D建模程序。 :)