2012-04-30 5 views
2

Ubuntu 12.04でPythonスクリプトを使用してBlender 2.63のUVテクスチャイメージを更新しています。 Imageオブジェクトのファイルパスプロパティを設定できますが、イメージは更新されません。私はimageオブジェクトのupdate()とreload()のメンバーを成功裏に呼び出すことを試みました。 GUIからリロードボタンをクリックすると、イメージが期待通りにリフレッシュされます。 GUIのリロードボタンにカーソルを合わせると、bpy.ops.image.reload()が使用されます。しかし、私はそれを呼び出すと、CANCELED状態を返します。これは、bpy.contextモジュールで画像オブジェクトを選択する方法がいくつか存在するためだと思います。これはバグでしょうか?以下Blender UVテクスチャイメージがPython APIで更新されない

関連するコード:

# 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() 

答えて

2

bpy.data.images['your_image'].reload() はないInfactは、ディスクからイメージをリロードするが、ブレンダーが画面上のピクセルを更新するためにあなたは、ビューポート内の更新(イメージエディタと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() 
関連する問題