Blender:我可以通过拆分相机将场景渲染为非常大的输出图像吗?
Posted
技术标签:
【中文标题】Blender:我可以通过拆分相机将场景渲染为非常大的输出图像吗?【英文标题】:Blender: can I render a scene to a very large output image by split cameras? 【发布时间】:2016-07-05 08:49:11 【问题描述】:在 Blender 中,我试图在一个非常大的图像输出 (30000 x 18000) 中渲染一个巨大的场景。
这是用于将被分割成更小的 POT 图像的游戏背景资产,我试图保留细节,因为相机在游戏中被放大(因此输出大图像)。
从技术上讲,我可以按原样渲染它,但它可能会导致一些渲染性能问题。
所以我想知道是否有办法将我的相机分成 4 个较小的相机,每个相机渲染一个 15000x9000 的图像,整个图像的一个象限,然后我将在 PS 中组合,然后再次切片。
或者有没有办法准确定位 4 个摄像头,以便它们以像素精度渲染整个图像的一个象限?
谢谢。
【问题讨论】:
【参考方案1】:您无需设置多个摄像头,甚至无需移动摄像头。一个小的 python 脚本可以为你分割渲染。这样做的一个缺点是搅拌器在从脚本渲染时不会更新它的窗口。
听起来您无论如何都想剪切最终图像,您可能希望使用它将其剪切成最终片段。
不要期望看到任何好处,只要提高性能或减少内存使用,因为每次渲染都需要加载整个场景数据,考虑反射和阴影。这样做还是有一些好处的,你可以在渲染时创建最终的图像文件,你可以在一次只完成一个图像时停止和开始渲染,你还可以跨多个共享负载计算机,让每台计算机渲染一组不同的图块。
Blender 有一个名为Render Border 的功能,它允许您只渲染最终图像的一部分。使用 python,您可以将边框设置为所需的大小并多次渲染。最好的部分是您还可以将最终图像裁剪到指定的边框,但是如果您不裁剪并保存为支持 alpha 的图像格式,您最终将得到一个在外部透明的最终分辨率图像渲染区域,这意味着您可以将每个图像作为新图层打开,并且这些片段会自动位于最终图像的正确位置。
边界最小/最大值是最终分辨率的百分比,输入为介于 0.0 和 1.0 之间的值。
import bpy
import os
# cut final image into 10 by 10 smaller images
cut_into = 10
# location of folder to save images to
output_folder = '//renders'
rndr = bpy.context.scene.render
rndr.use_border = True
rndr.use_crop_to_border = False
for row in range(cut_into):
for column in range(cut_into):
filename = "chunk__".format(row + 1, column + 1)
rndr.filepath = os.path.join(output_folder, filename)
rndr.border_min_x = (1 / cut_into) * row
rndr.border_max_x = (1 / cut_into) * (row + 1)
rndr.border_min_y = (1 / cut_into) * column
rndr.border_max_y = (1 / cut_into) * (column + 1)
bpy.ops.render.render( write_still=True )
如果您之前没有在blender中使用过python,您可以将此脚本粘贴到blender的text editor并单击Run Script按钮。或者,您可以通过将其保存到文本文件并使用终端来在没有 GUI 的情况下使用它 -
blender -b myfile.blend -P this_script.py
【讨论】:
以上是关于Blender:我可以通过拆分相机将场景渲染为非常大的输出图像吗?的主要内容,如果未能解决你的问题,请参考以下文章
blender怎么调整视图?blender如何改变视图方式啊?求助