Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
max_Script синтаксис.doc
Скачиваний:
7
Добавлен:
01.05.2025
Размер:
196.1 Кб
Скачать

Создание вспомогательных объектов-пустышек Dummy

Вспомогательные объекты не визуализируются. Их можно и нужно использовать для хранения значений положения и поворота.

Свойство: <dummy>.boxsize – размер пустышки (Point3). По умолчанию [10,10,10]

Пример: d=dummy pos: [10, 20, 30] rotation: (quat 10 [10, 10, 10]) --кватернион

b=box(); b.rotation=d.rotation; b.position=10*d.position

 

Изменение общих параметров анимации

animationRange -- получить текущий диапазон анимации (interval 0f 100f)

animationRange = interval 10 50 -- задать диапазон анимации от 10-го кадра до 50

frameRate -- количество кадров в секунду (целое число)

animateonRange.start -- начальный кадр анимации (величина только для чтения)

animationRange.end -- конечный кадр анимации (величина только для чтения)

 

Анимация вершин сплайнов

Чтобы получить доступ к анимации вершин объекта класса SplineShape, необходимо воспользоваться методом animateVertex, который задает диапазон анимируемых вершин. Впоследствии к этим вершинам можно применять различные контроллеры анимации.

animateVertex <shape> <vertex_spec>, где <vertex_spec> – индекс, массив индексов или ключевые слова #all или #selected (соответствуют всем или только выбранным вершинам). У каждой вершины сплайна есть три индекса: для входящей касательной, самой вершины и выходящей касательной. Индексы всегда следуют друг за другом строго по порядку, в случае нескольких сплайнов сначала для всех вершин первого сплайна в объекте класса SplineShape, потом для второго и т.д.

После определения диапазона анимируемых индексов, становятся доступными свойства вершин и касательных. Вот, например, свойства первых двух вершин первого сплайна объекта $Circle01, которые можно анимировать:

Свойство:                                           Тип:                 Значение:

$Circle01.Spline_1___InVec_1            Point3              [-75,33,0]

$Circle01.Spline_1___Vertex_1           Point3              [-75,33,0]

$Circle01.Spline_1___OutVec_1         Point3              [-50,0,0]

$Circle01.Spline_1___InVec_2            Point3              [-20,-33,0]

$Circle01.Spline_1___Vertex_2           Point3              [7,-66,0]

$Circle01.Spline_1___OutVec_2         Point3              [32,-95,0]

 

Пример анимации вершин и касательных объекта из двух сплайнов – окружностей:

animateVertex $Circles #(4, 10, 14, 20)

animate on

(           at time 0 ($Circles.spline_1___InVec_2.z = 50)

at time 100 ($Circles.spline_1___InVec_2.z = -50)

at time 0 ($Circles.spline_1___InVec_4.z = -50)

at time 100 ($Circles.spline_1___InVec_4.z = 50)

at time 0 ($Circles.spline_2___Vertex_1.z = 50)

at time 100 ($Circles.spline_2___Vertex_1.z = -50)

at time 0 ($Circles.spline_2___Vertex_3.z = -50)

at time 100 ($Circles.spline_2___Vertex_3.z = 50) )

 

Примеры контроллеров анимации path constraint и link constraint

--Анимация движения объекта по пути при помощи контроллера path constraint:

thePath=$line01 -- объект line01 будет являться путем

theObj=$Box00 -- объект Box01 будет перемещаться по пути

theObj.pos.controller=path follow:true constantVel:true loop:true -- контроллер

PosCont=theObj.pos.controller -- записываем контроллер в переменную

PosCont.path=thePath -- заносим путь в контроллер

PosCont.axis=0 -- выравниваем локальную ось Z объекта по пути

animate on -- анимируем

(           at time 0 PosCont.percent=0                         -- в кадре 0 - 0% пути

at time 100 PosCont.percent=100     )           -- в кадре 100 - 100% пути

--Связь объекта с другими на время при помощи контроллера link constraint

b=box pos: [-100, 0, 0]; d1=dummy pos:[0, 0, 0]; d2=dummy pos:[0, 0, 0]

animate on

(      at time 0 d1.rotation=quat 0 [0, 0, 1]

       at time 25 d1.rotation=quat 90 [0, 0, 1]

       at time 25 d2.rotation=quat 0 [1, 0, 0]

       at time 50 d2.rotation=quat 180 [1, 0, 0]            )

b.transform.controller=Link_Constraint(); links=b.transform.controller

sliderTime=0f; links.AddTarget d1 0 --связываем Box01 с Dummy01 в кадре 0

sliderTime=25f; links.AddTarget d2 25 --связываем Box01 с Dummy02 в кадре 25

sliderTime=50f; links.addWorld frameNo: 50 --убираем связь с Dummy02

animate on

(      at time 51 move b [0, 0, 0]

       at time 100 move b [100, 0, 0]       )

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]