渲染复杂 3D 模型的小型预览的快速方法。
Fast way to render a small preview of a complex 3D model.
我正在寻找一种非常快速的方法来渲染复杂 3D 模型的小预览。
- Modell 为 stl 或 ply。
- 一个模型将有 300.000 到 500.000 张面孔。
- 渲染过程将在没有 GPU 的无头 linux 服务器上 运行。
- 渲染进程只能使用一个core/thread。
- 所需时间应在 15 秒以内。
生成的图片会很小,大约 300x300 像素。
它不需要有阴影或其他伪现实特征。
到目前为止我尝试了什么:
stl2pov.py (stltools) -> povray:
结果看起来不错,渲染时间低于 15 秒,但 Povray 需要一分钟来解析由 stl2pov 创建的 pov 文件。如果我使用 mesh2 格式解析要快得多,但结果是乱码。我相信这是由 stl2pov 中的错误引起的。是否有另一个 stl/ply 到 pov 转换器产生 mesh2?
带循环渲染器的搅拌器:
这完全取决于样本的数量。样本数 150 给出了一个相当嘈杂但还不错的结果,但仍需要 30 秒。但由于我是一个 Blender 新手,而且这个野兽非常复杂,也许我确实忽略了一些技巧。
光线追踪解决方案似乎太慢了,而且无论如何都是矫枉过正。
我找到的所有其他解决方案都依赖 GPU 来提高速度。
你有什么办法解决这个问题吗?
对于像 300x300 这样的渲染大小,使用 300k+ 三角形没有多大意义,因此您可以尝试将网格简化为更少的三角形数量而不会出现明显的视觉差异,并尝试使用您已经尝试过的解决方案渲染该网格。这应该会显着降低您的渲染时间。
您也可以尝试忽略小于某个值的三角形,看看这是否适用于您和您的模型。
如果您需要编写整个渲染代码并希望使其尽可能简单(或尽早获得一些工作代码),您可以尝试仅将网格顶点绘制为单个像素。使用如此密集的模型,即使使用 Z 缓冲区,它也可能工作得很好并且易于实现。
您始终可以使用 "Render Border" 打开,按 n,在视图部分标记渲染边框框,然后使用 ctrl+b 在您要渲染的地方绘制一个矩形。
您可能想要使用光线追踪器的原因是光线追踪器是 O(n log n) 而光栅化器是 O(n^ 2) 操作。所以光线追踪器最终会击败光栅化器。在这种情况下,因为您有太多三角形,所以几乎可以肯定跟踪速度更快。 Povray 是一种光线追踪器,但不是最好的。
虽然在这种情况下。因为无论如何你都需要分析网格,而且你只有一个线程。它不是那么明确的交易。 @koledas 思路不错,渲染点云,仅此而已。很可能任何制造网格的密度都足以使其发挥作用。它比任何其他替代品都便宜。
但是您需要一个可以直接从 stl 发出数据的渲染器。如果您正在寻找光栅化器,那么您可以使用:
- Mesa 3D llvmpipe
我正在寻找一种非常快速的方法来渲染复杂 3D 模型的小预览。
- Modell 为 stl 或 ply。
- 一个模型将有 300.000 到 500.000 张面孔。
- 渲染过程将在没有 GPU 的无头 linux 服务器上 运行。
- 渲染进程只能使用一个core/thread。
- 所需时间应在 15 秒以内。
生成的图片会很小,大约 300x300 像素。 它不需要有阴影或其他伪现实特征。
到目前为止我尝试了什么:
stl2pov.py (stltools) -> povray: 结果看起来不错,渲染时间低于 15 秒,但 Povray 需要一分钟来解析由 stl2pov 创建的 pov 文件。如果我使用 mesh2 格式解析要快得多,但结果是乱码。我相信这是由 stl2pov 中的错误引起的。是否有另一个 stl/ply 到 pov 转换器产生 mesh2?
带循环渲染器的搅拌器: 这完全取决于样本的数量。样本数 150 给出了一个相当嘈杂但还不错的结果,但仍需要 30 秒。但由于我是一个 Blender 新手,而且这个野兽非常复杂,也许我确实忽略了一些技巧。
光线追踪解决方案似乎太慢了,而且无论如何都是矫枉过正。 我找到的所有其他解决方案都依赖 GPU 来提高速度。
你有什么办法解决这个问题吗?
对于像 300x300 这样的渲染大小,使用 300k+ 三角形没有多大意义,因此您可以尝试将网格简化为更少的三角形数量而不会出现明显的视觉差异,并尝试使用您已经尝试过的解决方案渲染该网格。这应该会显着降低您的渲染时间。
您也可以尝试忽略小于某个值的三角形,看看这是否适用于您和您的模型。
如果您需要编写整个渲染代码并希望使其尽可能简单(或尽早获得一些工作代码),您可以尝试仅将网格顶点绘制为单个像素。使用如此密集的模型,即使使用 Z 缓冲区,它也可能工作得很好并且易于实现。
您始终可以使用 "Render Border" 打开,按 n,在视图部分标记渲染边框框,然后使用 ctrl+b 在您要渲染的地方绘制一个矩形。
您可能想要使用光线追踪器的原因是光线追踪器是 O(n log n) 而光栅化器是 O(n^ 2) 操作。所以光线追踪器最终会击败光栅化器。在这种情况下,因为您有太多三角形,所以几乎可以肯定跟踪速度更快。 Povray 是一种光线追踪器,但不是最好的。
虽然在这种情况下。因为无论如何你都需要分析网格,而且你只有一个线程。它不是那么明确的交易。 @koledas 思路不错,渲染点云,仅此而已。很可能任何制造网格的密度都足以使其发挥作用。它比任何其他替代品都便宜。
但是您需要一个可以直接从 stl 发出数据的渲染器。如果您正在寻找光栅化器,那么您可以使用:
- Mesa 3D llvmpipe