【Blender】環境テクスチャの適用方法と操作を徹底解説 | Vook(ヴック)
2番
3番
import bpy
# 画像ファイルの番号(1から7の範囲で指定)
choice = 1 # 例: 1を選択するとRGBカラーが適用される
# 背景の強度を設定
background_strength = 2.0
# パラメータとして指定するRGB値
rgb_values = (133, 222, 56)
# RGB値を0.0から1.0の範囲に変換
rgb_color = tuple(value / 255.0 for value in rgb_values)
# RGBA形式(アルファは1.0)
rgba_color = (*rgb_color, 1.0)
# 2: 浜辺 https://ambientcg.com/view?id=DaySkyHDRI029A
# 3: 庭 https://ambientcg.com/view?id=DayEnvironmentHDRI004
# 4: 日の出 https://ambientcg.com/view?id=MorningSkyHDRI002A
# HDRIファイルのパスリスト
hdri_paths = [
r"C:\2024_python\output\HDRi2024\DaySkyHDRI029A_4K-HDR.exr",
r"C:\2024_python\output\HDRi2024\EveningHDRI030A_4K-HDR.exr",
r"C:\2024_python\output\HDRi2024\NightSkyHDRI031A_4K-HDR.exr",
r"C:\2024_python\output\HDRi2024\SunsetHDRI032A_4K-HDR.exr",
r"C:\2024_python\output\HDRi2024\OvercastHDRI033A_4K-HDR.exr",
r"C:\2024_python\output\HDRi2024\ForestHDRI034A_4K-HDR.exr",
]
# 現在のワールドを取得
world = bpy.context.scene.world
# ノードシステムを有効化
world.use_nodes = True
# ノードツリーを取得
node_tree = world.node_tree
# 既存の背景ノードを削除
for node in node_tree.nodes:
if node.type == 'BACKGROUND' or node.type == 'TEX_ENVIRONMENT':
node_tree.nodes.remove(node)
# ワールド出力ノードを取得または作成
output_node = None
for node in node_tree.nodes:
if node.type == 'OUTPUT_WORLD':
output_node = node
break
if output_node is None:
output_node = node_tree.nodes.new(type='ShaderNodeOutputWorld')
# 選択番号に基づいて処理を分岐
if choice == 1:
# 番号が1の場合はRGBカラーを背景に設定
bg_node = node_tree.nodes.new(type='ShaderNodeBackground')
bg_node.inputs['Color'].default_value = rgba_color
bg_node.inputs['Strength'].default_value = background_strength
node_tree.links.new(bg_node.outputs['Background'], output_node.inputs['Surface'])
else:
# 番号が2から7の場合はHDRI画像を背景に設定
hdri_path = hdri_paths[choice - 2] # 配列インデックスは0から始まるため、choice - 2
env_node = node_tree.nodes.new(type='ShaderNodeTexEnvironment')
env_node.image = bpy.data.images.load(hdri_path)
bg_node = node_tree.nodes.new(type='ShaderNodeBackground')
bg_node.inputs['Strength'].default_value = background_strength
node_tree.links.new(env_node.outputs['Color'], bg_node.inputs['Color'])
node_tree.links.new(bg_node.outputs['Background'], output_node.inputs['Surface'])
# ノードツリーを更新して3Dビューに反映
bpy.context.view_layer.update()