【Txt/Img To 3D Model】テキストや画像から3Dモデルを生成する拡張機能【Stable Diffusion】

こんにちは!悠です!

 

今回は「Stable Diffusion」で、テキストや画像から3Dモデルを生成できる拡張機能「Txt/Img To 3D Model」を紹介します。

Open AIの「Shape-E」というモデルを利用して3Dモデルの生成を行うようですね。

GitHub - openai/shap-e: Generate 3D objects conditioned on text or images
Generate 3D objects conditioned on text or images. Contribute to openai/shap-e development by creating an account on GitHub.

 

あまりにも複雑な3Dモデルを作り上げることはできませんが、新技術の1つとして非常に興味深い拡張機能なのでぜひ遊んでみて下さい!

VRAM6GBのGTX1660Tiでも問題なく利用できました。

 

アイキャッチ画像はモデルに「LinexDiffusion」、LoRAに「flat2」を使用しています。
スポンサーリンク
スポンサーリンク

「Txt/Img To 3D Model」の使い方

GitHub - jtydhr88/sd-webui-txt-img-to-3d-model: A custom extension for sd-webui that allow you to generate 3D model from txt or image, basing on OpenAI Shap-E.
A custom extension for sd-webui that allow you to generate 3D model from txt or image, basing on OpenAI Shap-E. - GitHub - jtydhr88/sd-webui-txt-img-to-3d-model...

 

Google Colaboratory版の場合

下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「sd-webui-txt-img-to-3d-model」を導入していきます。

まだご覧になっていない方は、まず最初にこちらを準備しておいてください。

【Stable Diffusion】AUTOMATIC1111のWebUIをGoogle Colaboratory上で使う方法!【maintained by Akaibu】
「Stable Diffusion」で、「AUTOMATIC1111」が用意しているノートブック「maintained by Akaibu」を使って、Google Colaboratory上で自分の好きなモデルデータやLoRAを使用する方法についてまとめた記事です。
【Stable Diffusion】AUTOMATIC1111のColab版でLoRAを使う方法について紹介!【maintained by Akaibu】
AUTOMATIC1111のColab版「maintained by Akaibu」でLoRAを使う方法についてまとめた記事です。2.5D風AIコスプレイヤーを作成できる「KoreanStyle2.5D」も紹介しています。

 

Google Driveからモデルデータを読み込むセルの下に新しくセルを作成し、下記のコードを入力してください。

#sd-webui-txt-img-to-3d-modelをインストール
%cd /content/stable-diffusion-webui/extensions/
!git clone https://github.com/jtydhr88/sd-webui-txt-img-to-3d-model /content/stable-diffusion-webui/extensions/sd-webui-txt-img-to-3d-model

%cd /content/stable-diffusion-webui

 

ローカル版の場合

「Extensions」→「Install from URL」の「URL for extension’s git repository」に下記のURLを入力しInstallをクリックしましょう。

https://github.com/jtydhr88/sd-webui-txt-img-to-3d-model

 

 

WebUIを起動して、「Txt/Img to 3D Model」のタブが追加されていれば導入完了です。



「Txt/Img To 3D Model」の使い方

まず「Txt/Img to 3D Model」のタブを開きます。

 

テキストから3Dモデルを生成したい場合は、Modeをtxtにし、Promptの欄に生成したいものを入力してください。

 

画像から3Dモデルを生成したい場合は、Modeをimgにし、画像をアップロードします。この際プロンプトを入力する必要はありません。

他の設定に関しては、バッチサイズを1にするくらいで基本的にデフォルトのままでいいと思います。Karras Stepsが作成時のステップ数になるようですね。

 

送信と書かれたボタンをクリックすると3Dモデルの生成が始まります。初回のみShape-Eのモデル(合計3.69GB)が自動的にダウンロードされます。

 

ダウンロードしたモデルは「~\webui\shap_e_model_cache」に保存されます。

 

試しにプロンプトにflowerと指定して3Dモデルを生成すると次のようになりました。

 

生成したモデルはobj形式で、「~\webui\extensions\sd-webui-txt-img-to-3d-model\outputs」に保存されます。

 

まとめ

以上が「Stable Diffusion」で、テキストや画像から3Dモデルを生成できる拡張機能「Txt/Img to 3D Model」の紹介でした。

この技術が進化していけば、いつかVtuberのモデルですらプロンプトで生成できるようになったりするんでしょうか?

これからに期待していきたいですね!

 

では、ここまで読んでいただきありがとうございました。

コメント

  1. より:

    こんばんは。何時も参考にさせて頂いております。記事の内容に関係が無く、恐縮ですが質問させてください。
    突然に「PNG内の情報を表示」から「○○に転送」でプロンプト等の生成情報が転送されなくなってしまいました。140枚程前の物は問題無く転送されています。画像生成自体には問題有りません。
    File “F:\SD\webui\stable-diffusion-webui\venv\lib\site-packages\gradio\routes.py”, line 422, in run_predict
    output = await app.get_blocks().process_api(
    File “F:\SD\webui\stable-diffusion-webui\venv\lib\site-packages\gradio\blocks.py”, line 1323, in process_api
    result = await self.call_function(
    File “F:\SD\webui\stable-diffusion-webui\venv\lib\site-packages\gradio\blocks.py”, line 1051, in call_function
    prediction = await anyio.to_thread.run_sync(
    File “F:\SD\webui\stable-diffusion-webui\venv\lib\site-packages\anyio\to_thread.py”, line 31, in run_sync
    return await get_asynclib().run_sync_in_worker_thread(
    File “F:\SD\webui\stable-diffusion-webui\venv\lib\site-packages\anyio\_backends\_asyncio.py”, line 937, in run_sync_in_worker_thread
    return await future
    File “F:\SD\webui\stable-diffusion-webui\venv\lib\site-packages\anyio\_backends\_asyncio.py”, line 867, in run
    result = context.run(func, *args)
    File “F:\SD\webui\stable-diffusion-webui\modules\generation_parameters_copypaste.py”, line 379, in paste_func
    v = key(params)
    File “F:\SD\webui\stable-diffusion-webui\modules\generation_parameters_copypaste.py”, line 414, in paste_settings
    v = shared.opts.cast_value(setting_name, v)
    File “F:\SD\webui\stable-diffusion-webui\modules\shared.py”, line 692, in cast_value
    value = expected_type(value)
    ValueError: invalid literal for int() with base 10: ‘1.5’
    このようなメッセージが表示されます。
    何かご存じでしたらお教えください。よろしくお願い致します。

    • 悠 より:

      コメントありがとうございます!

      Pnginfoで読み込んだ画像にどのようなプロンプトを使っていますでしょうか?

      おそらく入力したプロンプト内に読み込めない形式のものがあって、それが原因で上手くメタデータを反映出来ていない気がします。
      ValueError: invalid literal for int() with base 10: ‘1.5’

      から1.5という部分が特に怪しいのですが、何か思い当たる点はありませんでしょうか?

      ちなみに転送ができないだけで、pnginfoタブにメタデータ自体は表示されるのでしょうか?

      • より:

        返信ありがとうございます。
        生成情報を見ていたところ、Negative Guidance minimum sigmaの設定値が1.5になっておりました。
        1か2で設定したところ転送することが出来ました。整数でなければダメなようです。
        1.5とは何ぞや?という感じだったので、ご指摘頂き気づくことができました。
        ありがとうございました。