问题描述
我正在为下一个项目进行技术研究,但尚未找到合适的方法,因此,我尝试一下。
我要解决的问题如下:
- 我有很多(数百/数千个)过程生成的场景,每个场景由约1万个立方体组成。
- 我想在每一个中检查1k-10k射线并获得命中距离的统计信息。
- 这不是渲染问题-光线并非全部来自同一位置。 (因此,基于深度通过的光线跟踪不太适合)
- 性能很重要。我希望基础代码是基于GPU或可并行化的C。
是否存在允许我执行此类操作的框架?我看了游戏引擎,但是大部分都没有。 我更喜欢找到一个可以做到这一点的python框架框架,但是也会使用其他语言(C#/ C ++)。
解决方法
您寻找了哪些游戏引擎?因为Unreal和Unity是市场上最受欢迎的两个引擎,所以已经提供了支持。在Python中找到一个好的lib或框架可能会比较困难,因为Python在游戏引擎周围没有强大的生态系统。
https://docs.unrealengine.com/en-US/Engine/Rendering/RayTracing/index.html
https://docs.unrealengine.com/en-US/Engine/Rendering/RayTracing/RayTracingSettings/index.html
https://developer.nvidia.com/blog/introducing-ray-tracing-in-unreal-engine-4/
https://docs.unity3d.com/Packages/[email protected]/manual/Ray-Tracing-Getting-Started.html
更新:
Python中有一个名为PyGame的引擎,它是开源的,可能有一些支持,但是我不确定它是否稳定。
https://www.pygame.org/project/4743/6980
经过一些研究,我还找到了一个Python包,该包可能不需要游戏引擎就可以工作,您可以尝试一下
https://pypi.org/project/ntracer/
,回答我自己的问题。经过大量研究,我们最终选择了Trimesh(https://trimsh.org/trimesh.html)。
它包括
- 与流行的几何格式(gltf,obj,dae)的互用性
- 使用pyembree(基于Intel的embree项目)支持快速射线追踪
- 支持批量查询(发送X射线查询,获得X射线答案),以避免python C通信瓶颈。