2017-07-25 1 views
2

どのようにして私のPythonスクリプトは、イメージノードで現在選択されているイメージの名前のテキスト文字列を取得できますか?私は、カスタムノードラベルを使用する権利はあると思いますが、メソッドを記述するスニペットは見つかりません。Blender Compositor Imageの取得方法ノード選択されたイメージ名?

Image

可能な場合、スクリプトは、ない任意のノードが選択された場合でも、全体的に働かなければなりません。

+0

を追加だから、NodeTreeまたはNodeSocketの画像ノードを選択し、ファイル名を取得したいですか? –

答えて

0

希望、これはあなたを支援します。

nodes = material_slot.material.node_tree.nodes 
    texture_node = nodes.get('Image Texture') 


    if texture_node is None: 
     texture_node = nodes.new(type='ShaderNodeTexImage') 
     #texture_node.image = image 

    # Get the image name 
    texture_name = texture_node.image.name 
    # Set the node name/label to image name 
    texture_node.name = texture_name 
    texture_node.label = texture_name 

既存のノードを取得したいが、あなたは、複数のテクスチャノードを持っている場合、あなたはおそらくトラフすべてのノードを反復処理し、すべてのタイプのノード「TEX_IMAGE」とのセットを見つけることができます名前

編集:私はあなただけの絵を追加見ている、とあなたはテクスチャで作業していない 、その 同じ原理について申し訳ありませんが、上記のように画像のノードのために行く

かかわらず0
+1

ありがとう、それはちょうど私が必要なものです - あなたの編集で: bpy.data.scenes ['Scene']。node_tree.nodes ['Image']。image.name – maxdudik

+0

うれしかった!私は、プログラム名でノードの名前をイメージ名に変更したいと思っていました。なぜ、どのノードをターゲットにしたいのか分かっていれば、簡単です! –

0

コンポジターノードはbpy.context.scene.node_tree.nodesにあります。次にループバックして、タイプがIMAGEであるかどうかを確認します。

import bpy 
for n in bpy.context.scene.node_tree.nodes: 
    if n.type == 'IMAGE': 
     # check that there is an image selected 
     if n.image is not None: 
      print(n.image.name) 

だけ選択されている画像ノードをしたい場合は、if n.select:

関連する問題