Render.ru
Поддержать

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

Virman

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

Как вылечить? Как привязать отдельный mesh к отдельной частице которая движется от создания до удаления через все eventы?

Вложения

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

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

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

Virman

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

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

Активный участник
Рейтинг
11
Пример оператора 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
Хотя есть более простой способ наследования свойств частиц от события к событию. Когда то я проходил подобный урок но забыл как это делалось. Поройтесь в нете.

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

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


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
(
)

Вложения