Render.ru

Particle flow вопрос

k3b3

Активный участник
Рейтинг
16
#1
Всем привет.
Допустим в 1ом эвенте передвигается частица с формой сферы.

Как сделать, чтобы эта частица - сфера рождала новые частицы в своем volume (в объеме) ?
Только не предлагайте сделать сферу просто объектом.
 

maiden666

Мастер
Рейтинг
112
#2
без mParticles - никак
А так, в парралельном потоке или другом ивенте берёшь позицию и радиус основной частицы, и генерируешь партиклы внутри этого радиуса
 

k3b3

Активный участник
Рейтинг
16
#5
Начал изучать, примерно знаю основные функции, но с логикой могу напутать
 

maiden666

Мастер
Рейтинг
112
#7
без экспериментов точно не скажу, там разные варианты возможны, но в одном из вариантов мы юзаем Select Obj в режиме партиклес, где выбираем 1-ю систему с шаром, и через Object или Geometry ( не помню точно) получаем позицию и радиус допустим ближайшего партикла ( если он один, то он и будет ближайший), затем всем партиклам 2-й системы задаём эту самую позицию, но умноженную на случайное число и множитель, равный радиусу, тогда они должны распределиться внутри этого шара
Второй вариант сложнее и хитрее, с использованием Amout change, но тут я на глазок ничего сразу обьяснить не могу
 

k3b3

Активный участник
Рейтинг
16
#9
я нашел операторы, где можно достать типа object volume и object surface, притом как обджект вроде можно выбрать партиклы, но как это соединить хз
 

k3b3

Активный участник
Рейтинг
16
#10
Не очень понятно только. Сфера имеет векторные координаты X Y Z.
Как умножить вектор (позицию сферы), чтобы получить частицы в пределах радиуса этой сферы ?
Там даже функции такой нет.
И еще вопрос - как можно в data operator продублировать обычный оператор position object с выпадающим стеком Volume? По сути в этом наверное задача - взять частицу как объект и в ее объеме рождать частицы
 

maiden666

Мастер
Рейтинг
112
#11
кроме координат, партикл имеет ещё и скейл. Берём позицию и умножаем на рэндомное число в пределах +- радиус и получаем случайные позиции внутри этого радиуса
Но забей, не годится, я сделал этим способом, всё работает но фликует, то есть в каждом кадре случайные позиции вычисляюся заново и частицы вместо того чтобы просто лететь вслед, ещё и беспорядочно мельтешат, я пробовал вычислять эту величину только один раз вначале с помощью New in Event, не вышло, эта тупая скотина вообще перестаёт работать, поэтому можно сделать очень просто - 2 парралельных ивента, в 1-м шар как партикл инстанс, одна частица, во 2-м туча частиц, шар использован как Position Obj, и оператор Speed инстансом в обоих ивентах, они движутся вместе, только исходный шар нужно подогнать под позицую того, который партикл инстанс.
По вопросу - нельзя
 

k3b3

Активный участник
Рейтинг
16
#12
Вот по первому варианту вопрос. Просто из интереса.
Позиция - это же 3 координаты? Ты говоришь берем позицию и умножаем на рэндом число. Т.е вектор умножаем на рэндом - получается просто линия из частиц. Скинь скрин из дата оператора плиз. Есть урок из цикла turbosquid, там показано как залочить частицы. Попробую, может получится.
По 2му варианту - не совсем понял.
 

k3b3

Активный участник
Рейтинг
16
#13
По 1му варианту - пока заморочился просто со сферой - геометрией.
В data operator сначала
Object sphere - random surface position (на вход добавляем New in event) - output new (выставляем приоритет выполнения 1 - записываем в канал, чтобы эта позиция расчитана 1 раз в начале эвента и выполнялась каждый кадр)
После object sphere еще ставим Geometry (point position) на вход P ставим output new с нашими записанными данными, НУ И после этого ставим output standart (порядок выполнения 2).
Соответственно работает . Не фликует, но точки на поверхности сферы.

Если мы меняем random surface position на random volume position - вылезает корявая хрень.

Также нужно как-то заменить сферу - геометрию на частицу - геометрию
 

Вложения

Сверху