实体可以共享相同的材料吗?

时间:2018-11-16 14:08:51

标签: aframe

我有多个实体,我想共享同一材料。因此,如果我更改了材质属性,则将使用该材质对场景中所有实体的属性进行更新。

这可能吗?如果是这样,怎么办?

2 个答案:

答案 0 :(得分:2)

手动创建材质并附加到网格:

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方法也可以使用,尽管效率略低,抽象程度更高

答案 1 :(得分:1)

a-mixin与物质成分一起使用并操纵其属性。所有应用了该实体的实体都会更新:

https://aframe.io/docs/0.8.0/core/mixins.html#sidebar