У меня есть система частиц и линия. Я могу легко установить цвет каждой вершины и ребра в моей строке, создав массив цветов и установив для VertexColors значение true. Мой вопрос: как я могу настроить а) непрозрачность б) размер каждой вершины / ребра индивидуально в моей системе / линии частиц.
Благодаря!
Зенна
Я тоже хотел бы это знать.
geometry.colors
- это массив, отображающий 1 на 1 вершины. Поэтому, если вы хотите изменить цвет geometry.vertices[ 1 ]
вам нужно изменить geometry.colors[ 1 ]
.
Привет, mrdoob.
geometry.colors [1] будет Three.color. Я могу с радостью изменить цвет, но, насколько мне известно, значение непрозрачности там не сохраняется. Итак, как я могу изменить непрозрачность отдельных вершин / линий?
Ой ой ...
Вы не можете сделать это легко, непрозрачность указывается для каждого материала, а не для каждого элемента. Некоторое время назад мы сбросили альфу с Color
.
Один из возможных способов - использовать настраиваемые атрибуты и пользовательский MeshShaderMaterial
где у вас будут 4-компонентные цвета.
То же самое и с размерами, в настоящее время нет возможности изменить их для каждой частицы или строки с атрибутами и материалами по умолчанию. Вам понадобится другой поток атрибутов для размера, а затем пользовательский материал, который будет его использовать.
Теперь я не могу вспомнить, почему мы решили удалить альфу из Color
...
Я тоже не помню, мне удалось вот это найти:
https://github.com/mrdoob/three.js/commit/dc6e335dc9f7f38f1c79a5a6c112019d6fcce69d
Похоже, что шестнадцатеричные цвета с альфами создавали проблемы. Теперь, когда в конвейере ресурсов больше зависимостей, я думаю, это будет еще более болезненно.
возможность указать непрозрачность для каждой вершины была бы очень полезна для создания систем частиц.
есть ли планы по поддержке этого в будущих выпусках?
Я не уверен, в чем здесь техническая сложность. интуитивно понятно, что наличие чего-то вроде geometry.opacityValues
кажется обратно совместимым, ненавязчивым способом поддержки этого. также может быть глобальный флаг pointsMaterial.vertexOpacityValues
чтобы отключить эту поддержку, если она не нужна или вызывает проблемы, как и в случае с цветами вершин.
@quyin Вы можете делать все, что хотите, с пользовательским ShaderMaterial
. См. Stackoverflow, если вам нужна помощь.
@WestLangley Понятно . Спасибо за информацию!
с другой стороны, было бы неплохо, если бы это можно было сделать на JS, особенно для людей, которые не знакомы с языком шейдеров, включая меня. все равно спасибо!
Самый полезный комментарий
@WestLangley Понятно . Спасибо за информацию!
с другой стороны, было бы неплохо, если бы это можно было сделать на JS, особенно для людей, которые не знакомы с языком шейдеров, включая меня. все равно спасибо!