Как мы можем добавить слушателя CMERA_CHANGE_EVENT для разметки, нарисованной на зрителе? Если мы создадим метку для dbid, мы можем сохранить ее координаты и применить worldToClient к координатам, чтобы получить новые координаты. Но как это работает для разметки SVG?
В моем приложении пользователь может связать информацию RFI двумя способами. 1. Просто щелкнув модель obkject / dbid, я позволю пользователю добавить некоторую текстовую информацию через текстовое поле и прикрепить ее в виде метки с этим выбранным объектом / dbid. это работает, когда метка перемещается вместе с выбранным объектом во время события поворота камеры.
Технически, чтобы сделать это, я использую функцию getObjPosition, чтобы получить координаты dbid и сохранить его в элементе управления меткой, и я извлекаю эти значения во время событие смены камеры и обновления текущих клиентских координат с помощью функции ниже getClientCoordinates
function getObjPosition(dbId) {
const model = viewer.model;
const instanceTree = model.getData().instanceTree;
const fragList = model.getFragmentList();
let bounds = new THREE.Box3();
instanceTree.enumNodeFragments( dbId, ( fragId ) => {
let box = new THREE.Box3();
fragList.getWorldBounds( fragId, box );
bounds.union( box );
}, true );
const position = bounds.center();
return position;
}
function getClientCoordinates(positionCoordinates){
var screenpoint = viewer.worldToClient(
new THREE.Vector3(positionCoordinates.x,
positionCoordinates.y,
positionCoordinates.z,));
return screenpoint
}
В этом сценарии я даю пользователю рисовать облачную разметку и связываю метку для вводимой пользователем пользовательской информации при выборе разметки. Поэтому, чтобы получить координаты, я использую следующий код:
var pos = markup.markups [0] .getClientPosition (); и пометьте метку этой созданной разметкой. Оно работает. Для события смены камеры сама разметка теряет свою позицию, поэтому не знаю, как я буду прикреплять ее к модели и применять координаты для метки. Еще одна тревожная часть: как я должен получить все нарисованные наценки на модели во время события смены камеры
Надеюсь, мой вопрос теперь ясен.
оригинальная разметка
разметка после смены камеры вверх