【发布时间】:2018-11-17 17:32:38
【问题描述】:
我有多个实体,我想共享相同的材料。因此,如果我对材质属性进行更改,则会在场景中使用该材质的所有实体上更新属性。
这可能吗?如果可以,怎么做?
【问题讨论】:
标签: aframe
我有多个实体,我想共享相同的材料。因此,如果我对材质属性进行更改,则会在场景中使用该材质的所有实体上更新属性。
这可能吗?如果可以,怎么做?
【问题讨论】:
标签: aframe
手动创建材质并附加到网格:
var material = new THREE.SomeMaterial();
AFRAME.registerComponent('my-material', {
this.el.getObject3D('mesh').material = material;
});
<a-entity geometry my-material></a-entity>
然后您可以随时手动操作材质,它会自动应用于所有使用它的实体/网格(例如,material.color.set(0.5, 0.5, 0.5))。
mixin 方法也有效,但效率稍低且更抽象
【讨论】:
<a-asset-item> 的形式做到这一点?文档暗示:“map: new THREE.TextureLoader().load(texture)。
将a-mixin 与材质组件一起使用并操作其属性。已应用它的所有实体都将更新:
【讨论】: