GizmoControl
GizmoEventMap – события GizmoControl
. Расширяют события ViewObjectEventMap
. Подробнее: ViewObjectEventMap.
export interface GizmoEventMap extends ViewObjectEventMap {
// событие изменения активной оси гизмо
activeAxisChanged: { isAxisActive: boolean; };
}
GizmoControl
GizmoControl – контроллер, прикрепляемый к 3D-объекту на сцене и управляющий его положением.
Прикрепляемый к объекту контроллер может быть размещён на сцене как независимо, так и быть добавлен как дочерний элемент к 3D-объекту. Подробнее: .attachTo().
По умолчанию GizmoControl
помещается в начало координат локального пространства объекта привязки. Перемещение, вращение и масштабирование осуществляется относительно положения GizmoControl
. Задать смещение GizmoControl
относительно объекта привязки можно с помощью метода .updateGizmoOffset().
В контроллер можно добавить собственные реализации осей. Для того, чтобы создать свою ось контроллера, необходимо унаследоваться от класса GizmoAxis.
Экземпляр можно создать самостоятельно, либо можно получить реализацию по умолчанию с помощью GizmoBuilder.
export class GizmoControl extends THREE.Object3D {
constructor(cameraControl: THREE.Camera | ICameraControl, navAgent: INavigationAgent);
attachTo(object: THREE.Object3D, asChild = false): void;
detach(): void;
updateGizmoOffset(position?: THREE.Vector3, quaternion?: THREE.Quaternion): void;
addAxis(axis: GizmoAxis): void;
dispose(): void;
}
Конструктор
constructor(cameraControl: THREE.Camera | ICameraControl, navAgent: INavigationAgent);
где:
cameraControl
- контроллер камеры, или камера, используемая на сцене. Подробнее: ICameraControl.
navAgent
- агент навигации. Подробнее: INavigationAgent.
Контроллер камеры и агент навигации можно получить из INavigation.
//Пример создания:
const cameraControl = PilotWeb3D.ViewerInstance.navigation.getCameraControl();
const navAgent = PilotWeb3D.ViewerInstance.navigation.getNavigationAgent();
const gizmoControl = new PilotWeb3D.GizmoControl(camera, navAgent);
Методы
attachTo()
Метод прикрепляет GizmoControl
к 3D-объекту на сцене. Контрол привязывает своё положение к положению объекта, а также, манипуляции над GizmoControl
начинают влиять на положение связанного объекта.
Если GizmoControl
добавляется как дочерний объект, то по умолчанию GizmoControl
помещается в точку начала координат в локальном пространстве объекта привязки. Для смещения GizmoControl
относительно объекта привязки используется метод .updateGizmoOffset().
attachTo(object: THREE.Object3D, asChild = false): void;
где:
object
– Объект привязки.
asChild
– Параметр указывает, добавить ли GizmoControl
дочерним элементом к объекту. Необязательный параметр, по умолчанию: false
.
Если asChild
равен true
, то GizmoControl
не нужно добавлять на сцену вручную. Он будет автоматически размещён на той же сцене что и родительский объект. В противном случае GizmoControl
нужно вручную добавить на нужную сцену и задать необходимые координаты.
detach()
Метод открепляет GizmoControl
от объекта привязки, если привязка существует.
detach(): void;
updateGizmoOffset()
Метод устанавливает смещение и вращение GizmoControl
относительно объекта привязки.
updateGizmoOffset(position?: THREE.Vector3, quaternion?: THREE.Quaternion): void;
где:
position
– позиция GizmoControl
в локальных координатах объекта привязки. Необязательный параметр. Подробнее: THREE.Vector3.
quaternion
– вращение GizmoControl
в локальных координатах объекта привязки. Необязательный параметр. Подробнее: THREE.Quaternion.
addAxis()
Метод добавляет новую ось для манипуляции в GizmoControl
.
addAxis(axis: GizmoAxis): void;
где:
axis
– ось контроллера. Подробнее: GizmoAxis.
dispose()
Метод освобождает выделенные контроллеру ресурсы, разрывает привязку, удаляет GizmoControl
со сцены.
dispose(): void;