在three.js中正确使用材料

时间:2014-05-19 03:46:00

标签: three.js

现在我正在设计一个允许用户创建对象并指定新材料的系统。我做了一些事情,以便用户创建材料,将其添加到材料字典中,然后当他们创建对象时,他们从该字典中选择材料。 "问题"因为对象引用了字典中的材料,所以对这些材料所做的更改会更改所有具有这些材质的对象。我不确定这是不是"好",我当时的推理是这样做是我所假设的"最佳实践",因为共享冗余材料SEEMS就像在gpu上比给每个对象自己克隆该材料更容易,然后强制gpu在这些材料之间进行更改。

我在没有真正知道three.js内部发生了什么的情况下做了这个假设,所以我觉得我可能做了一些绝对没有任何好处的东西,并且控制对象材料的各个属性是一种痛苦在屁股(你必须每次都使它成为自己的材料)。

我想知道的是,如果我犯了一个大错误,应该将其全部更改为使用" unique"字典中定义材料的副本,或者我现在拥有的东西实际上是在优化任何东西。

1 个答案:

答案 0 :(得分:0)

我认为这不会大大降低性能。此外,只有当用户尝试更改它们时,您才可以从字典中复制材料。 我不记得Three.js材料受到性能的强烈影响。 克隆方法http://threejs.org/docs/#Reference/Materials/Material