适用于GPU /并行光线跟踪的Python或非...框架?

问题描述

我正在为下一个项目进行技术研究,但尚未找到合适的方法,因此,我尝试一下。

我要解决的问题如下:

  • 我有很多(数百/数千个)过程生成的场景,每个场景由约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://unity.com/ray-tracing

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通信瓶颈。