Java 使用ApacheHadoop渲染3D图像

Java 使用ApacheHadoop渲染3D图像,java,3d,hadoop,rendering,Java,3d,Hadoop,Rendering,可能重复: 是否可以使用ApacheHadoop(MapReduce)渲染3D图像 我不明白为什么不可以,只要你的应用不需要很短的响应时间(比如不到一分钟)。也就是说,它很可能对3D游戏毫无用处,但如果你正在制作一部电影,并且需要处理大量的镜头或其他东西,它可能是有意义的 这应该是可能的-由于大多数几何体任务可以并行执行(您有顶点和三角形,并基于投影矩阵对它们执行计算),并且以管道方式执行,因为不可见的原语将从进一步的计算中删除因此没有理由不能使用Hadoop 如果要同时使用Hadoop的“m

可能重复:


是否可以使用ApacheHadoop(MapReduce)渲染3D图像

我不明白为什么不可以,只要你的应用不需要很短的响应时间(比如不到一分钟)。也就是说,它很可能对3D游戏毫无用处,但如果你正在制作一部电影,并且需要处理大量的镜头或其他东西,它可能是有意义的

这应该是可能的-由于大多数几何体任务可以并行执行(您有顶点和三角形,并基于投影矩阵对它们执行计算),并且以管道方式执行,因为不可见的原语将从进一步的计算中删除

因此没有理由不能使用Hadoop

如果要同时使用Hadoop的“map”和“reduce”阶段,这意味着要在Hadoop节点上拆分每个帧

如果只使用每个节点渲染单独的帧,那么使用Hadoop几乎没有什么好处,尽管上面评论中提到的论文摘要表明HDFS在访问场景数据和渲染帧时效果很好


我已经用Java编写了一个随机光线跟踪器,它目前是多线程的。在这段代码中,我为每个像素收集了大量的样本,因此在Hadoop中,收集这些样本以生成最终的像素输出将与Hadoop的“减少”阶段很好地对应。

Java支持线程,这意味着您可以使用并行处理。我不确定是否必须将JVM设置为使用更多处理器/内核(如果可用),或者这是否由JVM默认处理(或由操作系统处理)<代码>Hadoop的“map”和“reduce”两个阶段,这意味着分割每一帧。为什么两者都有?我认为在映射步骤中,我需要将一个大帧分割成多个“小帧”,然后将每个小帧放入Hadoop节点。在Reduce步骤中,我需要从节点获得结果,并将处理后的小帧合并成一个大帧。这是对的?哪种尺寸必须有框架?每帧100千兆字节?每一帧都必须有以千兆像素为单位的清晰度?(我认为没有理由在较小尺寸的帧上使用Hadoop)那么在Hadoop节点之间拆分整个帧呢?每一帧都会处理一个大帧,完成后我会得到几个帧,并将这些帧组合成一部“迷你电影”@MyTitle还原阶段也应该能够并行化-这在需要将(线性)帧序列编码成视频时不太可能有用。对于单个帧,可以根据渲染模型按像素行或(例如)64x64块分割它们。