首页 > 解决方案 > 如何放大以适合 Autodesk forge 查看器中的确切边界框

问题描述

我们希望在 forge-viewer 中放大 2D 图纸以截取屏幕截图并稍后拼接多个屏幕截图以获得更好的图像质量。我们面临放大到精确边界框的问题,它总是放大一点,即我们可以看到不应该成为屏幕截图的一部分的工作表部分。以将 2D sheet 等分为 4 个象限放大并截屏为例(我们可以稍后根据需要的图像质量增加象限/部分),我们使用下面的代码进行放大,

var max = viewer.model.getBoundingBox().max;
var min = viewer.model.getBoundingBox().min;
var Q1Min = new THREE.Vector3( min.x, min.y, 0 )
var Q1Max = new THREE.Vector3( (min.x)+(max.x)/2, (min.y)+(max.y)/2, 0 )
var Q1Box =  new THREE.Box3(Q1Min, Q1Max);
viewer.navigation.fitBounds( immediate, Q1Box);

We also tried using below method, it also produces same result
viewer.impl.setViewFromViewBox(viewer.model, [Q1Min.x,Q1Min.y,Q1Max.x,Q1Max.y],'Q1',true)

在浏览器中看到的完整工作表视图。

上述代码执行后的结果。

所需结果,注意图像宽度的差异。在某些情况下,高度和宽度都会成为问题。

标签: zoomingscreenshotbounding-boxautodesk-viewer

解决方案


工程回来并提供了相同的解决方法 - 并查看我刚刚放在一起以在此处以编程方式放大的实时示例:

  var direction = new THREE.Vector3();
  camera.getWorldDirection( direction );
  camera.position.add( direction.multiplyScalar(distance) ); //set distance move the camera forward to your needs
  viewer.navigation.setView(camera.position,viewer.navigation.getTarget())

另请参阅此处此处以获取将上述内容付诸实践的代码示例。

他们承认这可能是一个错误,但没有提供更多细节 - 将追究他们,但猜测他们目前还有其他优先事项,例如维护新发布的 Viewer v7。


推荐阅读