Javascript Three.js-如何更改缓冲几何体中的选定对象材质?
我在缓冲几何体中有一堆对象 问题: 如何更改单个对象的材质属性以使所有其他对象不受影响 详情: 我可以获得单个选定对象(通过光线投射技术)。 此外,我可以看到所选对象仅具有.material属性(而不是.materials)。此.material属性恰好是缓冲几何体的材质。因此,当我更改选定对象的材质属性(比如颜色)时,它实际上会影响缓冲几何体中的所有对象 我希望这个解释/问题有意义 如何获取所选对象:Javascript Three.js-如何更改缓冲几何体中的选定对象材质?,javascript,three.js,Javascript,Three.js,我在缓冲几何体中有一堆对象 问题: 如何更改单个对象的材质属性以使所有其他对象不受影响 详情: 我可以获得单个选定对象(通过光线投射技术)。 此外,我可以看到所选对象仅具有.material属性(而不是.materials)。此.material属性恰好是缓冲几何体的材质。因此,当我更改选定对象的材质属性(比如颜色)时,它实际上会影响缓冲几何体中的所有对象 我希望这个解释/问题有意义 如何获取所选对象: var intersects = this.Raycaster.intersectObjec
var intersects = this.Raycaster.intersectObject(this.Mesh);
if (intersects.length > 0) {
this.IntersectObject = intersects[0];
如何获取选定对象的材质:
this.IntersectObject.object.material
一个网格有一个几何体和一种材质,如果将多个几何体合并为一个几何体,它们不能有不同的材质,可能有多个网格具有相同的材质参照,这就是为什么所有对象都会受到影响我有一个缓冲几何体。所以我相信这是一个网格,对吗?为了解决这个“一个网格,一种材质”的限制,我能改变一个对象的属性吗,比如颜色,或者它的不透明度,即使它在缓冲几何体中?不像使用多个网格那么容易,您可能需要将自定义属性添加到几何体中,并编写自己的着色器材质来使用它们(例如,不透明度是一个统一的=绑定到材质,而不是顶点),我认为颜色已经内置为属性,添加“颜色”属性和更改对象每个顶点的值应该不需要参考