Three.js: 调整不透明度/粒子和线条的大小

创建于 2011-06-27  ·  11评论  ·  资料来源: mrdoob/three.js

我有一个粒子系统和一条线。 通过创建颜色数组并将VertexColors设置为true,可以轻松设置行中每个顶点和边缘的颜色。 我的问题是如何在粒子系统/线中分别调整a)不透明度b)每个顶点/边缘的大小。

谢谢!

曾娜

Question

最有用的评论

@WestLangley我明白了。 谢谢(你的)信息!

另一方面,如果可以用JS完成此操作会很好,尤其是对于不熟悉着色器语言的人,包括我。 都一样谢谢!

所有11条评论

我也想知道这一点。

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完成此操作会很好,尤其是对于不熟悉着色器语言的人,包括我。 都一样谢谢!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mrdoob picture mrdoob  ·  66评论

Mugen87 picture Mugen87  ·  68评论

arctwelve picture arctwelve  ·  92评论

danrossi picture danrossi  ·  210评论

kdilayer picture kdilayer  ·  62评论