我在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
答案 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建模程序。 :)