Swift 3D & Flash

Swift 3D - программа от компании Electric Rain, призванная облегчить внедрение трёхмерных эффектов в флеш-ролики.

Swift 3D

Swift 3D отличается от многих других 3d-редакторов своей простотой и удобством. Это тот редкий случай, когда можно не кривя душой назвать программный продукт интуитивно понятным. Правда, программа платная, но кого это может остановить :-)

Скачать Swift 3D 6-й версии можно на оффициальном сайте www.erain.com (пробная версия имеет ограниченные возможности) или здесь (пиратская версия).

Внешний вид Swift 3D v.6:

Интерфейс Swift 3D

Не буду углубляться в описание работы данной программы. В рунете имеются довольно подробные инструкции по работе с Swift 3D. Кроме этого, на оффициальном сайте www.erain.com имеется раздел с обучающими материалами.

Лучше рассмотрим конкретный пример. Конечно, можно в Swift 3D создать статический трёхмерный объект, а потом добавить его в свой флеш-ролик, например, как элемент интерфейса, логотип и т.п.. Но мы сделаем наш пример более интерактивным.

Создадим новый проект в Swift 3D: File - New.

Примитивы Swift 3D

Из списка доступных примитивов кликом мышки выберем примитив Sphere. Если вы всё сделаете правильно, то данный примитив будет добавлен на рабочий стол программы.

Материалы в Swift 3D

Теперь из списка доступных материалов выберем материал с рисунком поверхности Земли и добавим его для нашего примитива (просто перетащить материал при зажатой ЛКМ на Sphere и отпустить ЛКМ).

Анимация в Swift 3D

Теперь перейдём во вкладку Animations и выберем здесь простое вращение (как и в предыдущем случае защимаем ЛКМ и перетаскиваем на объект).

Шкала анимации в Swift 3D

Если все сделано правильно, то будут заметны изменения на временной шкале, а саму анимацию можно будет воспроизвести, нажав кнопку Play Animation.

Получилась анимация вращающейся Земли.

Preview and Export Editor в Swift 3D

Затем идём во вкладку Preview and Export Editor, настраиваем экспорт и сохраняем нашу анимацию в виде swf-файла. Полученный swf-файл можно встроить в ваш флеш-проект. А можно в флеш-проекте создать мувиклип и на его временной шкале последовательно разместить кадры, полученные при работе Swift 3D (как я и сделал).

Итак, теперь в нашем флеш-ролике есть довольно реалистичная анимация 3D-объекта - Земли:

Но давайте сделаем нашу анимацию интерактивной. Пусть в нашем проекте будут две кнопки, с помощью которых пользователь сможет вращать Землю вокруг её оси. Для этого нам понадобятся:

1.) Мувиклип earth, на временной шкале которого размещены кадры с изображением Земли под разными углами зрения (их мы позаимствуем из swf-файла, сгенерированного в программе Swift 3D).

2.) Божественные кнопки с именами back и forward, которые и будут вращать Землю :-)

3.) Код ActionScript, который мы разместим на главной временной шкале флеш-ролика.

Код ActionScript 3.0:

/* Создаём необходимые переменные. */ var flag:Boolean = false; var frame:int = 1; var n:int = 1; /* earth - мувик, в котором и хранятся все импортированные из Swift 3D кадры. Останавливаем этот мувик в первом кадре. */ earth.gotoAndStop(frame); /* back и forward - кнопки, которые управляют "вращением" мувика earth. */ back.addEventListener(MouseEvent.MOUSE_DOWN, backMouseDown); back.addEventListener(MouseEvent.MOUSE_UP, backMouseUp); forward.addEventListener(MouseEvent.MOUSE_DOWN, forwardMouseDown); forward.addEventListener(MouseEvent.MOUSE_UP, forwardMouseUp); function backMouseDown(event:MouseEvent):void { flag = true; n = -1; } function backMouseUp(event:MouseEvent):void { flag = false; } function forwardMouseDown(event:MouseEvent):void { flag = true; n = 1; } function forwardMouseUp(event:MouseEvent):void { flag = false; } /* Если переменная flag имеет значение true, то "вращаем" мувик earth в соответствующую сторону (фактически, просто переходим на определённый кадр). */ addEventListener(Event.ENTER_FRAME, onEnterFrame); function onEnterFrame(event:Event):void { if (flag) { frame += n; if (frame < 1) { frame = earth.totalFrames; } else if (frame > earth.totalFrames) { frame = 1; } earth.gotoAndStop(frame); } }

На языке ActionScript 2.0 это тоже можно реализовать. Код получается почти такой же и я даже не стал его комментировать.

Код ActionScript 2.0:

flag = false; frame = 1; n = 1; earth.gotoAndStop(frame); back.onPress = function() { flag = true; n = -1; }; back.onRelease = function() { flag = false; }; forward.onPress = function() { flag = true; n = 1; }; forward.onRelease = function() { flag = false; }; onEnterFrame = function () { if (flag) { frame += n; if (frame < 1) { frame = earth._totalframes; } else if (frame > earth._totalframes) { frame = 1; } earth.gotoAndStop(frame); } };

Вот какой результат получился у меня:

Зажмите одну из кнопок и удерживайте её в таком состоянии. Земля вращается по вашей прихоти. Что и следовало доказать.

Исходник анимированной модели Земли на ActionScript 2.0 прилагается (под Adobe Flash CS4 и выше).

Примечания

[!] У меня именно с 6-й версией возникали проблемы, когда программа начинала неправильно отображать 3d-объекты. Но это, обычно, решалось просто: создавал новый проект и заново собирал модель.

Автор: admin

Дата добавления: 2011-08-31

Просмотров: 6359

Рейтинг поста: +6-

Правила перепечатки

Социальные закладки:
Комментарии:
К данной заметке комментариев пока нет. Ваш комментарий может стать первым.
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика