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

TargetConstraint →

# TransformationConstraint

Ограничитель, позволяющий связать один тип свойства преобразования (позиция, поворот или масштаб) целевого объекта с тем же или другим типом свойства преобразования в объекте-владельце в заданном диапазоне значений (который может быть разным для каждого целевого свойства и свойства-владельца). Вы также можете переключаться между осями и использовать значения диапазона не как границы, а скорее как "маркеры" для определения соответствия между входными (target) и выходными (owner) значениями.

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

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

### TransformationConstraint(target)

target — целевой объект ограничителя.

## Свойства

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

### # .coordSystem : String

Какую систему координат использовать. Например, если вы экспортировали сцену из «Блендера»/«3дс Макса», то это значение должно быть `'Z_UP_RIGHT'`. Подробнее в «Вердж3Д Вики». По умолчанию `'Y_UP_RIGHT'`.

### # .fixCameraLightRotation : Boolean

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

### # .fromMax : Vector3

Вектор fromMax управляет верхней границей диапазона входных значений независимо для каждой оси (X, Y и Z). По умолчанию `(0, 0, 0)`.

### # .fromMin : Vector3

Вектор fromMin управляет нижней границей диапазона входных значений независимо для каждой оси (X, Y и Z). По умолчанию `(0, 0, 0)`.

### # .influence : Float

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

### # .isTransformationConstraint : Boolean

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

### # .mapFrom : String

Тип свойства, используемого в качестве входного. Может быть одним из `'POSITION'`, `'ROTATION'`, `'SCALE'`. По умолчанию используется `'POSITION'`.

### # .mapTo : String

Тип свойства для использования в качестве вывода. Может быть одним из `'POSITION'`, `'ROTATION'`, `'SCALE'`. По умолчанию используется `'POSITION'`.

### # .mapToAxisFromAxis : Array

Массив из трех элементов - переключателей осей, они позволяют выбрать, какая входная ось будет отображена на выходную ось X, Y и Z соответственно (по индексу). Каждый элемент в массиве может быть одним из `'X'`, `'-X'`, `'Y'`, `'-Y'`, `'Z'`, `'-Z'`. По умолчанию используется `['X', 'Y', 'Z']`.

### # .mixMode : String

Указывает, как новое преобразование объединяется с существующим преобразованием. Зависит от mapTo:

- `'POSITION'`
  - `'ADD'` — новые значения добавляются к существующим значениям осей.
  - `'REPLACE'` — результат ограничителя заменяет существующие преобразования.
- `'ROTATION'`
  - `'ADD'` — новые значения добавляются к существующим значениям осей.
  - `'AFTER'` — новое вращение добавляется после существующего, как если бы оно было применено к дочернему объекту владельца ограничений..
  - `'BEFORE'` — новое вращение добавляется перед существующим, как если бы оно было применено к родителю владельца ограничения.
  - `'REPLACE'` — результат ограничителя заменяет существующие преобразования.
- `'SCALE'`
  - `'MULTIPLY'` — новые значения умножаются на существующие значения осей.
  - `'REPLACE'` — результат ограничителя заменяет существующие преобразования.

По умолчанию `'REPLACE'`.

### # .ownerSpace : Integer

Пространство ограничиваемого объекта, используемое для расчёта ограничителя. Может быть одним из `v3d.ConstraintSpaceWorld`, `v3d.ConstraintSpaceCustom`, `v3d.ConstraintSpaceLocal`. По умолчанию `v3d.ConstraintSpaceWorld`.

### # .ownerSpaceObj : Object3D

Пользовательский объект, пространство которого используется для расчёта ограничителя. Работает только в том случае, если ownerSpace = `v3d.ConstraintSpaceCustom`. По умолчанию `null`.

### # .targetSpace : Integer

Пространство целевого объекта, используемое для расчёта ограничителя. Может быть одним из `v3d.ConstraintSpaceWorld`, `v3d.ConstraintSpaceCustom`, `v3d.ConstraintSpaceLocal`. По умолчанию это `v3d.ConstraintSpaceWorld`.

### # .targetSpaceObj : Object3D

Пользовательский объект, пространство которого используется для расчёта цели ограничителя. Работает только в том случае, если targetSpace = `v3d.ConstraintSpaceCustom`. По умолчанию `null`.

### # .toMax : Vector3

Управляет верхней границей диапазона выходных значений независимо для каждой оси (X, Y и Z). По умолчанию `(0, 0, 0)`.

### # .toMin : Vector3

Управляет нижней границей диапазона выходных значений независимо для каждой оси (X, Y и Z). По умолчанию `(0, 0, 0)`.

### # .type : String

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

### # .useMotionExtrapolate : Boolean

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

## Методы

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

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

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