記事の概要
HDRI(High Dynamic Range Image)はHDR画像とも呼ばれ、パノラマ画像や複数画像をもとに作成することが可能。Blenderなどの3Dソフトに取り込むことで環境テクスチャとして使用し、3Dシーン全体の照明をリアルに再現することが可能。
今回は画像生成AIを使って、パノラマ画像を生成し、Blenderに表示するまでを手順化します。
■パノラマ画像
■Blender出力イメージ①
■Blender出力イメージ②
※注意:前提として、この手順でBlenderに取り込むデータは、3Dモデルではないので、「操作性の悪さ」や「思ったのと違う感」があると思います。(視点しか動かせないので)
環境
OS:Windows 11
Blender:4.2.1
手順
パノラマ生成
今回はDALL-E3を使ってパノラマ風画像を生成する。
まずは、作成したパノラマのイメージを普通の画像で作成してもらう。
以下の趣旨を踏まえて、パノラマ風の画像を作成する。
・パノラマ画像 or 360度カメラで撮った画像
・(地面に立っているようにみたい場合は)人の目線
出力する画像のダウンロードボタンを押し、webp拡張子の画像ファイルをダウンロード。
画像の解像度改善(この手順は任意)
以下のページで解像度を上げることができるので、設定値のような設定で画像の解像度を上げる。
■設定値
HDR画像に変換
以下のページで画像ファイル(png/jpeg/webpで可能であることを確認済み)をHDR画像ファイルに変換する。
以下のページに繊維する。
「ファイルを選ぶ」からファイルを選択する。
プルダウンを選択して、「HDR」を選択する。
「変換」を押下する。
変換が完了したら、「ダウンロード」を押下する。
「HDR」ファイルがダウンロードされている。
Blenderへの取り込み
Blenderがインストールされていない場合は、以下からソフトをダウンロードしてください。
Blenderが起動できるようになったら、Blenderを起動する。
ここから「Scripting」に移動する。
以下の画面が表示されるので、「New」を押下する。
テキストエディタモードになっていることを確認する。
「hdr_path」の値だけHDR画像ファイルのパスに修正し、以下のスクリプトをテキストエディタに貼り付ける。
import bpy
import os
def import_hdr_as_world_texture(hdr_path):
# 新しいワールドを作成
world = bpy.data.worlds.new("HDR World")
bpy.context.scene.world = world
# ワールドのノードを使用可能に設定
world.use_nodes = True
nodes = world.node_tree.nodes
# 既存のノードをクリア
for node in nodes:
nodes.remove(node)
# 環境テクスチャノードを作成
env_tex = nodes.new(type='ShaderNodeTexEnvironment')
env_tex.location = (-300, 300)
# HDR画像をロード
env_tex.image = bpy.data.images.load(hdr_path)
# バックグラウンドノードを作成
background = nodes.new(type='ShaderNodeBackground')
background.location = (0, 300)
# ワールドアウトプットノードを作成
output = nodes.new(type='ShaderNodeOutputWorld')
output.location = (300, 300)
# ノードをリンク
links = world.node_tree.links
links.new(env_tex.outputs["Color"], background.inputs["Color"])
links.new(background.outputs["Background"], output.inputs["Surface"])
def main():
# HDRファイルのパス
hdr_path = r"C:\Users\XXXXXXXX\AAAAA.hdr"
# ファイルが存在するか確認
if not os.path.exists(hdr_path):
print(f"エラー: 指定されたパス '{hdr_path}' にHDRファイルが見つかりません。")
return
# HDRをインポートして世界の背景として設定
import_hdr_as_world_texture(hdr_path)
print(f"HDRファイル '{os.path.basename(hdr_path)}' が正常にインポートされ、ワールドの背景として設定されました。")
if __name__ == "__main__":
main()
スクリプトを貼り付けできたら、再生ボタンを押下する。
「bpy.ops.text.run_script()」と表示されていることを確認する。
「Layout」タブに移動する。
このアイコンを選択する。
HDR画像がBlender上に表示される。
この座標みたいなのを左クリック長押しでマウスを移動させると、視点が動かせます。(むしろ視点しか動かせません。)
DALL-E3の作成したパノラマの質次第で、切れ目ができたり、歪んだりします。
VRMのモデルとかをインポートしてimg2imgには使えるかも
とりあえず、試作だけしてみた。
Blenderでアニメーション出力。
AnimateDiffでアニメ化。