Render.ru

Проблемы с назначением mesh на частицу в Particle

Virman

Пользователь сайта
Рейтинг
2
#1
Ковыряю PF впервые. Пытаюсь сделать простую симуляцию дорожного движения, имитирующую ускоренную (цейтраферную) съемку. Проблема заключается в следующем: в mesh instance выбираю группу из нескольких автомобилей, в первом event на частицы назначаются какие-то модели авто, а в следующем event модели переназначаются, что недопустимо.
Как вылечить? Как привязать отдельный mesh к отдельной частице которая движется от создания до удаления через все eventы?
 

Вложения

maiden666

Мастер
Рейтинг
112
#2
попробуй Shape Instance из глобального ивента переместить в 004
Слишком дофига у тебя тестов, где-то меняется порядок следования частиц и при заходе на следующую итерацию они имеют другой индекс, а шейп расположен в глобальном и привязан к конкретному индексу, но это только предположение, чтобы потестить надо бы Бокс№3 поюзать и посмотреть значения индексов и ID
 

Виталий Мартынов

Активный участник
Рейтинг
11
#3
Ну да перенос из общего события шейпа в первое. Формы то выбираются рандомные по этому в разных событиях разные и задаются а надо чтобы наследовались от события к событию. А бокс три тут вроде ни при чем, операторы то стандартные.
 

maiden666

Мастер
Рейтинг
112
#4
В Боксе можно посмотреть данные, индексы и ID для дебаггинга, я это имел в виду
 

Virman

Пользователь сайта
Рейтинг
2
#5
Перетащил в 004. mesh instanсe теперь назначает корректно, но во всех event-ах, кроме 004 автомобили отображаются и визуализируются без материалов. Один мультисаб для всех машин делать не вариант. Как быть тут?
 

maiden666

Мастер
Рейтинг
112
#6
хз, тут эксперементировать надо, понажимать кнопочки в Shape Instance.. а чем мультисаб не угодил?
 

Виталий Мартынов

Активный участник
Рейтинг
11
#7
Пример оператора Birth Script и его действие. Если интересно или нужны пояснения, постите или в личку. Постараюсь ответить.


on ChannelsUsed pCont do
(
pCont.useTime = true
pCont.useAge = true
pCont.useShape = true
pCont.useMtlIndex = true
pCont.usePosition = true
pCont.useSpeed = true
global n
global tela
global telo
global t
global i
global m
)

on Init pCont do
(
tela = selection as array
t = 0
i = 1
)

on Proceed pCont do
(
pCont.AddParticle()
pCont.particleIndex = pCont.NumParticles()
pCont.particleTime = t
pCont.particleAge = 0
n = random 1 tela.count
telo = tela[n]
pCont.particleShape = telo.mesh
m = telo.material.name as integer
pCont.setParticleMtlIndexByID i m

t = t +20
i = i + 1
)

on Release pCont do
(
)
 

Вложения

Виталий Мартынов

Активный участник
Рейтинг
11
#8
Хотя есть более простой способ наследования свойств частиц от события к событию. Когда то я проходил подобный урок но забыл как это делалось. Поройтесь в нете.
 

Виталий Мартынов

Активный участник
Рейтинг
11
#9
Скрипт переделал. Подправил рождение.


on ChannelsUsed pCont do
(
pCont.useTime = true
pCont.useAge = true
pCont.useShape = true
pCont.useMtlIndex = true
pCont.usePosition = true
pCont.useSpeed = true
global n
global tela
global telo
global t
global i
global m
global f
global h
)

on Init pCont do
(
tela = selection as array
i = 1
h = 0

)

on Proceed pCont do
(
t = currenttime as integer/160
if t == h then
(
pCont.AddParticle()
pCont.particleIndex = pCont.NumParticles()
pCont.particleTime = h
pCont.particleAge = 0
n = random 1 tela.count
telo = tela[n]
pCont.particleShape = telo.mesh
m = telo.material.name as integer
pCont.setParticleMtlIndexByID i m
h = h + 20
i = i + 1
)
)

on Release pCont do
(
)
 

Вложения

Сверху