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