【问题标题】:Generating 2d views from cut planes automatically自动从剖切面生成二维视图
【发布时间】:2021-02-16 06:06:32
【问题描述】:

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

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

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

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

这似乎不是一个非常优雅的解决方案,所以我想知道是否有替代方案,例如从 api 调用生成 2d 视图的方法,或者使用带有查看器的设计自动化 API 来截取屏幕截图?

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

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

但它非常依赖于面对以 90° 角切割的平面的用户,我认为应该使用测量工具做一些更好的事情。

非常感谢您的宝贵时间!

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:
    1. 您应该能够使用 puppeteer(没有客户端组件)在 服务器 上运行 Viewer 以生成 屏幕截图:@987654321 @
      注意:您也可以使用 Design Automation API 来做类似的事情,但是您受限于给定产品的文件格式(例如 AutoCAD) 支持作为输入

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

    3. 您为什么要测量剖切面和相机位置之间的距离?这是为了恢复 Viewer 状态/相机吗?如果是这样,那么 2. 中提到的解决方案应该会有所帮助

    【讨论】:

    • 谢谢,我会尽快尝试!关于测量,我只是想以米为单位获取屏幕截图的宽度,以便用户可以在蓝图上进行自己的测量
    猜你喜欢
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 2021-11-16
    • 2018-05-14
    • 2016-01-07
    • 1970-01-01
    • 2014-01-21
    相关资源
    最近更新 更多