使用 bpy 进行视口渲染未使用正确的着色器

问题描述

我有一个带有脚本的搅拌机场景,该脚本可以旋转对象,渲染动画,保存帧,然后重复:

import bpy
from math import radians
from mathutils import Euler

track = bpy.context.scene.objects["BezierCircle"]

for angle in range(8):
    angle = angle + 1
    # set output
    bpy.data.scenes['Scene'].render.filepath = 'C:/Users/Evan/Pictures/BlenderSprites/Angle' + str(angle) + '/'
    print(bpy.data.scenes['Scene'].render.filepath)
    # change camera angle
    new_angle = radians(angle*45)
    track.rotation_euler = Euler((0,new_angle),'XYZ')
    # change viewport settings
    view3d = None
    for area in bpy.context.screen.areas: 
        if area.type == 'VIEW_3D':
            for space in area.spaces: 
                if space.type == 'VIEW_3D':
                    view3d = space
    print(view3d.shading.type)
    # render viewport
    bpy.ops.render.render(animation=True,use_viewport=True)

这部分正在工作。但是,尽管 print(view3d.shading.type) 输出“SOLID”,但生成的图像是使用“RENDERED”阴影保存的,而不是我在 GUI 中选择的“SOLID”阴影。

我认为这可能是因为我使用的是 ops.render.render 而不是 ops.render.opengl,但是 ops.render.render 使用的是我已经配置好的设置,这要好得多。

有什么方法可以让 ops.render.render 使用 SOLID shading 吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)