Здравствуйте, есть сцена, в которой взрывается косм. корабль, после определённого кол-ва времени часть корабли отрывается и отлетает, продолжая взрываться. Все взрывы сделаны PArray-ем, взрывов много. Тут возникает косяк - после взрыва партиклы остаются на месте и проходят сквозь корабль. Пробовал и через PF сделать(что для меня плохо, т.к. все PArray уже настроены, только этот косяк надо побороть), так же неполучилось. Как сделать что бы после генерирования партиклы поддерживали направление, скорость, т.е. были "привязаны" к эмиттеру? Прикладываю сцену, из-за обилия моделей, она большая, поудалял всё кроме виновника - части корабля(отлетает после 550 кадра) и взрывов. Сцена.
Потестировал - партиклы с и без этой галки остаются на месте, при том что эмиттер движется.. Чтож, видимо придётся таки футажи использовать в постобработке, на 4 форумах никто ничего дельного не подсказал...
Не удивительно у тебя частицы тормозятся DragBinding, в этом случае нужно делать локальное поле что будет тащить за кораблем.
Либо настраивать без DragBinding, и включить у PArray в свитке Object Motion Inheritance:
Influence = 100
Multipler = 1
Хм да со стандартными частицами можно только ветер присобачить чтоб сдувал. С помощью скрипта и такой-то матери.
По этому лучше делай с помощью PF. Оператро Lock/Bond - может констрейнить к объектам.
Получится чтото вроде этого графа:
C Lock/Bond - тоже может быть проблема если частицы еще анимируются и нет возможности переключить на новый эвент,
Тогда просто создаётся такой скритп оператор:
Да не забудь в тексте имя объекта за которым будут таскаться частицы.
on ChannelsUsed pCont do
(
pCont.usePosition = true
)
on Init pCont do
(
)
on Proceed pCont do
(
obj = $Sphere114 -- Set Object !
at time (currenttime - 1) p1 = obj.pos
at time currenttime p2 = obj.pos
v = p2 - p1
count = pCont.NumParticles()
for i in 1 to count do
(
pCont.particleIndex = i
pCont.particlePosition += v
)
)
on Release pCont do
(
)
Savin Denis, КАК ЖЕ ВЫ МЕНЯ ВЫРУЧИЛИ!!! РАБОТАЕЕЕТ!!! Большое человеческое вам спасибо!!
Хм, правда в 2008 максе такого оператора в пф как Lock\Bond я не нашёл, но скрипт работает. Этот оператор в 2009 версии появился?
Тестировал, тестировал скрипт - у пф странное поведение, сначало видно что все партиклы летят прямо за сферой 114 как надо, но стоит выключить и включить скрипт оператор, как партиклы оказываются рядом со сферой(вкл\выкл по прошествии например 100 кадров)..метаморфозы прямо..
При on/off для корректного результата, потребуется пересчет всей сиквенции, чего по видимому не происходит. Возможно если поиграться с ChannelsUsed можно будет объяснить PF чтоб, пресчитывал,
но будут тормоза. Что так пересчитывать что так.
Кстати так и не понял что должен обозначать этот застывший эффект ?!
Застывшый эффект, всмысле эти системы частиц(в т.ч. пф)? Это взрывы, к ним применён в Environment, Afterburn-плагин. Ещё тестировал - при рендеринге частицы так же располагаются не надо сферой а около неё, т.е. частицы улетают куда то в сторону а не летят за сферой, может скрипт неточно работает? Простите что подвергаю сомнению вашу работу, понимаю, что это всё непросто, програмировать, но проблема есть и я уже хотел было вообще отказаться от взрывов на движущейся части корабля, как тут появился шанс на решение проблемы. Кстати, пробовал Lock\Bond, он тоже странно работает, если просто включать выключать к примеру оператор Display, то каждый раз он будет ставить частицы в новых местах, иногда даже совсем не там где нужно.
Сделай тестовую сцене гляну, только запиши туда одну эту систему все лишнее прибей и в PF графе тоже. В сторону могут улетать опять же если не последовательно проигрываеш.
Lock\Bond, скорее всего не убрал где нибудь вариационные параметры. Нужно переключить все частицы за один кадр на эвент с Lock\Bond, делается по абсолютному времени.
К этому моменту все частицы должны уже быть за остановлены.
PS
То что взрыв понятно, не понятно за чем его тащить за кораблем ?
По всем законам отлетевшие частицы не как не связанны с породившим объектом. а чтоб притягивать своей массой скорости слишком большие.
Да и драг это эмуляция сопротивления в атмосфере, в космосе ничего не будет препятствовать им лететь с начальной скоростью.
Сделал сцену - там в пф два эвента, со скриптом и с лок\бондом, частицы вроде останавливаются, но половина остаётся на месте, половина за шаром тащиться. Если со скриптом проигрывать последовательно, то частицы появляются в виде точки около шара(сконцентрированы в одной точке что ли). Да, ни под какие законы взрыв не попадает, но это связано с возможностями афтербурна - я пробовал делать удефлектор, чтоб частицы просто огибали корабль, но тогда получалось, что взрыв как вода растекается по поверхности, а сквозь корабль проходить - это ещё хуже. Драг использую тоже отчасти по причине афтербурна - если не останавливать частицы, то это будет совсем не как в "звёздных воинах" и тому подобных, а так же компа просто не хватит на постоянно увеличивающийся афтербурн эффект+это будет уже на взрыв мало похоже. Сцена.
Там есть одна хитрость script нужно ставить выше оператора Position чтоб небыло конфликта.
Написал новый скрипт, старый не обновлялся во время рендера.
Новый с подержкой Subframe Sampling:
on ChannelsUsed pCont do
(
pCont.useTime = true
pCont.usePosition = true
)
on Init pCont do
(
)
on Proceed pCont do
(
global PFTmpTime01 -- Set unique Name.
obj = $Sphere01 -- Set Object !
count = pCont.NumParticles()
t = currenttime
if count > 0 do t = pCont.getParticleTime 1
if PFTmpTime01 == undefined do PFTmpTime01 = t -- Set unique Name.
t1 = PFTmpTime
t2 = t
at time t1 p1 = obj.pos
at time t2 p2 = obj.pos
v = p2 - p1
PFTmpTime01 = t2 -- Set unique Name.
for i in 1 to count do
(
pCont.particleIndex = i
pCont.particlePosition += v
)
)
on Release pCont do
(
)
В коде, для каждого нового эммитера нужно будет найти изаменить в тексте все включения имени PFTmpTime01 на уникальное.
Странно, вставляю скрипт в скриптоператор, проверяю - имя сферы совпадает, ставлю над position, так как эмиттер один, то PFTmpTime01 изменять не надо, смотрю - и ничего не происходит, как будто там нет скрипта! Сцена на всякий случай У вас он работает? Может с максом что, хотя врядли, предыдущий скрипт ведь работает..
on ChannelsUsed pCont do
(
pCont.useTime = true
pCont.usePosition = true
)
on Init pCont do
(
)
on Proceed pCont do
(
global PFTmpTime01 -- Set unique Name.
obj = $Sphere01 -- Set Object !
count = pCont.NumParticles()
t = currenttime
if count > 0 do t = pCont.getParticleTime 1
if PFTmpTime01 == undefined do PFTmpTime01 = t -- Set unique Name.
t1 = PFTmpTime01 -- Set unique Name.
t2 = t
at time t1 p1 = obj.pos
at time t2 p2 = obj.pos
v = p2 - p1
PFTmpTime01 = t2 -- Set unique Name.
for i in 1 to count do
(
pCont.particleIndex = i
pCont.particlePosition += v
)
)
on Release pCont do
(
)
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Enterprise-J
Banzay
В PArray остаётся только уменьшать скорость частиц и время жизни.
Enterprise-J
Savin Denis
Либо настраивать без DragBinding, и включить у PArray в свитке Object Motion Inheritance:
Influence = 100
Multipler = 1
Enterprise-J
Savin Denis
По этому лучше делай с помощью PF. Оператро Lock/Bond - может констрейнить к объектам.
Получится чтото вроде этого графа:
Вложения
Savin Denis
Тогда просто создаётся такой скритп оператор:
Да не забудь в тексте имя объекта за которым будут таскаться частицы.
Enterprise-J
Хм, правда в 2008 максе такого оператора в пф как Lock\Bond я не нашёл, но скрипт работает. Этот оператор в 2009 версии появился?
Savin Denis
Enterprise-J
Enterprise-J
Savin Denis
но будут тормоза. Что так пересчитывать что так.
Кстати так и не понял что должен обозначать этот застывший эффект ?!
Enterprise-J
Savin Denis
Lock\Bond, скорее всего не убрал где нибудь вариационные параметры. Нужно переключить все частицы за один кадр на эвент с Lock\Bond, делается по абсолютному времени.
К этому моменту все частицы должны уже быть за остановлены.
PS
То что взрыв понятно, не понятно за чем его тащить за кораблем ?
По всем законам отлетевшие частицы не как не связанны с породившим объектом. а чтоб притягивать своей массой скорости слишком большие.
Да и драг это эмуляция сопротивления в атмосфере, в космосе ничего не будет препятствовать им лететь с начальной скоростью.
Enterprise-J
Savin Denis
Написал новый скрипт, старый не обновлялся во время рендера.
Новый с подержкой Subframe Sampling:
В коде, для каждого нового эммитера нужно будет найти изаменить в тексте все включения имени PFTmpTime01 на уникальное.
Enterprise-J
Savin Denis
Enterprise-J