Новости • Форум • Помощь • Поиск • Участники • Календарь • База


Страницы: (3) 1 [2] 3   ( Перейти к первому непрочитанному сообщению ) Ответ в темуОтвет      Создание новой темыНовая тема   

> Flash & NetView, От простого к сложному...   
hronodon
Профиль
Статус: IronBrain©
Группа: Заслуженные артисты
Рейтинг: 0
Здравствуйте уважаемые симажевцы, долгое время меня терзала мысль о том "как же связать Flash и Softimage", месяц назад мои эксперементы провалились с треском и я решил больше не пробовать, но все же эта мысль не покидала меня. Тогда я решил разобраться с ней и не вставать с компьютера пока не решу эту проблему.

Итак, дамы и господа, по множеству просьб участников форума, выкладываю мини урок о том, как связать Flash и Softimage

Что мы научимся делать после прочтения данной статьи:

1. Писать небольшие сценарии на AS3 (Action Script 3.0)
2. Писать сценарии на JS (Java Script)
3. Работать с html (Выкладывать на html страницу - swf ролик)
4. И наконец, используя знания выше стоящих пунктов, научимся связывать Flash и Softimage

Вкратце опишу саму структуру взаимодействия:

Вся связь основана на том, что используя "event"ы во флеш, можно вызывать функции JS, а используя JS можно управлять Softimage

В данном уроке не будем углубляться в AS, создадим 1 кнопочку, которая допустим, будет строить слайдер (P.S. одна из моих функции для моего инструмента Face Mixer 1.0)

Что нам необходимо:

1. Flash CS4 (необходимое условие - наличие AS3)
2. Softimage 2010 sp1 32 bit (или ниже)
3. Текстовый документ

Что необходимо понять, прежде чем начнем связывание:

Когда я писал про то, что месяц назад мои эксперементы провалились с ужасом, я не объяснил почему. Все эксперементы я проводил на Softimage 2010 sp1 x64. Что бы я не делал, как бы не менял функции и т.д., ничего не работало, как потом выяснилось, NetView в xsi 64, грузит сайты через IE 64(Internet Explorer). Так вот, а насколько нам известно, что для 64-х битных браузеров нету Flash player, то это означанет, что в NetView 64, не будет отображаться flash ролики.

Поэтому все эксперементы с Flash необходимо проводить исключительно на 32 битной КСИ.


Убедились что у нас 32-х битная кси, открываем Flash.

Рисуем допустим на синем фоне, красную кнопку, пишем на ней Create Slider, правой кнопкой по нашей кнопке -> convert to symbol -> Movie Clip. Выбираем нашу кнопку, смотрим в параметры, и в поле Instance Name вводим "btn_slider"

Далее, выбираем 1 кадр на таймлайне, открываем AS, и пишем следующий код:

Код

function createSlider(e:Event):void {
ExternalInterface.call("createCtrlSlider","TOM","Slider",0,0,"up_UP","down_DOWN");
}
this.btn_slider.addEventListener("click",createSlider);


Теперь по порядку, создаем функцию "createSlider", которая будет слушать наши "Event"ы, далее указываем, что, если на нашу кнопку нажали, то вызывать функцию "createSlider"

А теперь самая изюминка, новая функция в AS3, благодаря которой мы можем связывать Flash с Softimage.

"ExternalInterface.call" - эта функция вызывает функцию из HTML. В качестве параметров мы ей передаем, "название функции" и потом через запятую, ее параметры.

Подробное описание функции ExternalInterface

Теперь жмем File->Export->Export Movie, даем название 1.swf

По части Flash мы завершили, теперь создаем текстовый документ и даем ему название test1.html

Теперь еще раз поймем, как это все работает, мы создали флеш ролик, который
вызывает функцию "createCtrlSlider", Но нам нужно понять, откуда он ее вызывает, а вызывает он ее из html, т.е. функция наша должна быть описана в теге <script>

Открываем нашу страницу "test1.html" через блакнот и вставляем в него вот такой вот текст:

Код

<object
      classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
      codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0"
      id="NYcountdown"
      width="600" height="300"
    >
      <param name="movie" value="1.swf">
      <param name="bgcolor" value="#99CC66">
      <param name="quality" value="high">
      <param name="wmode" value="transparent">
      <param name="devicefont" value="true">
      <param name="seamlesstabbing" value="false">
      <param name="allowscriptaccess" value="samedomain">
      <embed
        type="application/x-shockwave-flash"
        pluginspage="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
        name="NYcountdown"
        width="132" height="55"
        src="1.swf"
        bgcolor="#99CC66"
        quality="high"
        wmode="transparent"
        devicefont="true"
        seamlesstabbing="false"
        allowscriptaccess="samedomain"
      >
        <noembed>
        </noembed>
      </embed>
    </object>


Этот скрипт - грузит флеш ролик на html страницу.

параметр width - ширина, height - высота. Наш флеш ролик 1.swf должен находится в одной и той же дирректории что и наша страничка.

Теперь осталось описать нашу функцию, для этого перед началом публикации нашего флеш, вставляем вот такой вот код:

Код

<script language=”jscript” type="text/jscript">

var oXSI = new ActiveXObject( "XSI.Application" );
var oApp = oXSI.Application;


function splitText(text)
{
var myString = new String();
var splitString = new String();
 myString = text;
 splitString = myString.split("_");
 return(splitString);
}

function createCtrlSlider(rigName,sliderName,posX,posY,up_Text,down_Text)
{
var upTex = new String();
var downTex = new String();
var word = new String();
var Name = "";
oApp.SetValue("preferences.Interaction.autoinspect", false, null);
Name = rigName + "_" + sliderName;
//*************************Create a Slider************************************
oApp.CreatePrim("Square", "NurbsCurve", Name, null);
oApp.SetValue(Name+".square.length", 4, null);
oApp.SetValue(Name+".kine.local.sclx", 0.05, null);
oApp.SetValue(Name+".kine.local.posx", posX, null);
oApp.SetValue(Name+".kine.local.posy", posY, null);
//**************************Create a CTRL*************************************
oApp.CreatePrim("Circle", "NurbsCurve", Name + "_ctrl", null);
oApp.SetValue(Name + "_ctrl"+".circle.radius", 0.3, null);
oApp.SetValue(Name + "_ctrl"+".kine.local.posx", posX, null);
oApp.SetValue(Name + "_ctrl"+".kine.local.posy", posY, null);
oApp.SetValue(Name + "_ctrl"+".kine.local.posyminactive", true, null);
oApp.SetValue(Name + "_ctrl"+".kine.local.posyminlimit", -2, null);
oApp.SetValue(Name + "_ctrl"+".kine.local.posymaxactive", true, null);
oApp.SetValue(Name + "_ctrl"+".kine.local.posymaxlimit", 2, null);
oApp.SetMarking("kine.local.pos.posx,kine.local.pos.posz,kine.local.ori.euler,kine.local.scl");
oApp.Lock(Name + "_ctrl"+".kine.local.posx,"+Name + "_ctrl"+".kine.local.posz,"+Name + "_ctrl"+".kine.local.rotx,"+Name + "_ctrl"+".kine.local.roty,"+Name + "_ctrl"+".kine.local.rotz,"+Name + "_ctrl"+".kine.local.sclx,"+Name + "_ctrl"+".kine.local.scly,"+Name + "_ctrl"+".kine.local.sclz", 65535);
oApp.SetKeyableAttributes(null, null, 0);
oApp.ParentObj(Name, Name + "_ctrl");
//****************************Create UP Text********************************
upTex = splitText(up_Text)[0];
word = splitText(up_Text)[1];
oApp.CreatePrim("Text", "NurbsCurve", upTex, null);

oApp.SetValue(upTex+".text.text", "_RTF_{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fprq11\\fcharset0 Arial;}{\\f1\\fnil\\fprq11\\fcharset204{\\*\\fname Arial;}Arial CYR;}}\r\n\\viewkind4\\uc1\\pard\\lang1033\\f0\\fs20"+word+"\\lang1049\\f1\\par\r\n}\r\n", null);
oApp.SetValue(upTex+".kine.local.sclx", 0.15, null);
oApp.SetValue(upTex+".kine.local.scly", 0.15, null);
oApp.SetValue(upTex+".kine.local.sclz", 0.15, null);
oApp.SelectGeometryComponents(upTex+".pnt[*]");
oApp.MoveCtr2Vertices(upTex, true);

oApp.SetValue(upTex+".kine.local.posx", posX, null);
oApp.SetValue(upTex+".kine.local.posy", posY+2.5, null);
oApp.SetMarking("kine.local.pos,kine.local.ori.euler,kine.local.scl");
oApp.Lock(upTex+".kine.local.posx,"+upTex+".kine.local.posy,"+upTex+".kine.local.posz,"+upTex+".kine.local.rotx,"+upTex+".kine.local.roty,"+upTex+".kine.local.rotz,"+upTex+".kine.local.sclx,"+upTex+".kine.local.scly,"+upTex+".kine.local.sclz", 4);
oApp.SetKeyableAttributes(null, null, 0);
oApp.ParentObj(Name, upTex);
//**************************Create DOWN Text********************************
downTex = splitText(down_Text)[0];
word = splitText(down_Text)[1];
oApp.CreatePrim("Text", "NurbsCurve", downTex, null);

oApp.SetValue(downTex+".text.text", word, null);
oApp.SelectGeometryComponents(downTex+".pnt[*]");
oApp.MoveCtr2Vertices(downTex, true);

oApp.SetValue(downTex+".kine.local.sclx", 0.15, null);
oApp.SetValue(downTex+".kine.local.scly", 0.15, null);
oApp.SetValue(downTex+".kine.local.sclz", 0.15, null);
oApp.SetValue(downTex+".kine.local.posx", posX, null);
oApp.SetValue(downTex+".kine.local.posy", posY-2.5, null);
oApp.SetMarking("kine.local.pos,kine.local.ori.euler,kine.local.scl");
oApp.Lock(downTex+".kine.local.posx,"+downTex+".kine.local.posy,"+downTex+".kine.local.posz,"+downTex+".kine.local.rotx,"+downTex+".kine.local.roty,"+downTex+".kine.local.rotz,"+downTex+".kine.local.sclx,"+downTex+".kine.local.scly,"+downTex+".kine.local.sclz", 65535);
oApp.SetKeyableAttributes(null, null, 0);
oApp.ParentObj(Name, downTex);
oApp.DeselectAll();


oApp.SetValue("preferences.Interaction.autoinspect", true, null);
return;
}
</script>


Мы не будем рассматривать подробности моей функции, она просто создает слайдер. Сохраняем нашу страничку, заходим в SoftImage, жмем alt+5 (NetView)-> open -> выбираем нашу test1.html

Жмем на кнопочку и получаем результат.

P.S. щас разрабатываю инструмент под названием Face Mixer, в нем я буду использовать Flash меню, и выложу в этой теме чуток попозже.


Login require!
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 3.03.2010 - 19:24 Top
hronodon
Профиль
Статус: IronBrain©
Группа: Заслуженные артисты
Рейтинг: 0
тем более, у меня всегда самого стояла 64 бит, и первое время, порядка 10-20 часов танцевал с бубном у компа, не мог понять почему не работает в 64 бит, забыл что в xp 64 есть IE 64.
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 5.03.2010 - 23:25 Top
Cooler3D

Статус: Unregistered


hronodon
Интересно, а можно зафигачить нетвью от 32бит в 64битную ксю...
Цитировать сообщение Дата 6.03.2010 - 14:20 Top
hronodon
Профиль
Статус: IronBrain©
Группа: Заслуженные артисты
Рейтинг: 0
над этими думаю
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 6.03.2010 - 15:10 Top
Sshadows
Профиль
Статус: to Dublin, сюда блин
Группа: Элита
Рейтинг: 17
Хронодон, Ви таки любитель ловли жучков, блох и прочей мошкары? ;)
Скрипач не нужен!
Все, что ты хочешь вполне себе пишется на JS.

Аттач распаковать, и открыть в Нетвью. Потом нажать на большую синюю кнопку. :laugh3:

Update: еще одну кнопку добавил.
Login require!
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 6.03.2010 - 18:22 Top
Wats
Профиль
Статус: слон
Группа: Модераторы
Рейтинг: 17
Sshadows, ви таки хотите сказать, шо эта статья бесполезна и можно обходиться JS вместо Flash CS4 (с необходимым условием - наличием AS3) :to_becom:
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 6.03.2010 - 18:30 Top
Sshadows
Профиль
Статус: to Dublin, сюда блин
Группа: Элита
Рейтинг: 17
Wats Таки, я не хочу сказать о бесполезности статьи. Все же ребята стараются. Таки, я хочу показать человекам правильную дорогу. Флеш есть чужеродный, а стало быть вредный элемент в Windows. И не надо быть семи пядей во лбу, чтобы понять такую элементарную вещь. Это же просто, как дважды два!. :)
И, да. Таки можно написать полноценное меню, без применения Adobe Flash CS4. :dirol:
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 6.03.2010 - 18:51 Top
hronodon
Профиль
Статус: IronBrain©
Группа: Заслуженные артисты
Рейтинг: 0
Sshadows
сударь вы правы на все 90, но забыли учесть 10 процентов. Сайты можно делать и в html и php, зачем использовать Flash? Тоже самое и тут.

1. Можно сделать очень стилизованую менюшку, оч удобную и что самое важное, красивую. Не все мы програмисты и не каждому удобно работать с серой ppg или обычной менюшкой.
2. Можно сделать очень функциональную менюшку, с выпадающими списками, крутилками, динамичными панельками и т.д.

вот вам два примера использование flash в softimage

Jo Plate и его Wing Feather Tool

Merlin Digital и его Auto Rigging Tool

P.S. лично общался с обоими, обоим понравился мой тул, предложил Merlin Digital объединить его и мой инструмент для полноценного создания рига, он думает)
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 6.03.2010 - 19:24 Top
hronodon
Профиль
Статус: IronBrain©
Группа: Заслуженные артисты
Рейтинг: 0
кстати забыл добавить, вот мы спорили с надиром о том, стоит ли внедрять флеш и т.д. Если "пытаться" делать красивую менюшку в html с использованием java, естессно придется добавлять рисунки и т.д. А так как мы понимаем что в инете каждый килобайт играет роль, то скажу еще один плюс флеша:

Во флеше полностью векторная графика, которая весит раз в 10 чем любой аналог в JPG и т.д. Легко работает с AI, что лично на себе проверил. Весить весь инструмент со всеми менбшками, кодом и т.д. будет несколько сотен килобайт.
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 6.03.2010 - 20:07 Top
Sshadows
Профиль
Статус: to Dublin, сюда блин
Группа: Элита
Рейтинг: 17
hronodon
Не буду спорить, переубеждать и тд.. Просто мой период увлечения флешем прошел пару лет назад, и больше возвращаться нет желания, потому-что он устарел и не развивается.
А, относительно пунктов: все делается. И стилизованные, и многофункциональные менюшки, и выпадающие списки, и крутилки, и динамичные панельки.

Вес? Ты собираешься анимировать персов удаленно? :dash1:
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 6.03.2010 - 20:11 Top
hronodon
Профиль
Статус: IronBrain©
Группа: Заслуженные артисты
Рейтинг: 0
флеш оч даже хорошо прогресирует, но как красиво я сделаю во флеш, повторить
на яве будет, не буду говорить нереально, скажу что оч сложно. В нашей работе, учитывая, что я изначально програмист, нужно даже код экономить, это правило програмиста, всегда нужно искать решение проблемы, максимально простое.

Если я во флеше могу одним кликом сделать кнопку и не парится, програмируя ее в яве и т.д. зачем нам делать все это в яве? Это такой же холли вар, что круче макс или кси, все зависит от удобства и быстроты, не так ли?

Если ты мы действительно покажешь что в jave ты сделаешь лучше и быстрее и удобнее, я с удовольствием выкину флеш и не буду парить себе мозг. Я на полном серьезе. Если же нет, то почему бы ригерам, аниматорам, прогерам не делать тулзы на флеше, чтобы было приятнее и удобнее работать?
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 6.03.2010 - 20:30 Top
Wats
Профиль
Статус: слон
Группа: Модераторы
Рейтинг: 17
hronodon, ты конечно молодец что стараешься сделать красиво и удобно, вот только вопрос стоит ли оно, того тем более в КСИ? Меня она наоборот привлекает отсутствием иконок, самовываливающихся менюшек и прочей риббонподобной полупрозрачной мишуры, которую может нам дать Флеш. :pardon:
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 6.03.2010 - 22:14 Top
Sshadows
Профиль
Статус: to Dublin, сюда блин
Группа: Элита
Рейтинг: 17
hronodon Расслабься, братан. :) Все хорошо.) Пииис.:victory0: То-то все риггеры и аниматоры бросились флеш изучать...
А настоящим программистом ты станешь, когда поймешь чем жава отличается от жаваскрипта. Пока рано. :dirol:
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 6.03.2010 - 22:21 Top
hronodon
Профиль
Статус: IronBrain©
Группа: Заслуженные артисты
Рейтинг: 0
Sshadows
да я и не спорю, просто вот делаю инструмет для ригеров, и мне гораздо удобнее сделать во флеш и красивее

да я и не напрягался братан))) я спокоен как удав, даже более спокойный))

Wats
каждому свое, мне лично нравится флеш и все менюшки, тем более синоптик на флеш смотрится уматно и круто

+ инструмент пойдет в демо рил, а как известно деморил красивый привлекает больше народу)
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 6.03.2010 - 22:39 Top
(S)aint
Профиль
Статус: слон
Группа: Артисты
Рейтинг: 2
жалко что в кси нету abx pickera :(
Персональное сообщениеПисьмо на e-mail пользователюICQ
Цитировать сообщение Дата 30.03.2010 - 18:20 Top
Sshadows
Профиль
Статус: to Dublin, сюда блин
Группа: Элита
Рейтинг: 17
(S)aint
Что такое есть abx picker?

hronodon
Не обращай внимание на мои выпады. Мне нравится твое направление. Главное, чтобы не сбился с курса. :)
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 30.03.2010 - 18:31 Top
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Страницы: (3) 1 [2] 3  Ответ в темуОтвет      Создание новой темыНовая тема   

 

Текстовая версия