GizmoAxis

GizmoAxis

GizmoAxis – абстрактный класс, базовый для всех осей GizmoControl.
Каждая ось описывает свой тип манипуляций над контролом.

Примеры реализаций: GizmoTranslationAxis, GizmoRotationAxis, GizmoScaleAxis.

export class GizmoAxis extends THREE.Object3D implements IGizmoObject {
  protected _isHovered: boolean;
  protected _isActive: boolean;
  protected _plane: THREE.Plane;
  protected _axisDir: THREE.Vector3;
  protected _raycaster: THREE.Raycaster;

  protected _worldPositionStart: THREE.Vector3;
  protected _worldQuaternionStart: THREE.Quaternion;
  protected _worldAxisDir: THREE.Vector3;

  protected _startPoint: THREE.Vector3;
  protected _endPoint: THREE.Vector3;

  constructor(axisDir: THREE.Vector3, readonly handle: IGizmoObject, readonly picker?: IGizmoObject, readonly helper?: IGizmoObject);

  getActive(): boolean;
  setActive(value: boolean): void;
  getHovered(): boolean;
  setHovered(value: boolean): void;
  dispose(): void;
  abstract moveByNdcPt(ndcPos: THREE.Vector2, camera: THREE.Camera): THREE.Matrix4;
  protected abstract updateGizmoPlane(camera: THREE.Camera): void;
  protected setStartPt(ndcPos: THREE.Vector2, camera: THREE.Camera): void;
}

Поля

handle: IGizmoObject

Поле хранит геометрию оси, рисуемую на сцене. Если picker не задан, то используется для проверки пересечений. Подробнее: IGizmoObject.

readonly handle: IGizmoObject;

picker: IGizmoObject

Поле хранит геометрию оси, используемую для проверки пересечений. Подробнее: IGizmoObject.

readonly picker: IGizmoObject;

helper: IGizmoObject

Поле хранит вспомогательную геометрию оси. Подробнее: IGizmoObject.

readonly helper: IGizmoObject;

_isHovered: boolean

Поле хранит значение ховера для оси.

protected _isHovered: boolean;

_isActive: boolean

Поле хранит значение активности оси.

protected _isActive: boolean;

_plane: THREE.Plane

Поле хранит плоскость, используемую для расчётов смещения курсора при манипуляциях с осью. Подробнее: THREE.Plane.

protected _plane: THREE.Plane;

_axisDir: THREE.Vector3

Поле хранит вектор направления оси в локальных координатах. Подробнее: THREE.Vector3.

protected _axisDir: THREE.Vector3;

_raycaster: THREE.Raycaster

Поле хранит объект THREE.Raycaster, используемый для расчётов смещения при манипуляциях с осью.

protected _raycaster: THREE.Raycaster;

_worldPositionStart: THREE.Vector3

Поле хранит значение положения оси в мировых координатах в момент активации оси.
При setActive(true) в данный вектор сохраняется значение положения оси. Используется для расчета смещения оси относительно начального положения во время манипуляций над осью. Подробнее: THREE.Vector3.

protected _worldPositionStart: THREE.Vector3;

_worldQuaternionStart: THREE.Quaternion

Поле хранит значение кватерниона оси в момент активации оси.
При setActive(true) в данный кватернион сохраняется значение поворота оси. Используется для расчета поворота оси относительно начального положения во время манипуляций над осью. Подробнее: THREE.Quaternion.

protected _worldQuaternionStart: THREE.Quaternion;

_worldAxisDir: THREE.Vector3

Поле хранит вектор направления оси в мировых координатах в момент активации оси.
При setActive(true) в данный вектор сохраняется направление оси в мировых координатах.
Подробнее: THREE.Vector3.

protected _worldAxisDir: THREE.Vector3;

_startPoint: THREE.Vector3

Поле хранит начальное положение курсора на плоскости оси при начале манипуляции с осью. Используется для расчета смещения курсора в плоскости оси во время манипуляций с осью. Подробнее: THREE.Vector3.

protected _startPoint: THREE.Vector3;

_endPoint: THREE.Vector3

Поле хранит текущее или последнее положение курсора на плоскости оси при манипуляции с осью. Используется для расчета смещения курсора в плоскости оси относительно начальной точки во время манипуляций с осью. Подробнее: THREE.Vector3.

protected _endPoint: THREE.Vector3;

Конструктор

constructor(axisDir: THREE.Vector3, 
            handle: IGizmoObject,
            picker?: IGizmoObject,
            helper?: IGizmoObject);

где:
axisDir – направление оси в локальных координатах. Подробнее: THREE.Vector3.

handle – задает handle – геометрию оси, рисуемую на сцене. Подробнее: IGizmoObject.

picker – задает picker – геометрию оси, используемую для проверки пересечений. Не обязательный параметр. Подробнее: IGizmoObject.

helper – задает helper – вспомогательную геометрию оси. Не обязательный параметр. Подробнее: IGizmoObject.

Методы

getHovered()

Метод возвращает значение ховера для оси.

  getHovered(): boolean;

Возвращает true, если ховер активен.

setHovered()

Метод устанавливает значение ховера для оси, а так же вызывает методы setHovered(value) у объектов handle, picker и helper.

  setHovered(value: boolean): void;

где:
value – значение ховера.

getActive()

Метод возвращает статус активности для оси.

  getActive(): boolean;

Возвращает true, если объект активен.

setActive()

Метод устанавливает статус активности для оси, а так же вызывает методы setActive(value) у объектов handle, picker и helper.

  setActive(value: boolean): void;

где:
value – значение активности оси. Если value равен true, то запоминает текущее положение оси в мировых координатах, кватернион поворота и вектор направления оси в мировых координатах. В противном случае сбрасывает значения начального и конечного положения курсора.

dispose()

Метод освобождает ресурсы, выделенные оси, а также вызывает методы dispose() у объектов handle, picker и helper.

  dispose(): void;

moveByNdcPt()

Абстрактный метод, вычисляет матрицу трансформации объекта, вызванной манипуляциями с осью.

  abstract moveByNdcPt(ndcPos: THREE.Vector2, camera: THREE.Camera): THREE.Matrix4;

где:
ndcPosтекущее положение курсора в Normalized Device Coordinates (NDC пространство). Подробнее: THREE.Vector2.

camera – камера, используемая для отрисовки GizmoAxis на сцене. Используется для перевода Normalized Device Coordinates (NDC пространство) в мировые координаты. Подробнее: THREE.Camera.

Возвращает матрицу трансформации объекта. Подробнее: THREE.Matrix4.

updateGizmoPlane()

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

  protected abstract updateGizmoPlane(camera: THREE.Camera): void;

где:
camera – камера, используемая для отрисовки GizmoAxis на сцене. Подробнее: THREE.Camera.

setStartPt()

Метод вычисляет начальное положение курсора на плоскости оси.

  protected setStartPt(ndcPos: THREE.Vector2, camera: THREE.Camera): void;

где:
ndcPos – положение курсора в Normalized Device Coordinates (NDC пространство). Подробнее: THREE.Vector2.

camera – камера, используемая для отрисовки GizmoAxis на сцене. Используется для перевода Normalized Device Coordinates (NDC пространство) в мировые координаты. Подробнее: THREE.Camera.