Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Контекстные выражения

Читайте также:
  1. Present Simple для выражения будущего действия.
  2. Q: Оператор (statement) присваивания, который используется для присваивания результата выражения переменной имеет
  3. Английские выражения на тему «Внешность».
  4. Блоковые выражения
  5. Выполните упражнения, используя модель английских утвердительных предложений I live, слова и выражения из тестовых заданий.
  6. Выражения признательности
  7. Выражения своих мазохистских нужд. Чем большую дозу плохого обращения они

Контекстные выражения являются частью грамматики MAXScript, предназначенной для работы, главным образом, с объектами 3ds max и их свойствами. Суть их в том, что обычное выражение, чаще всего, но не обязательно блоковое, предваряется некой конструкцией языка, которая называется префиксом. Этот префикс устанавливает свойства, которые одинаковы для всех объектов, упоминаемых в выражении, или, говоря научным языком, определяет контекст. Разберем применяемые в MAXScript префиксы по одному.

 

Animate

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

animate on

(box01.position = [10,10,10]

box02.position = [-10,-10,-10]

)

В данном случае создадутся ключи анимации для перемещения объектов box01 и box02. Обратите внимание на значение on, которое стоит после animate. На самом деле вместо него может стоять сколь угодно сложное логическое выражение, а on – это просто другая форма записи true. Если после animate стоит off или false или логическое выражение, имеющее значение false, то изменения, сделанные внутри выражения, которому предшествует этот префикс, не приводят к созданию анимационных ключей, даже если включена кнопка Animate. Следует отметить, что при использовании этого префикса, кнопка анимации не включается и не выключается, но ключи, тем не менее, успешно создаются.

 

At time

Префикс at time чаще всего работает в одной упряжке с префиксом animate on. Он устанавливает позицию ползунка на линейке треков для всех изменений, которые происходят с объектами в том выражении, которому он предшествует. Сам ползунок при этом, однако, не двигается. Например

animate on

(at time 0 $box01.position = [ 0, 0, 0 ]

at time 10 $box01.position = [ 10, 10, 10 ]

)

Приведенный скрипт создает два ключа анимации – один в нулевом кадре и один в десятом. Разумеется, вместо числового значения номера кадра в префиксе at time можно указывать и переменную, и выражение.

 

At level или in

Данный префикс в любой из приведенных форм записи применяется при работе с иерархиями объектов. В качестве параметра ему задается объект сцены 3ds max. Пусть у нас имеется объект с именем man (человек), который является родительским для руки несколько дочерних объектов – шаров. Предположим наша задача – анимация клоуна, жонглирующего шарами на ходу (Пример не претендует на удачность, а призван проиллюстрировать работу префикса at level).

in $man/hand

(ball1 = sphere()

ball2 = sphere()

ball3 = sphere()

)

Все три созданные сферы будут дочерними по отношению к объекту hand. Таким образом можно не только создавать, но и совершать любые другие действия с уже существующими объектами. Особенно это актуально, если иерархия сложна, а объектов много

 

Coordsys

Coordsys или in coordsys устанавливает для действия со всеми объектами выражения одну и ту же систему координат. Допустимы следующие формы написания этого префикса

· coordsys world или in coordsys world – устанавливает мировую систему координат;

· coordsys local или in coordsys local – устанавливает систему координат, связанную с объектом;

· coordsys parent или in coordsys parent – устанавливает систему координат, связанную с родительским объектом;

· coordsys grid или in coordsys grid – устанавливает систему координат, связанную с активной сеткой;

· coordsys имя объекта или in coordsys имя объекта – устанавливает систему координат, связанную с указанным объектом;

· coordsys матрица 3х3 или in coordsys матрица 3х3 – устанавливает систему координат, заданную матрицей.

В качестве матрицы может выступать любое выражение, возвращающее матрицу размерности 3х3.

Например, такой скрипт

in coordsys local selection.position.x = random 10 –10

Сдвигает все выбранные объекты по связанной с ними оси x на случайную величину в диапазоне от 10 до -10.

 

About

Если Вам нужно повернуть или отмасштабировать один или несколько объектов, то, возможно, есть смысл использовать этот префикс. Он применяется в следующих формах

· about selection – повороты и масштабирования осуществляются относительно центра выбранных объектов;

· about pivot – повороты и масштабирования осуществляются относительно опорной точки объекта;

· about coordsys – повороты и масштабирования осуществляются относительно центра системы координат, которая может быть задана префиксом coordsys;

· about имя объекта – повороты и масштабирования осуществляются относительно опорной точки указанного объекта;

· about матрица 3х3 – повороты и масштабирования осуществляются относительно центра системы координат, заданной указанной матрицей;

· about точка в трехмерном пространстве – повороты и масштабирования осуществляются относительно указанной точки.

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

Например, скрипт

about [ 0, 0, 0 ] rotate $box01 15 axis_y

повернет объект с именем box01 на 15 градусов относительно оси y вокруг точки с координатами 0, 0, 0.

 

Undo

Все действия, которые MAXScript совершает с объектами сцены 3ds max, могут быть отменены командой undo из главного меню. Иногда, особенно если манипуляции проводятся с большим количеством объектов, это совершенно лишняя возможность. В этом случае действия, которые надо исключить из списка отменяемых, нужно собрать в выражение, которому предшествует префикс

undo off

Само собой, вместо off, как и для префикса animate, может стоять и false, и любое логическое выражение, его возвращающее. Можно, напротив, включать возможность отмены, используя префикс

undo on

 


Дата добавления: 2015-10-31; просмотров: 116 | Нарушение авторских прав


Читайте в этой же книге: С чего начать | Области видимости | Выделение памяти и уборка мусора | Литералы имен объектов | Литералы массивов | Выражения сравнения | Операторы цикла do и while | Создание функций, локальных внутри структуры | Символьные строки | Логические (Булевы) значения |
<== предыдущая страница | следующая страница ==>
Блоковые выражения| Каскадирование префиксов

mybiblioteka.su - 2015-2024 год. (0.008 сек.)