MotionPathConstraint - Руководство по Вердж3Д - Софт Эйт Софт
Description: Узнайте как использовать MotionPathConstraint в интерактивных 3Д-веб-приложениях сделанных на Вердж3Д

Constraint →

# MotionPathConstraint

Ограничитель, который ограничивает положение объекта в пространстве своего родителя.

Чтобы повлиять на какой-либо объект, экземпляр MotionPathConstraint должен быть добавлен к массиву Object3D.constraints.

## Конструктор

### MotionPathConstraint()

Конструктор не принимает на вход никаких аргументов.

## Свойства

Общие свойства смотрите в базовом классе Constraint.

### # .bank : Boolean

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

### # .bankScale : Float

Масштабирует угол крена. По умолчанию `1`.

### # .bankLimit : Float

Максимально допустимый угол крена в радианах. По умолчанию `Infinity`.

### # .chordLengths : Array

Массив сумм длин хорд. Длины хорд хранятся в виде:

`[lengthOfChord1, lengthOfChord1 + lengthOfChord2, ...]`

Последний элемент соответствует полной длине кривой. Замечание: не используется когда useChordLength установлен в `false`. По умолчанию `[]`.

### # .chordsNum : Integer

Общее количество хорд на кривой, используемое при включённом флаге useChordLength. Чем больше это число, тем равномернее будет движение объекта. Если `chordsNum <= 0`, данное число будет рассчитано автоматически. Замечание: всегда вызывайте метод init для применения изменений. По умолчанию `0`.

### # .cvs : Array

Упакованный массив контрольных точек NURBS-кривой. «Упакованный» означает, что контрольные точки хранятся следующим образом:

`[point_1.x, point_1.y, point_1.z, point_2.x, point_2.y, point_2.z, ...]`

Замечание: всегда вызывайте метод init для применения изменений. По умолчанию `[]`.

### # .degree : Integer

Степень NURBS-кривизны, т.е. степень кривизны пути. Замечание: всегда вызывайте метод init для применения изменений. По умолчанию `3`.

### # .fixCameraLightRotation : Boolean

В «Вердж3Д» используется правосторонняя систему координат с осью Y, направленной вверх, но в «Блендере» и «3дс Максе» используется правосторонняя система координат с осью Z, направленной вверх (см. «Вердж3Д Вики»). Поэтому, чтобы исправить вращение для камер и света, необходимо устанавливать флаг `fixCameraLightRotation = true`. По умолчанию `false`.

### # .fixedValue : Float

Объект останется заблокированным в одной точке вдоль кривой независимо от анимации. По умолчанию `0.0`.

### # .follow : Boolean

Если включено, вычисляет ориентацию объекта (вращение) по мере его движения вдоль кривой. По умолчанию `true`.

### # .frontAxis : String

Ось ограничиваемого объекта, соответствующая фронтальному вектору, т.е. ось соответствующая тангенте к кривой. Одна из: `'X'`, `'-X'`, `'Y'`, `'-Y'`, `'Z'`, `'-Z'`. По умолчанию `'Z'`.

### # .influence : Float

Процент влияния, которое ограничитель оказывает на ограничиваемый объект. По умолчанию `1.0` (100%).

### # .isMotionPathConstraint : Boolean

Указывает, что данный объект является экземпляром класса MotionPathConstraint. Только для чтения.

### # .knots : Array

Массив узловых точек NURBS-кривой. Замечание: длина массива всегда равна `количеству контрольных точек + степень + 1`. Замечание: всегда вызывайте метод init для применения изменений. По умолчанию `[]`.

### # .objOffsetMode : Integer

Как будет добавляться смещение к перемещению ограничиваемого объекта:
`0` — трансформации перемещения и поворота будут применяться независимо (поведение «3дс Макса»).
`1` — трансформация будет применяться как умножение матрицы (поведение «Блендера»).
По умолчанию `0`.

### # .objOffsetRotMode : Integer

Как будет добавляться смещение поворота к повороту ограничиваемого объекта:
`0` — будет применяться только поворот ограничителя (поведение «3дс Макса» и «Майи»).
`1` — сначала применяется поворот ограничителя, а затем смещение поворота (поведение «Блендера»).
По умолчанию `0`.

### # .offsetValue : Float

Дополнительное смещение к value. Замечание: не работает если useFixedLocation равно `true`. По умолчанию `0.0`.

### # .pointsTilt : Array

Массив углов наклона (углы крена, углы поворота) в радианах в каждой контрольной точке кривой. Является альтернативой bank. Значения сохраняются в форме:

`[tiltAngleForFirstPoint, tiltAngleForSecondPoint, ...]`

Замечание: не работает если usePointsTilt равен `false`. Замечание: всегда вызывайте метод init для применения изменений. По умолчанию `[]`.

### # .type : String

Тип ограничителя. Равен `"MotionPathConstraint"`.

### # .upAxis : String

Ось ограничиваемого объекта, которая максимально выровнена с осью worldUpVector. Может быть одной из `"X"`, `"-X"`, `"Y"`, `"-Y"`, `"Z"`, `"-Z"`. По умолчанию - `"Y"`.

### # .useChordLength : Boolean

Установите в `true`, чтобы двигать объект равномерно вдоль кривой. По умолчанию `false`.

### # .useClampValue : Boolean

Если равен `true`, параметр value будет ограничен интервалом `[0.0, 1.0]`. Замечание: не работает, если useCyclic равен `true`. По умолчанию `false`.

### # .useCyclic : Boolean

Установите в `true`, чтобы сделать параметр value цикличным, например если value = 1.6 то он станет `0.6`, если value = -1.6 то он станет `0.4`. По умолчанию `false`.

### # .useFixedLocation : Boolean

Установите в `true`, чтобы объект всегда фиксировался одной точкой на кривой, независимо от анимации, определённой в fixedValue. По умолчанию `false`.

### # .useObjOffset : Boolean

Включить или выключить смещение объекта. По умолчанию `false`.

### # .usePointsTilt : Boolean

Аналогичен bank, но используется в случае, если определён массив pointsTilt. Замечание: не работает если bank равен `true`. По умолчанию `false`.

### # .usePosOffset : Boolean

Включает/выключает смещение позиции объекта. Замечание: работает только если useObjOffset равен `true`. По умолчанию `true`.

### # .useRelative : Boolean

Если равно `true`, объект следует пути со смещением расстояния, основанным на его исходном положении в мировой системе координат, сохранённом при первом вызове функции update. Замечание: работает только если useObjOffset равен `true`. По умолчанию `false`.

### # .value : Float

Текущее значение ограничителя. Должно быть в интервале `[0.0, 1.0]` если параметр useCyclic равен `false`. По умолчанию `0.0`.

### # .weights : Array

Массив весов для каждой контрольной точки. Замечание: всегда вызывайте метод init для применения изменений. По умолчанию `[]`.

### # .worldUpVector : Vector3

Вектор в мировой системе координат, относительно которого выравнивается вектор upAxis. По умолчанию `(0, 1, 0)`.

## Методы

Общие методы смотрите в базовом классе Constraint.

### # .init() → this

Инициализирует путь кривой ограничителя. Замечание: всегда вызывайте этот метод при изменении параметров кривой.

## Исходный файл

О том как получить исходный код этого модуля читайте тут.