3D Engineering

...Лучшее из общего.

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Экономичная и экологическая оценка танкера двойного действия


Нажмите что бы увеличить

OKHOTSK SEA & SEA ICE, MOMBETSU, JAPAN, 24-28.2.2002

Подробнее...
 

3D МОДЕЛИРОВАНИЕ ЧЕЛОВЕЧЕСКОГО ТЕЛА И АНИМАЦИЯ

 

Глава 3: Анатомия человека

Леонардо да Винчи сказал, "Высшая неудача - это когда теория опережает выполнение." Хотя эта книга стремится быть практическим руководством, есть некоторые предположения о человеческой анатомии, которые должны быть обсуждены в более аналитической манере. Хотя в этой главе и рассматривается анатомия, она не претендует быть полным исследованием по этой теме. Целые книги написаны об этом предмете. Они должны служить более подходящими руководствами для серьезного студента отделения гуманитарных наук, желающего глубокого изучать анатомию.

Подробнее...
 

Peter Ratner 3-D HUMAN MODELING AND ANIMATION 2nd Edition 3D МОДЕЛИРОВАНИЕ ЧЕЛОВЕЧЕСКОГО ТЕЛА И АНИМАЦИЯ

 

Глава 1: Основы техники моделирования

Точно так же как ребенок, каждый должен сначала научиться ползать, прежде чем сможет ходить. Это же относится и к трехмерному моделированию.

Подробнее...
 

3D МОДЕЛИРОВАНИЕ ЧЕЛОВЕЧЕСКОГО ТЕЛА И АНИМАЦИЯ

 

Глава 2: Техника моделирования среднего уровня

Если Вы выполнили все предшествующие упражнения, то Вы должны быть готовы работать на промежуточном уровне. На следующем уроке Вы будете моделировать двух персонажей мультфильмов, которые являются ни простыми, ни сложными. Первый урок показывает как моделировать мультипликационную корову с использованием моделирования подразделением. Второй урок использует методы моделирования корректированием, чтобы создать мультипликационного петуха.

Подробнее...
 

PДДSTESEADMETE- JA VAHENDITEGA SEOTUD LEPPEMДRGID


mida kasutatakse kooskхlas Rahvusvahelise konventsiooni

inimelude ohutusest merel (SOLAS 1974/1978) reegliga III/9.2.3

Подробнее...
 


Страница 1 из 31

Архив статей

 Янв   Февраль 2012   Мар

ВПВСЧПС
   1  2  3  4
  5  6  7  8  91011
12131415161718
19202122232425
26272829 
Julianna Walker Willis Technology

Случайная новость

VDragon

Предполагается, что читатель разбирается в программировании и 3D студии макс. Если нет, то это его проблемы, так как это статья, а не справочное пособие, и описывать всё-всё я не собираюсь :)

Подался я как-то в глобальную сеть Интернет, дабы нарыть инфу про 3Д студию Макс 5. Искал всё подряд - рисование, рендеринг и прочее. Наткнулся на интересную тему MAX Script, инфы почти ноль - всё про стекло, металл и прочую белиберду. А все, что было - сухие переводы стандартного хелпа по MAX Script. Хе, хе - вот, исходя из этого, я и решил написать откровения "чайника" о том, как с ним бороться.

Вообще 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, а текст скрипта сохраняется прямо в текст скрипта. Забавная штука, даже работает: хе хе хе:

     


Автор: VDragon
http://v2studia.narod.ru


далее