Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Типы контроллеров




Контроллер линейного управления с плавающей точкой (linear_float) достаточно прост и понятен. К другим часто применяемым контроллерам относятся следующие.

• Группа контроллеров линейного управления. Включает контроллеры linear_float, linear_position, linear_rotation и linear_scale.

• Группа контроллеров управления по кривой Безье. Включает контроллеры bezier_float, bezier_position, bezier_point3, bezier_rotation, bezier_scale и bezier_color.

• Группа контроллеров управления по натяжению, непрерывности и смещению. Включает контроллеры tcb_float, tcb_position, tcb_point3, tcbrotation и tcb_scale.


Преобразования и анимация

Каждый контроллер из группы контроллеров линейного управления обеспечивает простую линейную интерполяцию в промежутке между ключевыми кадрами. Линейная интерполяция означает, что оживляемый параметр или свойство объекта изменяется постепенно и равномерно. Так, посредине промежутка между кадрами значение параметра изменяется наполовину и т.д. Контроллеры в каждой упомянутой выше группе отличаются лишь типом переменной, которой они управляют.

Контроллер Bezier предоставляет больше возможностей для определения анимации. Он обладает следующими свойствами:

•.inTangent — значение с плавающей точкой или типа Point3;

•.outTangent— значение с плавающей точкой или типа Point3;

•.inTangentType и.outTangentType — #smooth, #linear, #step, fast, #slow, #custom или #auto;

•.x_locked — логическое значение;

•.y_locked — логическое значение;

•.z_locked — логическое значение;

•.constantVelocity — логическое значение.

Свойства.inTangent и.outTangent используются в том случае, если создается касательная специального типа. Если это анимация положения объекта, то эти свойства будут иметь тип данных Point3, определяя значения координат X, Y и Z касательной в ключевом кадре.

Если вы не знакомы с контроллерами Bezier, обратитесь за дополнительными сведениями к справочному руководству по MAXScript.

Для того чтобы воспользоваться контроллером Bezier, выполните следующее упражнение.

1. Установите 3dsMax в исходное состояние.

2. Введите в окне сценария MAXScript следующую строку кода:
s = sphere showTrajectory: true

В этой строке кода создается сфера и активизируется режим отображения траектории ее движения.

3. Продолжите создание сценария, введя следующий фрагмент кода:

s.pos = [-100, -100, 0]

c = bezier_position()

s.pos.controller = c

4. Организуйте движение сферы, установив ключевые кадры анимации ее положения:

animate on

(

at time 0 s.pos = [-50,-60, 0]
at time 35 s.pos = [-10,-50, 0]
at time 70 s.pos = [20, 50, 0]
at time 100 s.pos = [80, 10, 0]

)


Глава 5

5. Вычислите сценарий.

Для определения характера интерполяции между ключевыми кадрами про­анализируйте траекторию движения сферы в видовых окнах.

 

 


6. Воспроизведите анимацию.

По умолчанию касательная для свойств.inTangentType и.outTangentTypeимеет плавный вид. Оставьте без изменения ключевые кадры, установленные по умолчанию в нулевом и сотом кадрах, но измените тип касательных в ключевых кадрах 35 и 70.

7. Выберите команду Graph Editors ⇨ Track View - Curve Editor (Редакторы графических представлений ⇨ Вид трека — Редактор кривых). Как только откроется редактор кривых, выделите трек анимации положения сферы, чтобы просмотреть соответствующие функциональные кривые.

 

 


8. Введите в приемнике команд следующий фрагмент кода, чтобы изменить касательные к ключевым кадрам на функциональных кривых:

c.keys[2].inTangentType = #fast

c.keys[2].outTangentType = #fast

c.keys[3].inTangentType = #slow

c.keys[3].outTangentType = #slow

 

Преобразования и анимация

 

Соответствующие изменения в функциональных кривых можно наблюдать в окне Track View.

 

 

 


9. Воспроизведите анимацию.

Для того чтобы создать сценарий, организующий вращение колеса, выполните следующее упражнение.

1. Вооружившись полученными в этой главе знаниями о характере вращения и системах координат, вы можете теперь написать сценарий, в котором ключевые кадры устанавливаются на основании пользовательского ввода и данных, взятых из сцены. В этом упражнении вам предстоит создать сценарий, в котором устанавливаются ключевые кадры анимации вращения колеса автомобиля. Количество оборотов колеса будет определяться дальностью передвижения автомобиля. Загрузите файл сцены \chapter5\Roadster_start.max, находящийся на прилагаемом к этой книге CD-ROM.

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

2. Воспроизведите анимацию.


Глава 5

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

 

 

 


Напишите сценарий, выполняющий следующее.

• Разрешить пользователю выбрать колесо и путь, по которому движется автомобиль.

• Проверить, является ли выбранное пользователем колесо цилиндром, а путь — линией или редактируемым сплайном.

• Определить длину пути.

• Использовать длину окружности колеса и длину пути для расчета количества оборотов, которое должно совершить колесо.

• Установить ключевые кадры анимации вращения колеса на соответствующее количество градусов вокруг оси Z.

3. Начните со сценария, в котором уже частично организован пользовательский интерфейс. Для этого выберите команду MAXScript ⇨ Open Script из главного меню и откройте файл сценария WheelRollStarter.ms на прилагаемом к этой книге CD-ROM.

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

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

try (closeRolloutFloater wheelFloater) catch()

В ряде следующих строк сценария организуется его пользовательский интерфейс:
Преобразования и анимация

rollout setRoll "Wheel Roll"

(label lab_wheel "Pick Wheel: "

pickbutton pbt_obj "Click to Pick Wheel" width:105 \

autoDisplay: true

label lab_path "Pick Path: "

pickbutton pbt_path "Click to Pick Path" width:105 \

autoDisplay: true

spinner spn_startFrame "Start Frame: " type:#integer \

range:[0,1000,0] fieldwidth:40

spinner spn_endFrame "End Frame: " type:#integer \

range:[1,1000,100] fieldwidth:40

button but_setkeys "Set Wheel Keys" enabled: false

В остальных строках из выражения свитка определяется, что происходит
после щелчков на кнопках в пользовательском интерфейсе. Последний

обработчик событий, в котором должны устанавливаться ключевые кадры,
в данный момент пуст. Вам предстоит его заполнить в этом упражнении:
local wheelObject, wheelPath

on pbt_obj picked wheel do

(

-- Проверить, является ли выбранный объект цилиндром

if classOf wheel!=cylinder

then messagebox "Please pick a cylinder."

-- Если это цилиндр:

else

(

-- Поместить выбранный объект в переменной wheelObject для использования вне данного блока кода

wheelObject = wheel

-- Если выбран также путь, активизировать кнопку "Set Wheel Keys"

if wheelPath!= undefined then but_setkeys.enabled = true

)

)

on pbt_path picked pth do

(

-- Проверить, является ли путь линией или редактируемым сплайном

if classOf pth!= line and classOf pth!= SplineShape then \

messagebox "Please pick a line or editable spline."

-- Если это линия или редактируемый сплайн:

else

(

-- Поместить выбранный путь в переменной wheelPath для использования вне данного блока кода

wheelPath = pth

-- Если выбрано также колесо, активизировать кнопку "Set Wheel Keys"

if wheelObject!= undefined then but_setkeys.enabled = true

)

)

on but_setkeys pressed do

(

)

)

wheelFloater = newRolloutFloater "Wheel Roll" 200 195

addrollout setRoll wheelFloater


Глава 5

4. Выполните сценарий.

В этом сценарии отображается диалоговое окно, в котором можно выбрать колесо и путь, а затем щелкнуть на кнопке SetWheelKeys (Установить ключевые кадры анимации колеса).

 

 

 

 


5. Попробуйте выбрать другие объекты на сцене, чтобы проверить, какие из них могут быть выбраны по данному сценарию. Когда объект воспринимается сценарием как допустимый, обратите внимание на автоматическое обновление названия кнопки выбора в соответствии с именем выбранного объекта сцены. Этот режим появился в версии 3dsMax 7. Он активизируется благодаря передаче логического значения true свойству autoDisplay при объявлении элемента управления pickButton в определении свитка. А до этого имя объекта приходилось присваивать надписи кнопки (в обработчике событий pickButton) следующим явным образом:

pbt_path.text = pth.name

Кнопка Set Wheel Keys пока еще ничего не делает. Ее функции по установке ключевых кадров вам предстоит ввести в сценарий.

Примечание. Если у вас нет желания вводить исходный код сценария вручную, но в то же время, есть желание продолжить выполнение данного упражнения, откройте файл сценария \chapter5\WheelRollFinished.ms, находящийся на прилагаемом к этой книге CD-ROM.

6. Введите в круглых скобках внутри обработчика событий but_setkeys pressed do из файла сценария WheelRollStarter.ms следующие строки кода:

local pathLength, numRotations, totalDegrees, startAngle, endAngle

-- Получить длину пути

pathLength = curveLength wheelPath

-- Получитьколичествооборотов, исходяиздлиныокружности 2piR numRotations = pathLength / (2 * pi * wheelObject.radius)

-- Умножитьна 360, чтобыполучитьобщеечислооборотов

totalDegrees = numRotations * 360

print totalDegrees


Преобразования и анимация

7. Выполните сценарий, чтобы открыть диалоговое окно. Выберите колесо wheel101 и путь, а затем щелкните на кнопке Set Wheel Keys.

8. Обратите внимание на значение переменной totalDegrees, выводимое в приемнике команд при выполнении последнего оператора в сценарии.

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

• Методом angleAxis

• Явно задав значение контроллера управления вращением

В данном упражнении вам предстоит воспользоваться вторым способом.

9. Введите после строки вывода на печать значения переменной totalDegrees следующий фрагмент кода:

with animate on

(

at time spn_startFrame.value

wheelObject.rotation.controller. \

z_rotation.controller.value = 0

at time spn_endFrame.value

wheelObject.rotation.controller. \

z_rotation.controller.value = totalDegrees

)

10. Выполните сценарий, выберите колесо Wheel101 и путь, а затем щелкните на кнопке Set Wheel Keys.

11. Воспроизведите анимацию.

При перемещении автомобиля его колесо поворачивается на нужное количество градусов.

Это довольно простой сценарий, однако его можно изменить или улучшить самыми разными способами. Ряд усовершенствований данного сценария находится в файле \chapter5\WheelRollComplete.ms на прилагаемом к этой книге CD-ROM.




Поделиться с друзьями:


Дата добавления: 2014-10-15; Просмотров: 909; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.034 сек.