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
}