スポンサーリンク

Blender CyclesのTextureノードをVrayに変換

このように、CyclesでImage Textureノードを追加し、画像を設定した上でノードを選択状態にしておき、スクリプトを走らせると、

Vrayのノードとして追加される。

ソースコード

import bpy

# vray for blenderに必要
from vb30.lib import LibUtils
from vb30.lib import BlenderUtils
from vb30.nodes import tree_defaults

# 選択したノードを取得する
# Cycles側でImageTextureノードを特定するコードを書いても良いが
# ImageTextureノードを追加して選択した上でこれを呼び出した方が多分単純なのでこれを使う
# CyclesのImage Textureノードを取得できれば何でも良い
def get_selected_node(material):
    node_tree = material.node_tree    
    sel = [x for x in node_tree.nodes if x.select]
    return sel[0]
# 追加した Vray ノードを接続する
# _VrayImageNode は _vrayNodeTree から探すこともできるけれど
# せっかく特定できているので引数で渡す
def connect_image_and_material(_vrayNodeTree,_VrayImageNode):

    # vrayのStandard Materiahを取得。デフォルトで存在しているはず
    matStandard = None
    for v in _vrayNodeTree.nodes:
        if v.name == 'Standard Material':
            matStandard = v

    vstand = matStandard
    vstand.location.x = -250
    vstand.location.y = 0

    vtex = _VrayImageNode
    vtex.location.x = vstand.location.x - vstand.width - 50
    vtex.location.y = 0

    # ノードを接続
    _vrayNodeTree.links.new( 
        vtex.outputs['Color'] , 
        vstand.inputs['Diffuse'] 
    )
# マテリアルからImage Textureノードを特定し、Vrayのノードを追加する
def set_vray_image_node(mat):
    
    # Image Textureノードがマウスで選択されている事が前提
    CyclesNode = get_selected_node(mat)
    
    # Vrayに切り替え
    bpy.context.scene.render.engine = "VRAY_RENDER_RT"
    
    # vray用のマテリアル追加
    tree_defaults.AddMaterialNodeTree(mat)
    mat.vray.ntree.name = mat.name + '-vray'

    # vrayのテクスチャノード追加
    VrayImageNode = mat.vray.ntree.nodes.new(type='VRayNodeMetaImageTexture')
    
    # vrayのテクスチャノードにテクスチャを指定。
    VrayImageNode.texture.image = bpy.data.images[CyclesNode.image.name]
    
    # ノードを繋ぎレンダリングできるようにする
    connect_image_and_material(mat.vray.ntree,VrayImageNode)
    

material = bpy.data.materials['Material']

set_vray_image_node(material)

結果

使用画像

https://pixabay.com/ja/illustrations/%E8%8A%B1-%E8%8F%8A-%E5%9B%BD%E5%A2%83-%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%89%E7%AE%94-5625951/

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: