【问题标题】:Blender UV texture images not updating with Python APIBlender UV 纹理图像未使用 Python API 更新
【发布时间】:2012-05-09 20:01:27
【问题描述】:

我正在使用 Ubuntu 12.04 上的 Python 脚本更新 Blender 2.63 中的 UV 纹理图像。我可以设置 Image 对象的文件路径属性,但图像没有刷新。我尝试调用 Image 对象的 update() 和 reload() 成员但没有成功。单击 GUI 中的重新加载按钮会按预期刷新图像。将鼠标悬停在 GUI 中的重新加载按钮上表明它使用 bpy.ops.image.reload()。但是当我调用它时,它返回 CANCELED 状态,我假设是因为有一些方法可以在 bpy.context 模块中选择图像对象,我一直无法弄清楚如何完成。也许这是一个错误?

相关代码如下:

# Update the filepath of a UV texture image
obj = bpy.context.scene.objects.active
image = obj.data.materials[0].texture_slots[0].texture.image
image.filepath = '//myfile.png'

# None of these work to refresh the image
image.update ()
image.reload ()
bpy.ops.image.reload()

【问题讨论】:

    标签: python image blender


    【解决方案1】:

    bpy.data.images['your_image'].reload() 实际上确实会从磁盘重新加载图像,但是要让搅拌机更新屏幕上的像素,您需要在视口(图像编辑器和 3d 视图等)中进行更新。

    导致更新的一种方法是循环遍历区域,如果 area.type 是“IMAGE_EDITOR”或“VIEW_3D”(或其他一些必需的类型),您可以使用 .tag_redraw()

    类似:

    for area in bpy.context.screen.areas:
        if area.type in ['IMAGE_EDITOR', 'VIEW_3D']:
            area.tag_redraw()
    

    【讨论】:

      猜你喜欢
      • 2011-03-18
      • 2011-10-30
      • 2015-01-11
      • 2013-10-07
      • 2020-02-07
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多