Blender Python编程实现批量导入网格并保存渲染图像

2022-08-07 18:50:56
目录
引言导入库移除默认对象和相机添加多个 “猴头” 网格创建相机保存渲染的图像

引言

继上一篇>

Blender 并不是唯一一款允许你为场景编程和自动化任务的3D软件; 随着每一个新版本的推出,Blender 正逐渐成为一个可靠的 CG 制作一体化解决方案,从使用油脂铅笔的故事板到基于节点的合成。

事实上,你可以使用 Python 脚本和一些额外的包来批处理你的对象实例化,程序化地生成东西,配置你的渲染设置,甚至获得你当前项目的自定义统计数据,这是非常棒的功能! 这是一种减轻繁琐任务负担的方式,同时也能让开发者参与到这个创造性工具社区中,而不仅仅是美术人员。

打开 Blender 中的文本编辑器,让我们开始编码。这个过程的主要步骤包括

    导入所有必需的库删除默认的立方体对象和相机编写几个 for 循环来导入多个 “猴头” 网格创建相机最后保存渲染的图像

    导入库

    为了实现我们的项目,我们将进口三种主要必需品。首先,我们将导入>

    import bpy
    from bpy import context, data, ops
    import math
    

    移除默认对象和相机

    我们的下一个目标是从>delete 函数并将 use_global 参数设置为 False 。另一种方法是创建一个 for 循环,并在默认屏幕中检查所有对象,选择正在寻找的特定类型的对象,并删除适当(认为不必要的特定项目)的元素。下面是执行以下操作的代码块。

    #  Remove The Default Cude Object
    # bpy.ops.object.delete(use_global=False)
    bpy.ops.object.delete(use_global=False, confirm=False)
    for o in bpy.context.scene.objects:
        if o.name == "Cube":
            bpy.ops.object.delete(use_global=False)
    

    添加多个>

    在下一步,我们将在各自的位置添加相应的多个 “猴头” 网格。为了执行这个步骤,我们将把三个变量初始值设为零。这三个变量分别表示 x 轴、y 轴 和 z 轴。我们将相应地修改这些变量,以获得 “猴头” 网格的最佳位置。count 变量用于根据需要改变这些轴的位置。

    # Create multiple monkey meshes
    x = 0
    y = 0 
    z = 0
    count1 = 0
    count2 = -5
    for i in range(3):
        # Import the monkey mesh
        bpy.ops.mesh.primitive_monkey_add(location = (x + count1, y + count1, z))
        count1 += 5
    for i in range(2):
        # Import the monkey mesh
        bpy.ops.mesh.primitive_monkey_add(location = (x + count2, y - count2, z))
        count2 += -5
    

    创建相机

    一旦我们完成了创建多个>

    位置(location) 将决定相机的位置,在那里我们将有最好的视角,所有对象呈现在屏幕的可见区域。旋转角度(rotation_euler) 由角度转换为弧度,这是在前面的编码部分中引入的数学库的帮助下完成的。

    我们将指定沿所有三轴旋转的角度(弧度),以便 位置 和 旋转角度 都被正确放置。我们将场景的 collection 链接到当前的相机,并确保当前选择的相机被设置为活动

    ### Creating A New Camera Angle
    scn = bpy.context.scene
    # create the second camera
    cam = bpy.data.cameras.new("Camera")
    cam.lens = 30
    # create the second camera object
    cam_obj = bpy.data.objects.new("Camera", cam)
    # Locations
    cam_obj.location.x = 16
    cam_obj.location.y = -6
    cam_obj.location.z = 8
    # Rotations
    cam_obj.rotation_euler[0] = math.radians(64)
    cam_obj.rotation_euler[1] = math.radians(0)
    cam_obj.rotation_euler[2] = math.radians(47)
    scn.collection.objects.link(cam_obj)
    # Set the Camera to active camera
    bpy.context.scene.camera = bpy.data.objects["Camera"]
    

    保存渲染的图像

    创建多个猴子网格和放置我们的相机在所需位置后的>

    为了执行这个步骤,我们将设置路径,并将三维模型场景从相机的角度渲染成二维图像,保存在指定路径的目录中。一旦我们的图像被渲染和保存,我们可以恢复之前的路径来执行进一步的计算和操作。

    # Setting the path for the first image captured in the first camera
    FILE_NAME = "1.png"
    FILE_PATH = "D:\\Cool Projects\\Paperspace\\3-D Models\\1.png"
    # Save Previous Path
    previous_path = bpy.context.scene.render.filepath
    # Render Image
    bpy.context.scene.render.filepath = FILE_PATH
    bpy.ops.render.render(write_still=True)
    # Restore Previous Path
    bpy.context.scene.render.filepath = previous_path

    以上就是Blender Python编程实现批量导入网格并保存渲染图像的详细内容,更多关于Blender Python导入渲染图像的资料请关注易采站长站其它相关文章!