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

What event do I need to wait on before calling model.rayIntersect()?

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

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

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

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

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