Пятница, 03.05.2024, 14:53
Folorit Dizain
Главная | Каталог статей | Регистрация | Вход
Категории раздела
Дизайн [7]
Уроки по фотошоп [0]
Уроки по 3D MAX [0]
Програмирование [2]
Наш опрос
Кто для вас Юлия Тимошенко ?
Всего ответов: 12
Статистика
Автосерфинг

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Обучение » Дизайн

MAXScript

MAXScript

Вообще 3D Studio Max жутко "гибкая" штука, и, судя по всему, создатели уделяют большую часть внимания этой гибкости, а не удобствам пользователя. Нет, я ни в коей мере не хочу задеть чувства тех, кто уже давно моделирует на 3D Studio Max,. Но, так или иначе, в гибкой 3D студии, есть гибкий скриптовый язык, MAX Script, где при помощи команд вы сможете создавать объекты, управлять ими и вообще делать всё, что может делать 3D студия.

"Visual MAX Script", которую можно найти в разделе "Утилиты" (молоток), нажав кнопку More, там в списке он у меня последний.

Но перед тем как начинать создавать интерфейс, я расскажу Вам немного программировании на MAX Script. Правда, я сам мало что знаю про это, хе хе хе.

Вообще, чтобы создать скрипт, на панели утилит есть кнопка MAX Script, который откроет вкладку с утилитами для создания скриптов.

Кратко опишу что тут и зачем…
Open Listener - позволяет тестировать скриптовые команды и записывать ваши действия в скрипт. Довольно полезная штука, помогает когда неохота лезть в хелп.
New Script - открывает редактор с пустым скриптом.
Open Script - открывает скрипт для редактирования.
Run Script - запускает скрипт.
Utilites - понятия не имею, что это такое :)
Close - закрывает панель MAX Script…

Для прикола давайте создадим новый скрипт, и попробуем что-то сделать, а точнее, напишем такой код:

for i = 1 to 10 do (
x=random 1 100.0
y=random 1 100.0
z=random 1 100.0
Sphere radius:20 smooth:on segs:32 chop:0 slice:off sliceFrom:0 sliceTo:0 mapCoords:off recenter:off pos:[x,y,z] isSelected:on

)

Теперь сохраните скрипт и запустите его… Ну как, всё получилось? Хе хе, вот и ваш первый скрипт, который рисует шарики с радиусом 20 по случайным координатам от 0 до 100, по всем осям. Многие скажут : "и в чём тут прикол, такое и мышкой можно быстро сделать…". Для таких любителей напишем наш код по-другому:

for i = 1 to 300 do (
x=sin (i*3*2.6)*100
y=cos (i*3*2.2)*100
z=cos (i*3*1.2)*100
Sphere radius:5 smooth:on segs:8 chop:0 slice:off sliceFrom:0 sliceTo:0 mapCoords:off recenter:off pos:[x,y,z] isSelected:on
)

Ну как, слабо Вам сплести такую загогулину вручную?!! Если нет, то начинайте.

А я пока вернусь к теме интерфейса - кажется, именно об этом я говорил выше :) Давайте подумаем - в последнем примере, чтобы получить разные загогулины нужно поменять пару значений, да и перерисовать всё нафиг. Конечно, можно поменять значения прямо в скрипте, но это нудно, а я говорил о красоте и понтах :)

Ну дык вот, есть в MAX Script возможность создавать всякие кнопочки, окошечки и прочие заморочки. Делается это примерно так.

rollout unnamedRollout "Ролаут :)" width:162 height:130
(
button btn1 "Кнопка" pos:[24,88] width:120 height:32
editText Привет "Хелло" pos:[5,10] width:148 height:22
checkButton ckb1 "CheckButton" pos:[24,48] width:120 height:32
on unnamedRollout open do
x=10
on btn1 pressed do
x=12
)
createDialog unnamedRollout width:162 height:130

Запустите этот скрипт, и увидите что получится. Попробую коротко описать что тут и как.
unnamedRollout - это "разворот" (поле), на котором находятся разные кнопочки окошечки и прочее (компоненты).

Button - кнопка.
EditText - окошко с текстом который можно водить
checkButton - кнопка которая может быть зажать или отпущена.

Каждая компонента имеет свои свойства и события.

on btn1 pressed do - если кнопка нажата, то x=12
x=12

Если вы не разбираетесь в объектно-ориентированном программировании, то попытаюсь коротко объяснить. Свойства (Propertis) это координаты компонента, состояние, текст и прочие фишки управления компонентом, а события (Events) это то, что происходит - например, нажатие на кнопку, изменение текста и прочие действия, которые мы вытворяем с нашими компонентами, вплоть до наведения на них мышкой. Подробнее о компонентах можно узнать в разделе помощи 3D Studio Max, в разделе MAX Script Reference. Там надо смотреть в разделе Creating Max Tools/Scripted Utilities and Rollouts. Я это читал, нихрена толком не понял, так как хелп перенасыщен всем подряд, да и строить окошки вручную лень. На этом, думаю, пока закроем тему о ручном создании всяких там окошек и вернемся к Visual MAX Script, о котором я говорил ранее.

По началу у нас пустой роллаут, на который нам нужно перетащить нужные нам компоненты. Компоненты расположены на панели компонентов.

Там есть такие штучки.

Пойду по порядку, картинки выдирать не буду, лень :)

Стрелка - Позволяет изменять размер компонентов
Bitmap - Картинка. Можно нарисовать свою или загрузить текстурку..
Button - Просто кнопка, на которую можно нажимать, также можно загрузить картинку или написать надпись…
MapButton - Кнопка выбора карты текстуры
MaterialButton - Кнопка выбора материала.
PickButton - Кнопка выбора чего-то из сцены.
CheckButton - Кнопка с двумя положениями, зажата или нет.
ColorPiker - Выбор цвета.
ComboBox - Выбор пункта из списка.
DropDownList - Список, выпадающий вниз.
ListBox - Ещё один вид списка в виде листинга.
Label - Метка для создания надписей на форме.
GroupBox - Панель для группы компонентов.
CheckBox - Галочки
RadioButtons - Точки-переключатели, можно выбрать только одну
Spiner - контроль над значением выбранного параметра при помощи управляющих стрелок.
Progress Bar - индикатор в виде полоски
Slider - бегунок которым можно что-то выбрать
Timer - таймер
Ole - Ole контейнер
User - что-то созданное пользователем…

Подробнее описывать мне в лом, мы интерфейс делаем или кнопки изучаем?!! Все-таки злой я :)

Ладно, давайте что-нибудь сделаем.
Давайте дорабатывать наши шарики, на пустой роллаут выносим следующие компоненты - 3 штуки типа Spiner и одну кнопку Button. Теперь, если мы выделим Edit Text, то в правой части экрана появятся его свойства, в поле Caption для первого Spiner мы напишем "Коф X", для второго "Коф Y" и для третьего "Коф Z". А для кнопки в поле Caption введём "Создать".
Так или иначе, у вас должно было получиться нечто вроде такого:

Получилось? Молодца, теперь идём на закладку Event Handlers, выделяем нашу кнопку "Создать" и в списке появившихся событий выбираем Pressed, а в появившееся окошко вводим код события.

for i = 1 to 300 do (
x=sin (i*3*spn2.value)*100
y=cos (i*3*spn3.value)*100
z=cos (i*3*spn4.value)*100
Sphere radius:5 smooth:on segs:8 chop:0 slice:off sliceFrom:0 sliceTo:0 mapCoords:off recenter:off pos:[x,y,z] isSelected:on
)

Узнали наш код, всё то же, но с маленькими изменениями. Формула расчёта пути по x, y, z содержит множитель spn2.value, spn3.value и spn4.value. Это значения, хранящиеся в наших Spinner'ах. У каждого элемента в наше форме есть название, оно дается программой автоматически, но вы свободно можете изменить его на другое. Для этого просто нужно изменить поле name в закладке Value, это там где мы вводили caption.

У каждого компонента есть свойства, к которым мы можем обращаться по имени компонента через точку. Например, значение компонента Spinner хранится в поле Value, ну мы и говорим скрипту, умножай на spn2.value, и т.п.

Ладно, нажимаем Ok. В теории наш RollOut готов. Сохраняем его на диске с названием test.vms, а затем сохраняем его как test.ms. Дважды сохраняемся потому, что Visual MAX Script не сможет открыть файл формата ms, и мы не сможем больше что-то изменить в форме. Теперь закрываем Visual MAX Script и открываем наш скрипт для доводки в 3D Studio Max.

У нас получилось нечто вроде:

rollout unnamedRollout "Untitled" width:160 height:128
(
button btn8 "Создать" pos:[32,96] width:104 height:24
spinner spn2 "Коф X" pos:[24,16] width:128 height:16
spinner spn3 "Коф Y" pos:[24,40] width:128 height:16
spinner spn4 "Коф Z" pos:[24,64] width:128 height:16
on btn8 pressed do
(
for i = 1 to 300 do (
x=sin (i*3*spn2.value)*100
y=cos (i*3*spn3.value)*100
z=cos (i*3*spn4.value)*100
Sphere radius:5 smooth:on segs:8 chop:0 slice:off sliceFrom:0 sliceTo:0 mapCoords:off recenter:off pos:[x,y,z] isSelected:on
)
)
)

Если мы сейчас запустим скрипт, то ничего не произойдёт, так как мы сделали только описание ролаута. Нужно добавить еще одну строчку, чтобы сказать максу, как использовать этот скрипт.
И вот эта строка:

createDialog unnamedRollout width:160 height:128

которая говорит максу, что нужно создать диалог, размером 160 на 128 с нашим ролаутом.

Также нужно немного довести наши Spinner'ы, указав параметр Range [0,100,2.6] для spn2,
Range [0,100,2.2] для spn3 и Range [0,100,1.2] для spn4.
Сделать это нужно так:

spinner spn2 "Коф X" pos:[24,16] width:128 height:16 range:[0,100,2.6]
spinner spn3 "Коф Y" pos:[24,40] width:128 height:16 range:[0,100,2.2]
spinner spn4 "Коф Z" pos:[24,64] width:128 height:16 range:[0,100,1.2]

где:
первое значение - минимальное, что можно ввести
второе значение - максимальное, что можно ввести
третье значение - это значение по умолчанию, которое будет установлено сначала.

Теперь сохраняем наш скрипт, и запускаем его.
Ура!!! Работает. У меня, по крайней мере, работает. Теперь передаём привет нашим творцам, которым я ранее предложил нарисовать шарики вручную, они наверное ещё корпят. Для тренировки можно попробовать самим модифицировать скрипт, сделать возможность управления количеством шариков, количеством граней и т.п.

Ах да, тут натыкал ещё однуштучку, для того чтобы создавать ролауты. Когда мы открываем новый скрипт,то в меню EDIT есть пункт Edit Rollout и New Rollout, воспользовавшись этим пунктом у нас открывается Visual MAX Script, а текст скрипта сохраняется прямо в текст скрипта. Забавная штука, даже работает… хе хе хе…

Категория: Дизайн | Добавил: folorit (07.03.2008) | Автор: fander.ru
Просмотров: 617 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Автоматическая разкрутка сайтов
Игровой топ
Copyright MyCorp © 2024Хостинг от uCoz