Python(或不是...)GPU/并行光线追踪框架?
Python (or not...) framework for GPU / parallel ray tracing?
我正在为我的下一个项目做技术研究,但还没有找到合适的东西,所以我正在试一试。
我要解决的问题如下:
- 我有很多(成百上千)程序生成的场景,每个场景由约 10k 个立方体组成。
- 在每一个中我都想检查 1k-10k 射线并获得命中距离的统计数据。
- 这不是渲染问题 - 光线并非都来自同一位置。 (所以基于深度通道的光线追踪不太合适)
- 性能很重要。我希望底层代码是基于 GPU 或可并行化的 C。
有没有一个框架可以让我做这样的事情?我查看了游戏引擎,但大多不进行光线追踪。
我更愿意找到一个 python 框架来执行此操作,但也会选择其他语言 (C# / C++)。
解决此类问题的最佳方法是什么?
您寻找了哪些游戏引擎?因为Unreal和Unity这两个市场上最流行的引擎确实已经有了支持。在 Python 中找到一个好的库或框架可能更难,因为 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/
更新:
Python 中有一个名为 PyGame 的引擎,它是开源的并且可能有一些支持,但我不确定它是否稳定。
https://www.pygame.org/project/4743/6980
经过一些研究,我还在 Python 中找到了一个可以在没有游戏引擎的情况下工作的包,你可以试一试
回答我自己的问题。经过大量研究后,我们最终选择了 Trimesh ( https://trimsh.org/trimesh.html )。
它包括
- 与流行几何格式(gltf、obj、dae)的互操作性
- 使用 pyembree(基于 Intel 的 embree 项目)支持快速光线追踪
- 支持批量查询(发送 X 射线查询,得到 X 射线回复)以避免 python<->C 通信瓶颈。
我正在为我的下一个项目做技术研究,但还没有找到合适的东西,所以我正在试一试。
我要解决的问题如下:
- 我有很多(成百上千)程序生成的场景,每个场景由约 10k 个立方体组成。
- 在每一个中我都想检查 1k-10k 射线并获得命中距离的统计数据。
- 这不是渲染问题 - 光线并非都来自同一位置。 (所以基于深度通道的光线追踪不太合适)
- 性能很重要。我希望底层代码是基于 GPU 或可并行化的 C。
有没有一个框架可以让我做这样的事情?我查看了游戏引擎,但大多不进行光线追踪。 我更愿意找到一个 python 框架来执行此操作,但也会选择其他语言 (C# / C++)。
解决此类问题的最佳方法是什么?
您寻找了哪些游戏引擎?因为Unreal和Unity这两个市场上最流行的引擎确实已经有了支持。在 Python 中找到一个好的库或框架可能更难,因为 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/
更新:
Python 中有一个名为 PyGame 的引擎,它是开源的并且可能有一些支持,但我不确定它是否稳定。
https://www.pygame.org/project/4743/6980
经过一些研究,我还在 Python 中找到了一个可以在没有游戏引擎的情况下工作的包,你可以试一试
回答我自己的问题。经过大量研究后,我们最终选择了 Trimesh ( https://trimsh.org/trimesh.html )。
它包括
- 与流行几何格式(gltf、obj、dae)的互操作性
- 使用 pyembree(基于 Intel 的 embree 项目)支持快速光线追踪
- 支持批量查询(发送 X 射线查询,得到 X 射线回复)以避免 python<->C 通信瓶颈。