ModelPartGizmo

ModelPartGizmo – расширение, которое позволяет изменять положение частей модели с помощью гизмо на сцене. При включении редактирования - setEditMode, расширение блокирует взаимодействие со всеми частями модели, кроме редактируемой. Задать редактируемую часть модели можно методом setEditModelPartId. При клике по элементу модели на сцене, в точке клика появится гизмо, с помощью которого можно изменить положение части модели. Событие изменения положения части модели и событие изменения режима редактирования можно отслеживать с помощью диспетчера событий расширения events.

Расширение имеет имя PilotWeb3D.ModelPartGizmo.

Пример подключения в html:

<script src="https://pilot.ascon.ru/componentkit/components/24.24.0/extensions/ModelPartGizmo/ModelPartGizmo.min.js"></script>

Пример подключения в javascript:

let htmlDiv = document.getElementById('pilotViewer')
viewer = PilotWeb3D.CreateViewer(htmlDiv);
await viewer.start();
await viewer.extensionsLoader.loadExtension("PilotWeb3D.ModelPartGizmo");

Поля

events

Диспетчер событий расширения. Список типов событий расширения: ModelPartGizmoEventMap.

readonly events: IEventsDispatcher;

Подробнее: IEventsDispatcher.

Методы

activate()

Метод включает расширение.

activate(): void;

deactivate()

Метод выключает расширение.

deactivate(): void;

isEdited()

Метод возвращает состояние редактирования: true если в данный момент редактирование активно, в противном случае false.

isEdited(): void;

setEditMode()

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

setEditMode(value: boolean): void;

где:
value - значение требуемого состояния: true чтобы включить редактирование, false чтобы выключить.

getEditModelPartId()

Метод возвращает идентификатор редактируемой части модели.

getEditModelPartId(): string | undefined;

setEditModelPartId()

Метод задает идентификатор редактируемой части модели. Если переданный идентификатор части модели не совпадает с идентификатором редактируемой в данный момент части модели, то редактирование сбрасывается и применяется новый идентификатор.

setEditModelPartId(value: string): void;

где:
value - идентификатор части модели.

ModelPartGizmoEventMap

События расширения.

interface ModelPartGizmoEventMap {
  'EditModelPartChanged' : Event,
  'ModelPartPositionChanged' : PositionChangedEvent,
}

EditModelPartChanged

  'EditModelPartChanged' : Event;

Событие возникает при изменении состояния редактирования и (или) изменении идентификатора редактируемой части модели.

ModelPartPositionChanged

  'ModelPartPositionChanged' : PositionChangedEvent; 

Событие возникает при изменении положения части модели - при отпускании оси гизмо после перетаскивания.

class PositionChangedEvent extends Event {
  modelPartId: string;  // идентификатор части модели
  placement: THREE.Matrix4Tuple | number[]; // новое положение части модели
  // матрица трансформации в глобальном пространстве, 4х4 - row-major order
}