Итак, я пытаюсь расположить HTML в средстве просмотра, чтобы он выглядел почти как часть сцены. Поэтому, когда вы перемещаете камеру, я хочу, чтобы ее положение с точки зрения зрителя оставалось там, где оно есть. Теперь я попытался сместить HTML, чтобы эмулировать это, когда камера движется; однако я не уверен, что мое уравнение неверно или меня там нет. Кажется, что он немного смещается, но не так сильно, как при перемещении камеры. Другими словами, если бы я поместил html поверх куба во вьюере и переместил камеру, я бы хотел html следовать за кубом. Вот что я попробовал:
this.viewer.addEventListener(av.CAMERA_CHANGE_EVENT, function(e){
console.log($(`.draggable`).attr(`originalPos`));
console.log(e.camera);
var width = window.innerWidth, height = window.innerHeight;
var widthHalf = width / 2, heightHalf = height / 2;
let originalPos = $(`.draggable`).attr(`originalPos`).split(` `);
let originalX = originalPos[0];
let originalY = originalPos[1];
$(`.draggable`).css(`position`, `absolute`);
let pixelX = (e.camera.position.x * .0005 + .5) * e.target.container.clientWidth;
let pixelY = (e.camera.position.y * -.009 + .5) * e.target.container.clientHeight;
$(`.draggable`).css(`left`, e.camera.position.x + pixelX);
$(`.draggable`).css(`top`, e.camera.position.y + pixelY);
});
$(`#viewer .adsk-viewing-viewer`).append(`<h1 originalPos = "50px 100px" class = "draggable" style="position: absolute; top: 50px; left: 100px;">Test</h1>`);
Но, похоже, это неправильное масштабирование. Он не остается в том положении, в котором я хочу. Я видел эту похожую концепцию в вашем инструменте MarkupsCore, который вы создали, а также инструмент измерения площади, кажется, имеет html, который позиционируется на основе камеры. Как ты это делаешь?