「3D openpose」の使った棒人間からの画像生成方法

「3D openpose」の使った棒人間からの画像生成方法 AI/Stable Diffusion

StableDiffusion でキャラクターの絵を描く時に、スポーツの最中の写真のような絵を描きたい場合、それに合わせて絵を出力するのは難しいです。

それをデッサン人形で形作って、それ通りに出力できると簡単ですよね。

今回はそんな棒人間でキャラの動きを表現してから、それに合わせた絵の出力を行います。

特に走っていたり何か動いている最中だと、それを平面的な絵から作成するのは初心者には難しいので、是非この三次元で棒人間を描ける「3D openpose」を使ってみてください。

結果

・3次元で棒人間を生成するため、通常のOpenposeよりも躍動感のある素体が作れる

・生成する絵のサイズが小さいとうまく反映されないことがある

・同時に保存出来るdepthなどを並用すると手足の崩れが少ない絵を出力出来る

この記事を読むと

三次元の棒人間を生成することができ、その構図に合わせた画像を生成することが出来るようになります。

※記事内に広告が含まれています。

「3D openpose」とは?

「3D openpose」の機能は、openposeで棒人間を書く機能を、三次元的に描画することが可能になった拡張機能です。

openposeでは二次元的に棒人間の関節を動かすだけだったので、奥行を持った絵を描くのは難しいです。

それに対して構図以外にも画角も決めれるのが3D openposeの良い点です。

3Dツールを使用するため、触り始めるハードルが高いかもしれませんが、ほとんどマウス操作だけ行えるので触り始めると簡単に弄ることが出来ます

「3D openpose」のインストール

1.「Extensions」タブからAvailableを開きます。

2.「Load from」ボタンを押して、拡張機能リストを表示します。

3.拡張機能リストの中から「3D Openpose Editor」を選択し、「Install」ボタンを押します。

4.「Apply and restart UI」 ボタンをクリックして適用して再起動します。

再起動後に「3D Openpose」タブが表示されていれば準備完了です。

【検証】実際に線画から描いてみた

棒人間を3D Editorで作成後、それを元に画像を生成していきます。

「3D openpose」棒人間の準備

絵を描くための棒人間を3D Editorで作成していきます。

 

1.動かしたい関節を左クリックします。

2.出てきた移動用の球の線をクリックします。

3.ドラッグしたまま動かして関節に連なる人体を動かします。

関節部分の球は4色程度に、球の中で線が色分けされます。

色ごとに縦横奥行など各方向に動かすための線なので、向かせたい方向に動かします。

各操作は下記になります。

動作挙動
左クリック
(関節上)
その関節をどう動かすかを決めるための、
回転球の表示
右クリック
(ボーン上)
ショートカットメニュー表示
左クリックしながらマウス移動視点の回転
右クリックしながらマウス移動上下左右の移動
ホイールアクション画面の拡大縮小

今回は走っている最中をイメージして作成していきます。

5分程度で作成してみましたが、そんなに悪くはないのではないでしょうか?

マラソンのゴール直前などを描きたい時は、もっと体を前傾させてみてもいいかもしれません。

 

実際にこの構図で出力していきますが、一点注意しなくてはならないことがあります。

それは生成される画像は右下赤枠の、黒い背景の画像が出力されるということです。

そのため、頑張って手足を良い感じの角度に変更しても、拡大して上半身しか映っていないと、足の構図を描くことが出来ません。

そのため全身を描きたい場合は、下記のように全身が映るようにしてください。

また生成する画像のサイズが、最終的に作成する画像と同じになるように設定してください。

構図の準備が出来たら、画面上の「生成する」を押します。

すると右下に、棒人間と手足がdepth,normal,cannyが出力されます。

それぞれの画像をクリックして画像をダウンロードします。

「Send to ControlNet」タブで、各々の出力を各ControlNetへ送ることが出来ますが、ControlNetのVerが「3D Openpose Editor」とあっていないとうまく反映されません。

その場合は手動で反映させれば、問題ありません。

「3D openpose」ControlNetの準備

「img2img」で作成すると元の絵に影響を受けてしまうので、元絵がない場合は「txt2img」の方が良いかもしれません。

プロンプトやmethodの準備が出来たら、ControlNetで下記の設定を行います。

また先ほど生成した棒人間をimageに読み込ませます。

対象選択
ControlTypeAll or Openpose
PreprocessorNone
Modelcontrol_openpose-fp16

「Control Weight」はControlNETの寄与度を決める値なのですが、1のままだと今回選択した棒人間の画像にリソースを割きすぎてしまい、他が上手く描かれない可能性があります。

0.5ぐらいから初めて徐々に上げてみると良いでしょう。

生成してみて上手く棒人間と同じ構図にならなければControl Modeを「ControlNet is more important」に変更してみましょう。

またプロンプトに作った構図に関する記述があるか確認しましょう。

全て準備できたら「generate」ボタンで画像を生成します。

出力結果

上記の3Dを使用して、下記の画像を出力してみました。

3D Editorで出した棒人間の画角とは若干ずれていますが、走っている様子が分かる画像が出力されました。

プロンプトとControl Weightによって、理想の画像にすることが出来ますので、是非色々と試してみてください。

また同時に保存出来るdepthなどを並用することで、手足の変形を防ぐことが出来ますが、画像のサイズが小さいとうまくいかないで注意してください。

反省点

成功した点

1.躍動感のある画像を出力できた

走っている様子が、手足の向きが違和感なく出力できたのは良い点でした。

失敗した点

1.各値の理想値を見つけられなかった。

プロンプトとControlNetの兼ね合いが難しく、うまく人の形に生成できない画像も多かったです。

2.出力サイズが小さかった。

全体的に1024×1024ぐらいで生成した方が、手足の造形含めて良かったかもしれないです。

3.棒人間をもう少し引き気味で出力した方が、背景を色々と変えられたかも。

背景に対して人の割合を下げた方が、ノイズの除去が良い感じに働くかもしれません。もう少し検証が必要な部分です。

OpenPoseと3D OpenPoseの比較

OpenPoseと3D OpenPoseでどちらを使用するとよいか、結果に差異があるか等は下記ブログにまとめてありますので、良ければご覧ください。

まとめ

今回は『3D openpose』を使用して、棒人間から絵を描く方法について紹介しました。

改めて3行でまとめると…

・3次元で棒人間を生成するため、通常のOpenposeよりも躍動感のある素体が作れる

・生成する絵のサイズが小さいとうまく反映されないことがある

・同時に保存出来るdepthなどを並用すると手足の崩れが少ない絵を出力出来る

手足の向きや位置の微妙な調整を、口頭で上手く伝えられる人は少ないです。

現実でも写真撮る時など中々難しいですよね。

そんな時に3D Openposeを使用することで、手軽にキャラの構図を決めることが出来ます。

是非この機能を使って、プロンプトだけでは再現出来なかった様々な構図の絵をたくさん描いてみて下さい!

コメント

タイトルとURLをコピーしました