Могу ли я использовать панель стыковки в Autodesk forge для обоих зрителей? - PullRequest
0 голосов
/ 14 февраля 2020

Пример на фото

У меня есть два зрителя для сравнения моделей. Я создал панель закрепления свойств, и я хочу, чтобы эта панель плавала в двух средствах просмотра. Возможно ли это и кто подскажет как это сделать?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

хорошо, еще два варианта:

вариант A: , если второе изображение «stati c» ... почему бы просто не сделать «скриншот» и поместить его в правая боковая панель? Вы можете использовать команду viewer.getScreenShot (), чтобы получить блог PNG и нарисовать его на холсте.

// Get the full image
viewer.getScreenShot(viewer.container.clientWidth, viewer.container.clientHeight, function (blobURL) {
    screenshot.src = blobURL;
});

Подробнее о рисовании изображений на холсте см. Здесь: https://forge.autodesk.com/blog/screenshot-markups

опция B: если двумя панелями можно независимо управлять, то, возможно, попытайтесь синхронизировать c состояние камеры с помощью какого-либо нажатия кнопки (или действия) ,

с помощью этих статей в блоге:

, например:

viewer.getState();

viewer.restoreState();

или восстановление положения камеры с помощью навигации объект:

const nav = this.navigation;
nav.getTarget();
nav.getPosition();
nav.getCameraUpVector();
0 голосов
/ 14 февраля 2020

Существует две опции:

Опция 1:

Используйте расширение ' Autodesk.SplitScreen ', которое будет отображать до 4 областей. , Вы загружаете его следующим образом ..

loadExtension('Autodesk.SplitScreen');

Это простое расширение может установить до четырех камер и отобразить четыре области. По умолчанию это всего два (слева и справа). Вот исходный код того, как работает его ядро, на случай, если вы захотите написать свой собственный ...

https://autodeskviewer.com/viewers/latest/extensions/SplitScreen/SplitScreen.js

this.renderScenePart = function (scene) {


// Left
if (shouldRenderForViewport[0]) {
  this.renderer.setViewport(0, vpVertStart, vpWidth, vpHeight);
  this.context.renderScenePart.apply(this.context, arguments);
}

// Right
if (shouldRenderForViewport[1]) {
  this.renderer.setViewport(vpWidth, vpVertStart, vpWidth, vpHeight);
  this.context.renderScenePart.apply(this.context, arguments);
}

// Bottom left
if (shouldRenderForViewport[2]) {
  this.renderer.setViewport(0, 0, vpWidth, vpHeight);
  this.context.renderScenePart.apply(this.context, arguments);
}

// Bottom right
if (shouldRenderForViewport[3]) {
  this.renderer.setViewport(vpWidth, 0, vpWidth, vpHeight);
  this.context.renderScenePart.apply(this.context, arguments);
}

this.renderer.setViewport(0, 0, this.width, this.height);
this.renderer.enableViewportOnOffscreenTargets(false);

Option2:

Для чего-то более сложного и указав c только для 2D, вы также можете попробовать расширение Autodesk.Viewing.PixelCompare '. Вот сообщение в блоге с более подробной информацией и демонстрацией ...

БЛОГ: https://forge.autodesk.com/blog/compare-two-2d-documents-using-forge-viewer

enter image description here

...