在调用 model.rayIntersect() 之前我需要等待什么事件?

时间:2021-04-29 22:06:11

标签: autodesk-forge autodesk-viewer

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

通过检查查看器 (here) 的非缩小源代码,根据 GEOMETRY_LOADED_EVENT 中的任何操作,在我看来没有必要等待 rayIntersect()功能。我的理解是我们可以简单地从片段中获取查看器中对象的网格数据,这不需要 GEOMETRY_LOADED_EVENT。在调用 model.rayIntersect() 之前是否还有其他事件可以等待,它可能会更快地触发?

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

1 个答案:

答案 0 :(得分:1)

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

BVH 由查看器在接收到带有所有片段的边界框的“片段列表”后计算(这是一个异步操作,可能需要一段时间),并且 ID 缓冲区是作为标准渲染管道的一部分生成的,因此,要使这些工作正常进行,您实际上应该等待 LOGIN_REQUIRED_IGNORE_VIEW_NAMES = [ 'home', 'login', 'admin:index', 'admin:login', 'namespace:url_name', ] 事件。