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

Программирование на Юнити.

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

Сообщение jerrylutor 12 авг 2009, 12:41

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

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

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

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

Сообщение gnoblin 12 авг 2009, 15:03

Можно, к примеру, так
http://www.unifycommunity.com/wiki/inde ... =SeekSteer
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

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

Сообщение jerrylutor 12 авг 2009, 20:31

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>
jerrylutor
UNец
 
Сообщения: 6
Зарегистрирован: 12 авг 2009, 12:31

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

Сообщение gnoblin 12 авг 2009, 23:47

И чем SeekSteer не подошел?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

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

Сообщение jerrylutor 13 авг 2009, 07:34

тем что там движение только по прямой, а мне нада чтоб это была кривая. хотя если знакомые програмисты помогут разобратся с с# может будет и кривая.
jerrylutor
UNец
 
Сообщения: 6
Зарегистрирован: 12 авг 2009, 12:31

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

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

skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

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

Сообщение Serge 13 авг 2009, 19:10

В Virtools подобное движение делалось очень просто, в самом Virtools есть необходимый инструментарий, а также через анимацию в 3D max с последующим экспортом. В Unity анимация движения по кривой почему-то экспортироваться не захотела, что очень расстроило. Тема движения по кривой очень интересна, жаль, что в Unity нет готового инструментария и не поддерживается экспорт анимации из макса.
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

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

Сообщение jerrylutor 13 авг 2009, 22:58

gnoblin
Спасибо за ссылку, но почемуто делаю все по тому как там сказано и ничего не получается :( ... ладно, сам попытаюсь разобратся.
jerrylutor
UNец
 
Сообщения: 6
Зарегистрирован: 12 авг 2009, 12:31

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

Сообщение gnoblin 14 авг 2009, 01:12

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


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

---
Еще... А SplineController чем не готовый инструментарий?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

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

Сообщение Neodrop 14 авг 2009, 01:59

В [unity 3D] 2.6 вернут встроенный редактор анимаций, который был до версии 2.5, только в расширенном и улучшенном виде.
Там были редакторы сплайнов.
А на данный момент лучше экспортнуть, как советует камрад gnoblin.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

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

Сообщение iqubik 14 авг 2009, 05:11

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


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

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

Сплайн контроллер ещё не смотрел, но по скриншотам выглядит интересно.
----------------------
qub edition
Идеальное общество это общество где каждый станет настолько эгоистом, что начнёт понимать, что делая недоброе другому получит тоже в ответ. (око за око, с прощением)
iqubik
UNIт
 
Сообщения: 74
Зарегистрирован: 11 июн 2009, 13:38
Откуда: Stavropol
  • Сайт
  • ICQ

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

Сообщение iqubik 14 авг 2009, 05:53

Внесу свои 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
----------------------
qub edition
Идеальное общество это общество где каждый станет настолько эгоистом, что начнёт понимать, что делая недоброе другому получит тоже в ответ. (око за око, с прощением)
iqubik
UNIт
 
Сообщения: 74
Зарегистрирован: 11 июн 2009, 13:38
Откуда: Stavropol
  • Сайт
  • ICQ

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

Сообщение Serge 28 авг 2009, 19:35

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

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

Сплайн преобразовался в плоскость, в место одной камеры я получил две. В данный момент я не стал разбираться почему так получилось, просто взял удалил Line01 и Camera01.Target. При попытке анимировать Camera01.Target не чего не получилось, потому ее и удалил, Line01 нам после экспорта не нужна.
Далее, как писалось выше я кинул на Camera01 компонент Camera и скрипт SmoothLookAt.
В Blender я экспортировал анимацию без камеры, думаю, с камерой тоже больших проблем не будет.
Данная методика не идеальна, это всего лишь результат моих экспериментов. Если найдете ошибки пишите.
У вас нет доступа для просмотра вложений в этом сообщении.
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

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

Сообщение iqubik 27 сен 2009, 20:29

Разобрался чуть с контроллером сплайна.
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>
У вас нет доступа для просмотра вложений в этом сообщении.
----------------------
qub edition
Идеальное общество это общество где каждый станет настолько эгоистом, что начнёт понимать, что делая недоброе другому получит тоже в ответ. (око за око, с прощением)
iqubik
UNIт
 
Сообщения: 74
Зарегистрирован: 11 июн 2009, 13:38
Откуда: Stavropol
  • Сайт
  • ICQ

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

Сообщение Neodrop 27 сен 2009, 22:23

Очень хорошо получилось.
(3A4OT)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6