Angular 具有顶点颜色的三个JS网格颜色更改

Angular 具有顶点颜色的三个JS网格颜色更改,angular,typescript,three.js,Angular,Typescript,Three.js,我有一个问题的颜色变化在三个JS。我正在使用stl文件中的顶点颜色将网格添加到场景中。颜色已正确添加,但当我尝试通过以下代码进行更改时: this.meshArray[elementName].material.color.setHex(colorValue) 颜色没有适当地改变。它们看起来像新旧颜色的混合体。在图片上你可以看到这个例子。我试着把两部分的颜色改成红色。灰色部分变为浅红色,但蓝色部分几乎变为黑色。我不知道这会有什么问题,但我假设问题是因为我从顶点颜色中获取颜色,并且以后不更改此设置

我有一个问题的颜色变化在三个JS。我正在使用stl文件中的顶点颜色将网格添加到场景中。颜色已正确添加,但当我尝试通过以下代码进行更改时:

this.meshArray[elementName].material.color.setHex(colorValue)

颜色没有适当地改变。它们看起来像新旧颜色的混合体。在图片上你可以看到这个例子。我试着把两部分的颜色改成红色。灰色部分变为浅红色,但蓝色部分几乎变为黑色。我不知道这会有什么问题,但我假设问题是因为我从顶点颜色中获取颜色,并且以后不更改此设置?有人知道怎么修吗


您遇到此问题是因为您在使用
材质.color
属性的同时使用了
顶点颜色。每个顶点都指定了自己的单独颜色,当应用常规材质颜色时,它们会相乘,从而产生不希望的结果。例如,蓝色*红色=黑色,因为255*0=0

0x0000ff // blue
  ****** // multiply
0xff0000 // red
0x000000 // result

您必须更改
顶点颜色
材质。颜色
,但不能同时更改两者。要访问几何体中的顶点颜色,可以使用
geometry.getAttribute(“color”)
方法,然后更改每个顶点的每个RGB值。有关“顶点颜色”属性的示例,请参见。

好的,谢谢您的解释。现在我面临另一个问题。它在添加新元素的过程中起作用,但当我尝试通过按钮动态更改现有元素时,下面的代码不起作用。你知道它为什么不起作用吗
let geometry=this.scene.getObjectByName(“myFile.stl”).geometry const color=new THREE.color(0xFF0000);//@ts忽略(让idx=0;idx
请为此新问题打开一个新问题。