こんにちは。AaaS Tech Labの小山田です。
最近、
Midjourney
[1] というText to Image系のサービスを使って、画像生成を試していたところ、はっきりと人(人型キャラクター)の顔や全身が生成できて驚きました。
個人的にはキャラクター等の世界観/雰囲気をイラスト化したようなコンセプトデザインを制作などで、なんらか使い道があるのではないかという気にすらなっています。
そんな中、せっかくキャラクターのコンセプト画らしいものを生成できるのであれば、どうにか3Dモデル化し、簡易的にでもキャラクターを動かせたら感動するのでは?と思い立ちました。
といっても、キャラクターを正面から描いたような生成画像が与えられたところで、3Dモデリングやキャラクターデザインの経験がない私では、コンセプト画から3Dモデルを制作することはできません。
そこで今回は、コンセプト画の制作から3Dモデリングへ至るまでに、CG系エンジニアやデザイナーではない小山田が、AIの力を借りて挑戦していきます。また、せっかく3Dモデリングまでやるのであれば動いてほしいので、外部ツールなどを活用し、キャラクターをアニメーションさせるところまで実験してみます。
処理の流れ
多段階的に複数の技術を活用するので、最初に処理の流れをまとめておきます。
1. Disco Diffusion
[2] を活用し、キャラクターのコンセプト画を生成
2. PIFu
[3] を活用し、キャラクターを3Dモデル化
3. Blenderを使い、3Dモデルにテクスチャを貼る
4. Mixamo
[4] を使い、リギングとアニメーションをつける
※今回はあえてMidjourneyやPIFuHD
[5] ではなく、オープンソースで商用利用等も可能なDisco DiffusionとPIFuを使って挑戦しました。
Step 1 : キャラクターのコンセプト画を生成する
ではまず最初に、Disco Diffusionを使ってキャラクター画像を生成していきます。 今回は、最近「イノセンス」という攻殻機動隊関連の映画や「パプリカ」という映画を見返したので、東洋的な雰囲気とレトロなSFらしい雰囲気を併せ持ったキャラクターが作れないかと考えました。 色々試行錯誤したのですが、着物とガスマスクをモチーフ的に使うと分かりやすいかなと思い、下記のText Promptを設定しました。 Lady with gas mask, Katsuhiro Otomo, Satoshi Kon. Kimono, Koji Morimoto. またDisco Diffusionの場合、なかなかテキストをインプットするだけでは意図してキャラクターの全身が写った立ち絵を生成させるのは難しいため、今回は下記の画像もテキストと一緒にInputしました。
フリーの画像素材を適当に組み合わせたのですが、我ながらなかなかのクソコラ画像だとは思います…。しかし、パラメータの設定次第で良い感じに処理されるのでこのまま進めました。 実際に生成されたキャラクターが下記です。
かなり雑に合成していたガスマスクと人物が、良い感じに混ざり合っています。 また、実写からInput画像は作られましたが、Text Promptの影響かアニメーションキャラクターらしいタッチの絵になっていることが分かります。 ちなみに、この他に生成した画像もお見せすると下記です。
後段の3Dモデル化やアニメーションを考えると、正直青い浴衣を着たようなキャラクターのように正面を向いていて、腕が胴体から明確に離れている画像の方が適しています。ただ、今回は黄色っぽいキャラクターの方が気に入ったので、そちらを使っていきます。
Step2: キャラクターを3Dモデル化する
ここまででキャラクターのコンセプト画までは作れたので、3Dモデル化に入っていきます。 ここではPIFuを使うこと、この後でアニメーションさせること、を考えて生成画像を下記のように修正しました。
修正内容は 背景に写っていたノイズっぽいものを削除 脚を分離し、ワイドパンツのような形状に変更 キャラクターが正面を向いているように補正 キャラクター部分のみをマスクした画像(上記画像の右)を作成 です。 脚は明確に離れていないとアニメーション部分で不都合なので、雑ですが分離させました。また、キャラクターが斜めを向いているのも不都合なので、Photoshopのパペットワープ機能を使って補正しています。 脚の修正や、正面を向かせる補正は、Text to Image系モデルにInputする画像段階で適切なものを選ぶなどの工夫次第で省けるケースもあります。 マスク画像はPIFuのInputとして必要なものです。 そうして作られた上記画像からPIFuで生成された3Dモデルが下記です。
VIDEO
1枚の画像しかInputしていないことを考えると、それらしく生成できたのでは?と思います。 余談ですが、個人的にPIFuHDを使用したときよりも、PIFu の方が3Dオブジェクトとして成立したものを生成しやすい気がしました。PIFuHDの方が布のシワ感みたいな部分といった細部の再現度は高い気がしますが、キャラクター画像のようなものをInputすると破綻しがち(体の半身が生成されないなど)な印象です。(おそらく公開されている学習済みモデルでは実写の人物画像しか学習していないはずなので仕方ない話ですし、Inputする画像次第ではうまく生成できるケースもあります。)一方で、PIFuは細部の再現精度は少し低いように思えますが、破綻しづらい気がします。
Step3: 3Dモデルにテクスチャを貼る
ここではBlenderを使って、生成された3Dモデルにテクスチャを貼っていきます。 といっても、PIFuでは頂点カラーの推定まで行われているのでテクスチャを貼り直さなくても色味などまで付いています。ただ今回は背面が少しグチャグチャした印象になっていたり、テクスチャを貼り直した方が、都合が良かったので修正しました。 ちなみにPIFuで付与される色はあくまで頂点カラーであって、テクスチャではないので、シンプルにBlenderなどで読み込んでも真っ白なモデルになるのでご注意ください。 テクスチャを貼った結果が以下です。元々の3Dモデルの色を簡単に確認する為にMeshLabを使いました。
上段がPIFuで生成した3Dモデル、下段がそこにテクスチャを貼り直したものです。 当たり前かもしれませんが、明らかにテクスチャを貼った方が綺麗に見えます。 正面からの画像しかないなので、背面のテクスチャは正面の画像を使い回しつつ、後頭部や首の裏・肩甲骨あたりに相当する部分は画像の黒い部分や着物の柄をコピーして貼りました。 またテクスチャを貼る前後で正面と背面を入れ替えています。ここは単純に入れ替えた方がそれらしく見える気がしたからです。 色んな角度からみると下記のようになります。
VIDEO 横からの見え方がちょっと悪いですが、正面や背面はそれっぽいのではないでしょうか。 個人的なお気に入りポイントは、腕や脚の末端で着物の生地が縒れていて、風などでひらひらと動きそうな雰囲気が出ている点です。
Step4: リギングとアニメーション
ではリギングをして、キャラクターを動かしていきます。 Blenderなどを使って処理することもできますが、ここでは簡単のためMixamoを使います。Mixamoは、多くのアニメーション素材が揃っていたり、手首などの位置を指定すると自動でリギングしてくれたりするので非常に便利なサービスです。使い方もかなり簡単なので詳細は割愛します。 ジョギングからジャンプするようなアニメーションをつけたものが下記です。寄りでキャラクターと一緒にカメラ位置を変えて撮影したものと、引きの固定カメラで撮影したものを作ってみました。
VIDEO
VIDEO
動かす前よりも、アニメーションまでさせた方が、それっぽさが上がった気がします。
付録: アニメーションを繋げて、踊らせてみる
せっかくなので最後に、複数のアニメーションを繋ぎ合わせて、キャラクターに踊ってもらいましょう。 Mixamoでは短い単体でのアニメーションが別々に公開されていますが、UnityやBlenderで繋げて一連の動作として見えるようにもできます。 ということで、ブレイクダンスっぽく踊らせた映像が下記です。
VIDEO
なんとなくヨレヨレしていてビートにハマったフリーズなどは決まらなさそうです…笑。とはいえ、これはこれで可愛い気がするのと、それなりにパワームーブもこなしてくれている感じはします。(なんだか親心みたいなものが芽生えそうになりました…。)
最後に
今回は、Text to ImageやPIFuなど様々な技術を活用して、CGエンジニアやデザイナーではない小山田でも、コンセプト画から3Dキャラクターを自作して、動かすことができるのかに挑戦してみました。もちろんクオリティで評価するならば、技術力やデザイン力を持った人がBlender等で1から作った方が良いでしょう。初心者でも技術書に書いてあることを参考にすればある程度のクオリティは担保できるかもしれません。一方で今回作ったキャラクターは独特な形状をしていたり、頭の中にある世界観をもったキャラクターを簡単に3Dモデルとして動かせたりという点では興味深くはないでしょうか。
ちなみにCLIP + XXX系の技術発展はめざましく、
AvatarCLIP
[6] というTextから3Dモデルとアニメーションを生成できてしまう技術もあります。ただこちらは元となるプレーンな3Dモデルが必要であり、大きく元の3Dモデルから離れた生成は現状難しそうです。(今回作ったような腕や脚部分にボリュームのある生地感をもったキャラなど。)
といっても生成結果は綺麗ですし、面白い技術なので、確認してみると良いかもしれません。
こういった形で、AaaS Tech Labでは、ビジネスの最適化などを目的としたデータサイエンス活用はもちろん、メディア・コンテンツ領域へのAI技術応用も進めております。
もしご興味を持っていただけた方がいらっしゃいましたら、worksをご覧いただいたり、contactからご連絡いただけたりしますと幸いです。
追伸: ICON (Implicit Clothed humans Obtained from Normals)の活用について
本記事の公開準備中に、ICON
[7] という画像から3Dモデルを生成可能な手法が、Hugging Face上などで公開されました。
論文
[8] 中の画像などを見ると、明らかにPIFuなどよりも精度が高そうでしたので、どうしても気になり追加で実験してみました。
詳細は長くなるので割愛しますが、上述した処理のうちPIFuを使っていた部分をICONに置き換えたイメージとなります。
こちらがPIFu用に加工したキャラクター画像から、ICONで3Dモデルを生成、自分でテクスチャを貼った結果です。
VIDEO
PIFuは3Dプリンターで出力されてきそうな丸みや分厚さを持っていましたが、ICONはイラストをInputしたことに引っ張られているのかペラペラしていそうな薄い3Dモデルとなりました。 一方で、全体的な人間っぽさ(腕や脚の明瞭性?)はICONの方が高い気がします。 ガスマスクの凹凸感や、脚先の生地感もPIFuよりそれらしくなったかもしれません。 せっかくなので、ICONで生成した3Dモデルも踊らせてみました。
VIDEO
ICONのせいというよりかは、私がちゃんと調整していない影響ですが、薄いモデルとなった分、しゃがむような動作の時に膝が胴体を貫通してしまいました。 ただ薄くなったことで、少しムーブにキレが出たような気がします。 (この辺りの感覚は思い込みに過ぎないかもれません…。) といった形で、ICONを使用したバージョンも簡単にまとめてみました。 PIFuでもそれらしく3Dモデルが生成できるような前処理を適用したせいか、思ったよりもICONの方が絶対良いという感じにもならなかった気がしました。 ただ論文中の結果を見ていると、本記事のような前処理なしだとPIFuなどではうまく生成できなかった3Dモデルを、ICONでは比較的綺麗に生成できている様子が伺えます。 そういった意味で作業コストをより小さくできるのはICONなのかもしれません。 ICONはWeb上で気軽に試すことができるので、気になる方はチェックしてみてはいかがでしょうか。 AaaS Tech Lab 小山田圭佑