0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DALL-E3の画像をもとにHDRIを作成してBlenderに取り込み

Posted at

記事の概要

HDRI(High Dynamic Range Image)はHDR画像とも呼ばれ、パノラマ画像や複数画像をもとに作成することが可能。Blenderなどの3Dソフトに取り込むことで環境テクスチャとして使用し、3Dシーン全体の照明をリアルに再現することが可能。

今回は画像生成AIを使って、パノラマ画像を生成し、Blenderに表示するまでを手順化します。

■パノラマ画像

wide3.jpeg

■Blender出力イメージ①

image.png

■Blender出力イメージ②

image.png

※注意:前提として、この手順でBlenderに取り込むデータは、3Dモデルではないので、「操作性の悪さ」や「思ったのと違う感」があると思います。(視点しか動かせないので

環境

OS:Windows 11
Blender:4.2.1

手順

パノラマ生成

今回はDALL-E3を使ってパノラマ風画像を生成する。

まずは、作成したパノラマのイメージを普通の画像で作成してもらう。

image.png

以下の趣旨を踏まえて、パノラマ風の画像を作成する。
・パノラマ画像 or 360度カメラで撮った画像
・(地面に立っているようにみたい場合は)人の目線

image.png

出力する画像のダウンロードボタンを押し、webp拡張子の画像ファイルをダウンロード。

image.png

画像の解像度改善(この手順は任意)

以下のページで解像度を上げることができるので、設定値のような設定で画像の解像度を上げる。

■設定値

image.png

HDR画像に変換

以下のページで画像ファイル(png/jpeg/webpで可能であることを確認済み)をHDR画像ファイルに変換する。

以下のページに繊維する。

image.png

「ファイルを選ぶ」からファイルを選択する。

image.png

プルダウンを選択して、「HDR」を選択する。

image.png

「変換」を押下する。

image.png

変換が完了したら、「ダウンロード」を押下する。

image.png

「HDR」ファイルがダウンロードされている。

image.png

Blenderへの取り込み

Blenderがインストールされていない場合は、以下からソフトをダウンロードしてください。

Blenderが起動できるようになったら、Blenderを起動する。

image.png

ここから「Scripting」に移動する。

image.png

以下の画面が表示されるので、「New」を押下する。

image.png

テキストエディタモードになっていることを確認する。

image.png

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

スクリプトを貼り付けできたら、再生ボタンを押下する。

image.png

「bpy.ops.text.run_script()」と表示されていることを確認する。

image.png

「Layout」タブに移動する。

image.png

このアイコンを選択する。

image.png

HDR画像がBlender上に表示される。

image.png

この座標みたいなのを左クリック長押しでマウスを移動させると、視点が動かせます。(むしろ視点しか動かせません。)

image.png

DALL-E3の作成したパノラマの質次第で、切れ目ができたり、歪んだりします。

image.png

VRMのモデルとかをインポートしてimg2imgには使えるかも

とりあえず、試作だけしてみた。

Blenderでアニメーション出力。

AnimateDiffでアニメ化。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?