【问题标题】:How to zoom in to fit the exact bounding box in Autodesk forge viewer如何放大以适合 Autodesk forge 查看器中的确切边界框
【发布时间】:2019-11-15 23:26:35
【问题描述】:

我们希望在 forge-viewer 中放大到 2D 图纸以截取屏幕截图并稍后拼接多个屏幕截图以获得更好的图像质量。 我们面临放大到精确边界框的问题,它总是放大一点,即我们可以看到不应该成为屏幕截图的一部分的工作表部分。 以将2D图纸等分为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)

Full sheet view 在浏览器中看到。

Result以上代码执行后。

Required result,注意图片宽度的不同。在某些情况下,高度和宽度都会成为问题。

【问题讨论】:

  • 可以确认能够复制该问题...与工程部门核实以找到解决方法,很快就会回复
  • 在我们等待工程部返回时,您可能需要手动向枢轴方向缩放 - 试试 viewer.navigation.setView(camera.position,viewer.navigation.getTarget())
  • 嗨,布莱恩,感谢您的回复。我们尝试了上述方法来设置视图,但这也没有用。我们使用了从观众那里得到的相机,这是正确的方式吗?我们有没有收到工程团队的回复。
  • 是否可以放大到精确的边界框?还是我们应该寻找其他替代方案?

标签: zooming screenshot bounding-box autodesk-viewer


【解决方案1】:

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

  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())

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

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

【讨论】:

  • 感谢分享。如果有任何更新,请随时通知我们。
猜你喜欢
  • 2017-12-30
  • 2021-11-12
  • 1970-01-01
  • 2021-06-16
  • 2021-09-19
  • 2019-10-26
  • 2020-10-23
  • 2017-01-07
  • 2012-04-17
相关资源
最近更新 更多