我有一个粒子系统和一条线。 通过创建颜色数组并将VertexColors设置为true,可以轻松设置行中每个顶点和边缘的颜色。 我的问题是如何在粒子系统/线中分别调整a)不透明度b)每个顶点/边缘的大小。
谢谢!
曾娜
我也想知道这一点。
geometry.colors
是一个顶点与顶点之间的映射关系。 因此,如果要更改geometry.vertices[ 1 ]
的颜色,则需要修改geometry.colors[ 1 ]
。
嗨mrdoob。
geometry.colors [1]将是Three.color。 我可以愉快地更改颜色,但据我所知,不透明度值未存储在该位置。 那么,如何更改单个顶点/线的不透明度?
哦哦
您不容易做到这一点,不透明度是按材质而不是按元素指定的。 一段时间前,我们从Color
删除了alpha。
一种可能的方式是通过自定义属性和自定义MeshShaderMaterial
,您将拥有4种颜色。
尺寸相同,目前无法使用默认属性和材质按粒子或按行更改尺寸。 您将需要另一个属性流来确定大小,然后具有将使用此属性的自定义材料。
现在我不记得为什么我们决定从Color
删除alpha ...
我也不记得了,我能够找到这个:
https://github.com/mrdoob/three.js/commit/dc6e335dc9f7f38f1c79a5a6c112019d6fcce69d
似乎带有alpha的十六进制颜色正在制造麻烦。 现在,随着对资产管道的更多依赖,我想这会更加痛苦。
能够指定每个顶点的不透明度对于进行粒子系统非常有用。
有什么计划在将来的版本中对此提供支持?
我不确定这里的技术难点是什么。 从直觉上讲,像geometry.opacityValues
这样的东西似乎是向后兼容的,非侵入性的支持方式。 也可以使用全局pointsMaterial.vertexOpacityValues
标志来禁用此支持(如不需要或引起麻烦),就像顶点颜色一样。
@quyin您可以使用自定义ShaderMaterial
。 如果需要帮助,请参见stackoverflow。
@WestLangley我明白了。 谢谢(你的)信息!
另一方面,如果可以用JS完成此操作会很好,尤其是对于不熟悉着色器语言的人,包括我。 都一样谢谢!
最有用的评论
@WestLangley我明白了。 谢谢(你的)信息!
另一方面,如果可以用JS完成此操作会很好,尤其是对于不熟悉着色器语言的人,包括我。 都一样谢谢!