こんにちは!悠です!
今回は「Stable Diffusion」で、テキストや画像から3Dモデルを生成できる拡張機能「Txt/Img To 3D Model」を紹介します。
Open AIの「Shape-E」というモデルを利用して3Dモデルの生成を行うようですね。
あまりにも複雑な3Dモデルを作り上げることはできませんが、新技術の1つとして非常に興味深い拡張機能なのでぜひ遊んでみて下さい!

VRAM6GBのGTX1660Tiでも問題なく利用できました。
「Txt/Img To 3D Model」の使い方
Google Colaboratory版の場合
下記の方法で紹介している「maintained by Akaibu」のノートブックを使って、拡張機能「sd-webui-txt-img-to-3d-model」を導入していきます。
まだご覧になっていない方は、まず最初にこちらを準備しておいてください。


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のモデルですらプロンプトで生成できるようになったりするんでしょうか?

これからに期待していきたいですね!
では、ここまで読んでいただきありがとうございました。
コメント
こんばんは。何時も参考にさせて頂いております。記事の内容に関係が無く、恐縮ですが質問させてください。
突然に「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とは何ぞや?という感じだったので、ご指摘頂き気づくことができました。
ありがとうございました。