【问题标题】:What event do I need to wait on before calling model.rayIntersect()?在调用 model.rayIntersect() 之前我需要等待什么事件?
【发布时间】:2021-07-23 07:29:21
【问题描述】:

在 Autodesk Forge 查看器中调用 model.rayIntersect() 时,我注意到返回的交叉点并不总是反映准确的交叉点,除非我等待 GEOMETRY_LOADED_EVENT

通过检查查看器 (here) 的非缩小源代码,在我看来,基于 rayIntersect() 函数中的任何操作,等待 GEOMETRY_LOADED_EVENT 是不必要的。据我了解,我们可以简单地从片段中获取查看器中对象的网格数据,这不需要GEOMETRY_LOADED_EVENT。在调用 model.rayIntersect() 之前我可以等待另一个可能会更快触发的事件吗?

我正在以无头形式的查看器对大型模型执行此交集计算,因此等待GEOMETRY_LOADED_EVENT 可能需要相当长的时间,所以我不想等待它完成。

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    Forge Viewer 中的命中测试逻辑非常复杂,可能会使用不同的方法(例如命中测试 BVH、命中测试单个网格或检查“ID 缓冲区”中的像素),具体取决于您的环境和设置.

    查看器在收到带有所有片段边界框的“片段列表”后计算 BVH(这是一个可能需要一段时间的异步操作),并且 ID 缓冲区是作为标准渲染管道的一部分生成的,所以要让这些工作,你实际上应该等待Autodesk.Viewing.GEOMETRY_EVENT_LOADED 事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-12
      • 2022-07-30
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多