zooming - 如何放大以适合 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)
在浏览器中看到的完整工作表视图。
上述代码执行后的结果。
所需结果,注意图像宽度的差异。在某些情况下,高度和宽度都会成为问题。
解决方案
工程回来并提供了相同的解决方法 - 并查看我刚刚放在一起以在此处以编程方式放大的实时示例:
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。
推荐阅读
- python - 如何在图像处理 tensorflow 和 jupyter notebook 中创建 for loop cv.write?
- java - 环境搭建安卓手机应用
- python - Dash 数据表下拉过滤器
- python - Cython 选项 --embed 是否仅在内部使用 Python,并且没有性能提升?
- translation - 什么是编程中的纯翻译和纯模拟?
- android - 更改字体粗细不会影响任何内容。(安卓,安卓工作室)
- watson-studio - 如何在 Watson Studio Modeler Flow 中预测时间序列的动态数量
- laravel - 如何使用“Laravel Follow”解决此错误
- javascript - 如何实现类似于 Slither.io 的相机/运动风格?
- rust - 在 NEAR 区块链上使用合约名称调用 nft_transfer?