
【3D】Stable Projectorzで3D人物の顔テクスチャを作る【ローカルAI】
はじめに
この記事では、Stable Projectorzを利用して、頭部3DモデルのテクスチャをAIで生成する方法を紹介します。Stable Projectorzは、すべてローカルで動作する無料のAIソフトウェアです。
※ 付録の有料欄では、この記事で利用した3D頭部モデルのobjファイルをダウンロードできます。この頭部モデルは、下記3Dモデルの頭部だけのメッシュを取り出したものです。すでに購入頂いた方であれば、頭部メッシュだけをexportしてください。
ただし、通常のexportだとStableProjectorzで読み込んだ時に面法線が逆になってしまったので、面を反転させた事と、目にもペイントできるように面を貼っています。増やした面のuv展開の重なりにも注意してください。
Stable Projectorzとは
公式ページはこちら、
Stable Diffusion (webUI forge)をバックエンドに利用して、3Dメッシュ用のテクスチャを生成します。
必要なパソコンスペック
AI生成バックエンドのStable Diffusion webUI forge上で、SD1.5&ControlNetをゲームエンジンUnityと共に動作させる事になるため、それらが同時に動作するスペックが必要です。
公式ページには、「at least a GTX 1080 or later, + appropriate CPU with at least 12 GB RAM」とありますが、快適に利用するには、16GBのシステムメモリ、RTX&8GB以上のVRAMが必要だと思います。
インストール方法
公式ページの「DOWNLOAD INSTALLER(EXE)」からexeファイルをダウンロードして実行するだけです。
デフォルトでは、ドキュメントフォルダ下に「StableProjectorz」フォルダが作成され、必要なファイルやフォルダが自動でダウンロードされます。
既にStable Diffusion webUI forgeがインストール済みでも、別の新たなwebUI forgeがセットアップされます。データ量節約のためにモデルファイル等を共有したい場合は、シンボリックリンク等で対応する必要があります。
※ シンボリックリンクの作成例(管理者権限でコマンドプロンプト)
先にリンクを作成する側の「models」フォルダ名を「models.bak」などに変更しておきます。
REM 既存のwebUI-forgeのmodelsフォルダへのシンボリックリンクを作成する
mklink /d "C:\Users\usr01\Documents\StableProjectorz\stable-diffusion-webui-forge\webui\models" "C:\SD-WebUI-forge.d\stable-diffusion-webui-forge\models"
デスクトップに作成される「Stable Projectorz」アイコンをダブルクリックして起動します。初回時は各種セットアップが行われるため、時間がかかると思います。
コマンドプロンプトウインドウとStable Diffusion webUI forgeのWebページが自動で開かれますが、閉じずにバックグラウンドで動作させておきます。

Stable Projectorzの基本操作
独特のUIです。中央画面の右下のギアアイコンをクリックするとショートカットが表示されます。

筆者環境では一部一致しないものがありましたが、Remote Desktop環境だからかもしれません。
3D操作の基本
中央のメインウインドウで3Dオブジェクトを操作します。
「Alt+マウスドラッグ」で視点を変更できます。マウスホイールで拡大縮小、「右クリックを押したままWASD」で3Dゲームのような並行移動ができます。これで最低限の操作ができると思います。
3Dモデルの読み込み
※ 付録の有料欄より、本記事で利用する3D頭部モデルをダウンロードできます。


Alt+左クリックで正面に回転させてください。

Stable Diffusionではおなじみの設定項目です。
prompt+
ポジティブプロンプト:生成する対象のプロンプトです
prompt-
ネガティブプロンプト:生成したくない対象のプロンプトです
Model
Stable Diffusionのモデルファイル(チェックポイント)です。※ 筆者が利用しているカスタムモデルの名前が文字化けしています
SD-VAE
VAEを選択します。通常はAutomaticで問題ありません
sampler
ノイズ・サンプラーを選択します。デフォルトで問題ありませんが、一般に、チェックポイント毎におすすめのものが指定されているはずです。
steps
AI生成のステップを指定します。UIが特殊ですが、右にドラッグすると値が増加し、左にドラッグすると減少します。
CFG
高い値ほどプロンプトに忠実になります。通常は4.0〜8.0程度です。
b count/b size
生成する画像の枚数を指定します。b countは一枚ずつ生成します。b sizeは同時に複数の画像を生成します。GPUメモリが少ない場合は、b sizeは1にしてください。
width/height
生成する画像の解像度です。下に並んだ数字はプリセットで割合を表します。例えば「1」で「1024x1024」で「.7」で「768x768」です。
次に、右ウインドウ内のControlNetの設定です。
ControlNetとは、AIネットワークを直接コントロールして、様々な形状や条件に沿うように生成させる事ができる技術です。ここでは「Depth」を利用するため、「model」に「control_v11f1p_sd15_depth」を選択します。

左下の「GEN ART」ボタンで画像生成がはじまります。上部のボタンでワイヤーフレーム表示を切り替えられます。


実際には、3D形状に沿うように正面から投影(Projection)しただけなので、側部などは着色されません。
さまざまな角度から、何度も3Dモデルに投影させてテクスチャリングするのが、Stable Projectorzの基本的な利用方法になります。
実際の作業
それでは典型的なワークフローを紹介します。
複数の角度からAI画像生成
Stable Diffusionでは、同時に作成した対象はコンシステンシーを保ちます。複数人を同時に生成すると、すべて同じ顔になります。
この性質を利用して、Stable Projectorzでは、同時に複数の角度から生成して、別角度の画像データとします。
中央のメイン画面のカメラアイコンのスライダーを上部へ移動すると3Dモデルが複数現れます。

「SORT」や「GRID」ボタンを利用すると多少楽になります。複数の角度がウインドウ画面内にちょうど収まるようにしてください。微調整はマウス左ドラッグで移動、ホイールで拡大縮小できます。


各角度がそれぞれ512x512解像度になるように、生成する解像度は「1024x1024」にします。「GEN ART」で生成します。

b count/b sizeで自動複数生成する事も、ボタンクリックで再生成する事もできます。それなりのものが出来るまで生成を繰り返してください。右ウインドウの「ART」タブには、生成した画像の履歴が表示されます。マウスを画像の上に重ねると、必要のない画像を削除できます。基本的に(後勝ち)レイヤーですので、重みや順番なども調整できます。
各カメラの影響を手動で調整
次に、カメラアイコンの下にある「BLEND CAMS」をクリックすると、モデルが一つになります。

自動である程度合成されているのですが、境界部は崩れてしまいます。カメラアイコンの右部に表示されているのはカメラ番号です。「1」は最初の正面を表します。ツール円の内側には「1」の影響のみが表示されています。
正面は「1」の影響にしたいので、歪んでいる箇所を修正していきます。

「1」カメラの状態で、ブラシサイズ、書き込み、projmaskである事を確認後、歪み部を修正(1にする)する事ができます。

側面なども、カメラ番号を変えて同じ方法で修正していきます。
その他の問題はインペイントで手動修正
次に、細部の問題を解決していきます。

4方向からのカメラでも、死角は出来てしまうので黒くなっています。それらを(colorインペイントで)修正します。

「Alt+左クリック」でスポイトツール・カラッピッカーになります。顎の色に近いものを選び、「color」モードにして顎の黒い部分を塗りつぶします。
基本的に黒部はStable Diffusionでインペイントできないので、何らかの色をつけておく必要があります。

「GEN ART」ボタンの上にマウスを移動すると、インペイントに影響する箇所が強調されます。re-doの値でインペイント強度(Denoising Strength)を調整できます。
「GEN ART」ボタンをクリックするとインペイント処理できます。

通常のインペイントは「no color」モードを利用します。既存の色をベースにインペイントできます。ただし新たにマスクを作る場合は、前回のマスクを削除しておく必要があります。ゴミ箱アイコンを先に押してから新たなマスクを作成します。
同じ事(黒はcolor塗りつぶしインペイント&不自然な箇所はno color通常インペイント)を繰り返して微調整していきます。

保存
プロジェクトの保存は画面左上のアイコンから行います。

テクスチャ保存は「SAVE 2K」より行います。

Blenderで確認

3Dモデル本体を購入頂いた方であれば、作成したテクスチャをそのまま利用できます。
※ 顔と唇が別マテリアルになっているので、両方を変更してください。法線マップがテクスチャと一致しなくなるので、変になる場合は強度を小さくしてください。


まとめ
AIを利用せずに顔のテクスチャを作るのは非常に大変な作業ですし、AIで生成してもそれなりに大変でしたが、Stable Projectorzを利用するとものすごく簡単にできてしまいます。
付録
本記事で利用した頭部の3Dモデルを添付します。記事支援いただける場合はよろしくお願いいたします。参考程度にご利用ください。
※ 【注意】3Dモデル本体を既に購入頂いている方は基本的に必要のないものです。頭部をobjでexportしてください。添付ファイルは法線を反転している事と、目の部分に面を張っている違いしかありません。
(UV情報ありの)メッシュobjファイルです。テクスチャはありません。3Dモデルのライセンスは本体に準じます。
■<利用規約> 利用を開始した時点で、この規約に同意したとします。 ・本モデルと付属素材(以後、素材と表記)を利用して起きた問題に関して作者は一切の責任を負いません。 ・利用者の責任のもとに本素材を自由に改変する事を許可します。 ・本素材を利用したコンテンツで収益を得る事を許可します。ただしそのままの素材として再配布・販売することは改変の有無を問わず禁止とします。 ・収益の有無に関わらず教育目的で本素材を利用する場合は、改変したものを含み、3Dソフトウェア講習会などの教材として講習者への配布と利用を許可します。ただし講習者が不特定多数の場合は禁止とします。また、受講者へ再配布の禁止と私的利用に限る事を周知させてください。 ・犯罪や法律に反する行為に素材を利用する事を禁止します。 ・利用報告やクレジット表記は不要ですが、表記していただくと幸いです(「Catapp Art3D」やショップへのリンク等) ・この利用規約は予告なく変更・改定される事があります。ご了承下さい。 <免責事項> ・素材の利用によって発生したトラブル、損害に対して作者は何ら責任を負いません。 ・内容の変更や販売の中止をする場合がありますが、それによって生じた損害等に対して一切の責任を負いません。
ここから先は
この記事が気に入ったらチップで応援してみませんか?