Страница 1 из 1

Скрипт для движения камеры по траектории.

СообщениеДобавлено: 12 авг 2009, 12:41
jerrylutor
Всем доброго!
Подскажите пожалуйста как можно сделать так чтоб камера пролетела по сцене по определенной траектории. Как делают демонстрацию сцены, например тут: http://unity3d.com/gallery/live-demos/tropical-paradise (до активации сцены).

Заранее спасибо!

P.S: Сори если не туда написал, перерыл весь форум и доку(вики у меня не открывается, пишет 502 Bad Gateway).
P.S.S: Я только учусь, не пинайте сильно если буду задавать глупые вопросы.

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 12 авг 2009, 15:03
gnoblin
Можно, к примеру, так
http://www.unifycommunity.com/wiki/inde ... =SeekSteer

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 12 авг 2009, 20:31
jerrylutor
gnoblin, чуть не то.

Я имел ввиду как сделать вот такое: http://3dnemo.com/games/demo/Parking/3D_Parking.html. эта иллюстрация точнее.

HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://3dnemo.com/games/demo/Parking/Parking.unity3d&w=800&h=600&t=false&preview=1' height='"+(600+30)+"' width='800' frameborder='0' scrolling='no'></iframe>"); </script>

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 12 авг 2009, 23:47
gnoblin
И чем SeekSteer не подошел?

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 13 авг 2009, 07:34
jerrylutor
тем что там движение только по прямой, а мне нада чтоб это была кривая. хотя если знакомые програмисты помогут разобратся с с# может будет и кривая.

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 13 авг 2009, 12:49
gnoblin

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 13 авг 2009, 19:10
Serge
В Virtools подобное движение делалось очень просто, в самом Virtools есть необходимый инструментарий, а также через анимацию в 3D max с последующим экспортом. В Unity анимация движения по кривой почему-то экспортироваться не захотела, что очень расстроило. Тема движения по кривой очень интересна, жаль, что в Unity нет готового инструментария и не поддерживается экспорт анимации из макса.

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 13 авг 2009, 22:58
jerrylutor
gnoblin
Спасибо за ссылку, но почемуто делаю все по тому как там сказано и ничего не получается :( ... ладно, сам попытаюсь разобратся.

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 14 авг 2009, 01:12
gnoblin
В Virtools подобное движение делалось очень просто, в самом Virtools есть необходимый инструментарий, а также через анимацию в 3D max с последующим экспортом. В Unity анимация движения по кривой почему-то экспортироваться не захотела, что очень расстроило. Тема движения по кривой очень интересна, жаль, что в Unity нет готового инструментария и не поддерживается экспорт анимации из макса.


Анимация по кривой замечательно экспортируется из макса если сконвертить её в анимацию по ключевым кадрам.
Проверено - все нормульно работает.

---
Еще... А SplineController чем не готовый инструментарий?

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 14 авг 2009, 01:59
Neodrop
В [unity 3D] 2.6 вернут встроенный редактор анимаций, который был до версии 2.5, только в расширенном и улучшенном виде.
Там были редакторы сплайнов.
А на данный момент лучше экспортнуть, как советует камрад gnoblin.

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 14 авг 2009, 05:11
iqubik
gnoblin писал(а):
В Virtools подобное движение делалось очень просто, в самом Virtools есть необходимый инструментарий, а также через анимацию в 3D max с последующим экспортом. В Unity анимация движения по кривой почему-то экспортироваться не захотела, что очень расстроило. Тема движения по кривой очень интересна, жаль, что в Unity нет готового инструментария и не поддерживается экспорт анимации из макса.


Анимация по кривой замечательно экспортируется из макса если сконвертить её в анимацию по ключевым кадрам.
Проверено - все нормульно работает.

А как это можно сделать?
Еще... А SplineController чем не готовый инструментарий?

Сплайн контроллер ещё не смотрел, но по скриншотам выглядит интересно.

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 14 авг 2009, 05:53
iqubik
Внесу свои 5 коппек которые надеюсь окажутся весомее знаменитой монетки...
Итак.
Предыстория:
Раньше разбирался с quest3d и в какой то момент стал вопрос о экспорте камеры для квеста из макса. В квесте есть инструмент простой анимации, вот только он там очень извращенский, уж не знаю по чьему образу и подобию они его творили, но вышло довольно паршиво....
Глава 2 :)
К анимации камеры были очень высокие требования, например было критично воссоздать анимацию камеры как при игре в контер страйк или в батлфилд(эффекты тряски от взрыва, покачивания при ходьбе, и просто человеческие повороты головой вместо автоматизированных кривых(аля сплайнов по которым двигается камера)).

В максе есть конроллер мокапа(захват движения) который позволяет хватать движение с мыши, то есть создать сложную анимацию камеры в максе многим предпочтительнее чем в движках.
Глава 3:
В рамках квеста появилась идея по экспорту камеры, была опробована, но не была реализована - общие сложности экспорта анимации (даже коллада не спасала).

А в рамках юнити, эта отвегнутая для квеста идея - стала довольно простым и качественным решением :)
Идея:

Что если мы анимируем камеру в максе, а потом анимацию перенесём на 2 кубика (камера и таргет соответвенно).

Воплощение:


Сразу хочу сказать о сложностях о ограничениях движка Юнити, чтобы было понятно почему так, а не иначе(товарищи комрады поправте если ошибаюсь)

Юнити некорректно обрабатывает анимированные ротэйшены объектов, но вполне корректно обрабатывает позицию объекта в пространстве при переносе анимации из макса в себя.
(К комрадам - предвижу что тут можете сказать о контейнере и упреждающем повороте объекта. НЕ ПОЛУЧАЕТСЯ! :) За тестами просидел 3 дня, пытался понять алгоритмику искажений, пытался найти общую закономерность искажения ротайшенов. И..... не понял, и не нашёл. А остановился на мнении, что ротэйшн анимация переностся неверно, абсолютно неверно, и какой бы угол упреждения мы не задавили(что в максе что в юнити для родительской пустой ГО), Юнити задаст свой угол отклонения относительно упреждающего.
А вся собака ИМХО зарыта в интерпретации осей. Макс xyz(z-up) Unity xzy(y-up) и это непреклонно сказывается на ротэйшн анимации). Вывод ротэйшн анимацию из макса в юнити перенести - как минимум геморрой, как реально - незнаю и даже есть мнение что пока невозможно сделать это корректно.


Теперь о хорошем:

Юнити способно экспортировать в себя камеру и таргет как пустые ГО и корректно обрабатывать координаты перемещения в пространстве.
В максе 2 вида камер. Фри и таргет. Нам нужны именно тагрет, т.к при анимации таргет камеры не возникает поворота камеры по определённым осям - камера просто смотрит на свой таргет, которые перемещается в пространстве тоже без поворота.

Следовательно мы анимируем камеру(таргетированную - чтобы небыло ротэйшн координат) в максе.
Экспортим в юнити и получаем 2 пустых ГО.
На Го камеры вешаем компоненту камеры и стандартный скрипт smoothlookat. Скрипт нужен чтобы камера смотрела на свой таргет. В скрипте указывает таргет и убираем галочку smooth(иначе работать не будет).
Теперь просто говорим анимации чтобы она работала как ping pong(туды-сюды) :)


Краткий алгоритм:
Скрытый текст:
Max:
(anim) cam with target->export to unity
Unity:
1nst GO - add com(cam) and script smoothlookat(target==target GO;smooth disabled)
Hierarhy->cam->animation->wrap mode->ping pong.


Спасибо за внимание к моему массиву букав, писал в надежде, что кому то я могу сэкономить дня 3 жизни....
К слову ещё 2 дня я потратил на алготитм переключения между фёстперсон камерой и анимированной по клавише 'c'.

------------
max 9 sp2 unity pro 2.5.0f5 fbx2009.3

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 28 авг 2009, 19:35
Serge
Оказывается, экспортировать анимацию движения по кривой все-же можно. Проверил на Blender (не помню какая версия) и на 3D Max 2009. Данная анимация сохраняется, если сцену из редактора экспортировать в формат FBX. Если сохранить в родном формате, то ее не видно. Приведу небольшой пример.

В моем случае сцена в максе состоит из минимум объектов, таргет камеры, торуса и сплайна по которому движется камера.
При экспорте мы получаю сообщение что некот. элементы не могут правильно экспортироваться. Меня это пока не сильно расстроило. В итоге в Unity я получил

Сплайн преобразовался в плоскость, в место одной камеры я получил две. В данный момент я не стал разбираться почему так получилось, просто взял удалил Line01 и Camera01.Target. При попытке анимировать Camera01.Target не чего не получилось, потому ее и удалил, Line01 нам после экспорта не нужна.
Далее, как писалось выше я кинул на Camera01 компонент Camera и скрипт SmoothLookAt.
В Blender я экспортировал анимацию без камеры, думаю, с камерой тоже больших проблем не будет.
Данная методика не идеальна, это всего лишь результат моих экспериментов. Если найдете ошибки пишите.

Скрипт для движения камеры по траектории.(Spline Controller)

СообщениеДобавлено: 27 сен 2009, 20:29
iqubik
Разобрался чуть с контроллером сплайна.
86кб
HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://sfmggu.ru/splineInterpolation.unity3d&w=800&h=600&t=true&preview=1' height='"+(600+30)+"' width='800' frameborder='0' scrolling='no'></iframe>"); </script>

Re: Скрипт для движения камеры по траектории.

СообщениеДобавлено: 27 сен 2009, 22:23
Neodrop
Очень хорошо получилось.
(3A4OT)