使用 Hadoop 的 Blender 静止图像渲染

Blender Still Image Rendering with Hadoop

我一直在网上搜索这个,但没有找到任何可靠的想法来执行这个任务。

我的要求

这些设置:

项目:

我正在使用 python 在搅拌机中生成场景。我有这个完美的工作并创建了一个相机路径。当我打开在 UI 中创建的 blend 文件时,一切正常。我目前正在用 python 渲染成静止图像,但即使在降低质量设置后我仍然以每秒 1 帧的速度渲染。渲染完所有静止图像后,我正在使用搅拌机将帧动画化为序列。所有这些都是独立工作的,但渲染一个 30 秒的视频大约需要 5 分钟。

Goal/Problem:

我需要渲染相机路径并将结果输出为视频格式。在一台机器上,你可能非常清楚,1 分钟的视频可能需要很长时间才能渲染,我将渲染不同长度的视频,从几秒到一个小时不等。这个想法是使用 hadoop 在集群中分布渲染以减少渲染时间。

我对 mapreduce 比较熟悉,但不确定如何将这个问题分解成块。我正在寻找如何解决此问题以缩短渲染时间的想法。如有任何建议,我们将不胜感激。

我不熟悉 mapreduce,我认为它不适合你想做的事情——至少不适合现有的解决方案。

您要寻找的是所谓的渲染农场。这是多台机器各自渲染最终结果的一部分的地方。对于动画,这很容易通过让每台机器渲染不同的帧来分割,也有一些方法可以分割静止图像以让每台机器渲染部分。

为了快速入门,可以使用像 Render Street that have machines setup to do the rendering for you, or free services like sheepit 这样的商业渲染农场在用户计算机之间分发渲染。

如果您有几台安装了 blender 的 *nix 机器,您可以使用 blender's cli arguments 在每台机器上渲染不同的帧范围。

ssh m1.local 'sh -c "blender -b myanim.blend -s 1 -e 10 -a"'
ssh m2.local 'sh -c "blender -b myanim.blend -s 11 -e 20 -a"'

对于 运行 你自己的渲染场,对于一个有管理员的简单场,有 network render addon that is included with blender, for a more advanced solution look at flamenco