![]() |
||
Урок 3: Анимация камер и обьектов сцены. Управление треками. Учебные файлы для данного урока: VS_Tutorial_03.max, VS_Tutorial_03.vsp (скачать все материалы). Для начала модифицируем нашу сцену в 3DS Max.
Больше ничего в 3DS Max для этого урока делать не будем. Поэтому экспортируем сцену в формат виртуальной студии (VS_Tutorial_03.3d) и запускаем программу HotActions. Создадим новый проект (как мы уже научились на прошлом уроке). Однако в экшен "Init" добавим кое-какие новые строки. Теперь он будет выглядеть так:
Строкой типа :TRACK.TRACK_NAME.NODE = node_name мы "создали" трэк для анимированного обьекта сцены "node_name" и присвоили ему имя "TRACK_NAME". В дальнейшем во всех создаваемых нами командах для треков мы будем использовать эти присвоенные имена. Строкой типа :TRACK.TRACK_NAME.START = N мы устанавливаем начальную позицию трека на кадре с номером N. Команда :DATA.PLAY = 1 разрешает выполнение треков. Соответственно, :DATA.PLAY = 0 - остановит все треки. Вообще говоря, при переходе в "Live Mode", эта команда выполняется автоматически, но для того, чтобы мы могли просматривать анимацию и в режиме редактирования, всё же напишем эту команду в "Init" (кашу маслом не испортишь). Теперь можно переходить и непосредственно к созданию экшенов управления треками. Попробуем "заанимировать" камеру с именем "Camera01". Для этого напишем следующий экшен:
Смысл первой строки нам уже понятен - она просто вызывает выполнение уже имеющегося у нас экшена "Camera1", то есть камера с именем "Camera01" станет "текущей". А вот вторая строка означает, что все нижеследующие команды в этом экшене будут исполняться только после выполнения экшена "Camera1". При отсутствии команд ожидания в экшене, все команды, имеющиеся в его "теле", запустятся одновременно. И, наконец, третья команда запускает выполнение трека с нулевого кадра до двадцатого. А если бы Вы в правой части, например, вместо цифр 0 , 20 написали бы 16 , 3 трек проигрался бы задом наперёд, причём с 16-го кадра по 3-ий. Ну так и поступим. Соорудим экшен для "наезда камеры" :
Кстати, если вы забыли номера кадров анимации, ничего страшного. Просто выберите левой кнопкой мыши Ваш анимированный объект в окне сцены, а в окне свойств - закладку "Track": ![]() Теперь создадим кнопочки, соответствующие нашим "новоиспечённым" экшенам (это мы научились легко делать в предыдущем уроке) и проверим, как они действуют. Давим на кнопочку "Zoom- start" отъезжаем, на кнопочку "Zoom+ start" - наезжаем. А вот если мы уже "наехали" и в прямом эфире по ошибке давим опять "Zoom+ start". Получается какой-то дрыг-дрыг... Можно ли этого избежать? Легко. Просто используем команду GOTO вместо START:
В данном случае "камера" "поедет" по треку от того номера кадра, где она в настоящий момент находится к кадру номер "0". Так что, если она уже находилась на нужном кадре, то ничего и не произойдёт, хоть зажмись на эту кнопочку. Кстати, если в команде TRACK.TRACK_NAME.START = N1 , N2 в правой части вместо двух чисел через запятую написать одно число (N3), то наш анимированный объект мгновенно "прыгнет" на кадр с номером N3. Вот Вам и третий способ управления треками. Таким способом, например, можно заменить любое количество виртуальных камер в сцене на одну - просто "перескакивая" на соответствующие кадры заранее созданного трека. В проекте VS_Tutorial_03.vsp Вы найдёте и более сложные примеры управления созданными нами треками. Это Вы теперь легко разберёте самостоятельно. А здесь мы лучше остановимся на следующей задаче: предположим, вам нужно, чтобы по ходу передачи некий объект совершал некие периодические движения (например, мячик запрыгал) и делал бы он это столько времени, сколько необходимо. Первое, что приходит в голову - создать в 3DS Max трек, скажем, на 100 000 кадров, в котором "мячик" однообразно подпрыгивает множество раз. А затем для запуска прыжков использовать команду TRACK.МЯЧИК.START = 0, 100 000 , а для остановки команду TRACK.МЯЧИК.STOP = 0. Надо сказать, что это самый дурацкий вариант. Можно ещё использовать команду TRACK.МЯЧИК.START = 0, 30, 326 . Третья цифра в правой части указывает, сколько раз повторить проигрывание данного трека. Это уже получше, если, конечно, заранее знать, сколько раз наш мяч должен подпрыгнуть (326 - в нашем случае). Однако самым универсальным способом будет использование команды TRACK.МЯЧИК.LOOP = 1. Эта команда сама по себе не запускает трек, но указывает, что если трек будет запущен, то он будет проигрываться бесконечное число раз, до тех пор, пока не поступит команда TRACK.МЯЧИК.LOOP = 0. В проекте VS_Tutorial_03.vsp есть пример и для подобной анимации (роль мячика выполняет расположенная за актёром сфера).
В следующем уроке мы научимся назначать текстуры и видеопотоки на материалы сцены в реальном времени.
|