Three.js: Регулировка непрозрачности / размера частиц и линий

Созданный на 27 июн. 2011  ·  11Комментарии  ·  Источник: mrdoob/three.js

У меня есть система частиц и линия. Я могу легко установить цвет каждой вершины и ребра в моей строке, создав массив цветов и установив для VertexColors значение true. Мой вопрос: как я могу настроить а) непрозрачность б) размер каждой вершины / ребра индивидуально в моей системе / линии частиц.

Благодаря!

Зенна

Question

Самый полезный комментарий

@WestLangley Понятно . Спасибо за информацию!

с другой стороны, было бы неплохо, если бы это можно было сделать на JS, особенно для людей, которые не знакомы с языком шейдеров, включая меня. все равно спасибо!

Все 11 Комментарий

Я тоже хотел бы это знать.

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, особенно для людей, которые не знакомы с языком шейдеров, включая меня. все равно спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

jack-jun picture jack-jun  ·  3Комментарии

filharvey picture filharvey  ·  3Комментарии

Horray picture Horray  ·  3Комментарии

Bandit picture Bandit  ·  3Комментарии

ghost picture ghost  ·  3Комментарии