You are viewing [info]vitsly's journal

camera freeze

« previous entry | next entry »
Jul. 27th, 2011 | 03:42 pm

Прикольная фишка номер два.



Машина по сюжету должна разбить каше, для чего можно использовать реактор или физикс.

Но тут есть засада, камера едет, машина едет, каше прилинковано к камере, а реактор и физикс линка динамических оъектов в упор не видят.





И вот, чтобы все прошло как надо - не придумал ничего лучше, чем чтобы камера с каше стояла на месте.

А весь мир с дорогой и машиной пусть крутится и ездит вокруг, а вид в камере остается как был в нормальной сцене.

Это оказалось совсем не оптимально, но чисто спортивно интересно :)

Для этого сделаем две копии камеры (initial camera и result camera), с которой будем считывать перемещение и вращение для wire parameters.

Даже если камера, которую мы мучаем была типа target - initial и result camera должны быть типа free.

Запечем ключи initial камеры, отвязав ее от любых родительских объектов каким-нибудь подходящим скриптом.



Например этим

Первым делом привяжем старую камеру, одну из новых камер (result camera), дорогу, машину и прочие объекты сцены к главному дамми сцены (scene dummy).



Желательно его сделать в нуле координат и с нулевыми вращениями относительно мировых осей.

Сначала скомпенсируем перемещение камеры. Для этого сделаем дамми (position dummy) и привяжем его позицию по x,y и z с обратным знаком к соответствующим осям initial камеры.



Если теперь привязать scene dummy к position dummy - result camera будет оставаться на месте, а сцена двигаться вместо нее.



Осталось скомпенсировать тем же приемом вращение камеры. Поскольку она по сценарию вращается только по оси Z - это будет несложно.

Однако придется заморочиться и сделать сначала в центре мира еще один неподвижный пока, промежуточный дамми (intermediate dummy), к которому прилинкуем position dummy.

затем создадим дамми компенсации вращения (rotation dummy) и с помощью Wire Parameters привяжем его вращение по оси Z к такому же вращению initial камеры, но с обратным знаком.



И наконец привяжем линком intermediate dummy к rotation dummy.

Теперь result camera неподвижна, но в нее видно то же что и в изначальной сцене.



Теперь можно выставить 250 fps, и разбить неподвижное каше о движущуюся машину, уронив осколки на движущуюся дорогу.



Физиксом разбить проще, правда если хочется иметь изогнутые границы кусков с небольшими промежутками - их надо в композит переводить по одному.

В общем физикс я на тот момент не победил, и бил по старинке, реактором.

Link | Leave a comment | Add to Memories | Share

Comments {7}

(no subject)

from: anonymous
date: Jul. 27th, 2011 11:33 pm (UTC)
Link

Доброго времени) отличное решение, я б для решения начал гравитацию анимацией мучать)

Reply | Thread

>_<

(no subject)

from: [info]spartachok
date: Jul. 28th, 2011 09:16 am (UTC)
Link

здорово, ждём продолжение работы над сценой, очень интересно про реактор

Reply | Parent | Thread

kinyz

(no subject)

from: [info]kinyz
date: Jul. 29th, 2011 10:10 pm (UTC)
Link

а сама машинка в чём сделана?

Reply | Thread

Андрей

(no subject)

from: [info]palmindesert
date: Nov. 19th, 2011 02:02 pm (UTC)
Link

Уф....Не знаю, всё так просто, но когда читаешь о том, как это сделал кто-то другой, не ты, то всё ну так сложно!..
Скажите, очень интересно - а как такой крутой motion-blur на колёсах получился, это честный блюр (на 250fps - НЕ ВЕРЮ!!!) или в Афттере? И, кстати, а водяная пыль из под колёс как сделана? Прилинкованый к колёсам эмиттер?

Reply | Thread

vitsly

(no subject)

from: [info]vitsly
date: Nov. 19th, 2011 04:34 pm (UTC)
Link

да, моушен блюр честный вирейский

а водяная пыль сделана dumb частицами в realflow, эмиттеры - поверхность шин, касающаяся дороги

Reply | Parent | Thread

Андрей

(no subject)

from: [info]palmindesert
date: Nov. 19th, 2011 04:36 pm (UTC)
Link

ой... 250fps и ещё моушен блюр... Страшно.
Но получилось здорово.

Reply | Parent | Thread

Khariton Kantiev

(no subject)

from: [info]Khariton Kantiev
date: Mar. 11th, 2012 10:47 am (UTC)
Link

Солидный подход, уважуха!

"Но тут есть засада, камера едет, машина едет, каше прилинковано к камере, а реактор и физикс линка динамических оъектов в упор не видят."

Знакомая проблема!
Мы в геймдеве для таких целей (взаимодействие RB с кинетическими объектами, которые анимированы вне физической сцены) в версиях physx, которые это не поддерживают, используем joint constrains между кинетическим объектом и и его статичной копией для столкновения. В констрейнах выключаются степени свободы и включается reprojection для компесации быстрых движений кинетического "родителя".

Не опробовано в максе, опробовано в нескольких больших играх, очень сильно выручало.

Reply | Thread