自动从剖切面生成二维视图

Generating 2d views from cut planes automatically

我是 Autodesk 查看器和其他浏览器的新手 api,我可以借助一些帮助来确定哪些工具最适合做我想做的事情。

我正在使用 Autodesk 查看器让用户生成切割平面的二维视图,为此,我只需使用查看器中的 getScreenshot 函数并将其保存为我的应用程序中的蓝图。

我现在想做的是,当用户更新他的 3d 模型时,用新的 3d 模型自动更新我的 2d 视图。

目前我想到的唯一解决方案是在截屏时存储相机的位置,然后在更新 3d 模型时,让另一台计算机在后台进入查看器并再次截屏相同的位置。

这似乎不是一个非常优雅的解决方案,所以我想知道是否有替代方法,比如从 api 调用生成二维视图的方法或者使用设计自动化 API 与观众一起截屏 ?

我正在努力的另一件事是精确测量我生成的 2ds 视图,我目前的解决方案是计算相机和切割平面之间的距离,然后使用 fov 获得近似测量,公式如下所示:

Math.tan((viewer.getCamera().fov / 2) * Math.PI / 180) * distanceBetweenCameraAndPlaneCut * 4;

但这在很大程度上取决于面向以 90° 角切割的平面的用户,我认为应该使用测量工具做一些更好的事情。

非常感谢您的宝贵时间!

  1. 您应该能够 运行 Viewerserver 上使用 puppeteer(没有 client-side 组件)生成 屏幕截图https://forge.autodesk.com/blog/running-forge-viewer-headless-chrome-puppeteer
    注意:您也可以使用 Design Automation API 来做类似的事情,但是您将受限于文件格式给定产品(例如 AutoCAD)支持作为输入

  2. 您也可以简单地保存 Viewerstate 并在下次加载相同模型时重置它为了使用 getState()/restoreState() 获取完全相同区域的 屏幕截图https://adndevblog.typepad.com/cloud_and_mobile/2015/02/managing-viewer-states-from-the-api.html

  3. 为什么要测量切割平面和相机位置之间的距离?是为了恢复Viewerstate/camera吗?如果是,那么2.中提到的解决方案应该有帮助