人をフィギュア化してみた ~PIFuHDで画像から人の3Dモデルを生成し、3Dプリンターで印刷してみる~

みなさんお久しぶりです。ファブテラスいわてスタッフの鈴木です。

みなさん、「3Dプリンターを使えばフィギュアを簡単につくじゃね?」思ったことはありませんか?

ゲームのキャラクターや、実際の人物をフィギュア化する….
考えただけてワクワクしてきますね!

ですが、実際のところは「3Dプリンターを使えばフィギュアを簡単に作れる」というのは半分正解で半分不正解です。
それはなぜかというと、3Dプリンターを使ってフィギュアを作るためには、3DCADソフトなどを使用して3Dモデルを作成する必要があるためです。3Dモデルがあれば簡単に作れますが、その3Dモデルを作るのが難しいというわけです。

「3Dモデルを作るのは慣れてます!」というつよつよな人であれば、そこまで難しくはないと思いますが、恐らく3Dプリンターを使い始めた人や、3Dモデルの作成ってなんぞや?という人にとっては、人体の3Dモデル作成はかなりハードルが高いのではないかと思います。

「結局3Dプリンターで人のフィギュアを作るのは無理なの?」

そう思われた方、まだ諦めるのは早いです!

いやー今のご時世は大変便利になったもので、なんと今回は、3DCADソフトでの設計は行わずに、画像から3Dモデルを生成しフィギュアを作ってみたいと思います。

さっそくやっていきましょう!

PIFuHDを使って画像から人の3Dモデルを生成する

PIFuHDとは画像から人物の3Dモデルを生成するプログラム(ツール)です。

「いやPIFuHDって何?」「プログラミングとか触ったことないんだけど?」と思われたそこのあなた。
あきらめるのはまだ早いです!

確かにPIFuHDはプログラミング言語であるPythonを利用したプログラムではありますが、今回紹介する方法ではプログラムに関する知識はゼロでも利用できますのでご安心ください。

では、さっそく3Dモデルを作成していきましょう!

1. Google ColaboratoryにPIFuHDのプログラムをコピーする

Google ColaboratoryとはGoogleドライブ上で利用できる、無料のPython実行環境です。

デフォルトではインストールされていないと思いますので、インストールがまだの方はこちらの記事を参考にGoogle Colaboratoryをインストールしてください。

1 次にPIFuHdのプログラムを自身のGoogleドライブにコピーします。以下の手順を順番に行なってください。

まずこちらのリンクをクリックしてください。「PIFuHD DEMO」のノートブックを開くことができます。開くと下のような画面がでます。


※本家のプログラムはPIFuHD DEMOなのですが、本家の方はバージョンの関係でうまく動かない部分があるため、「PIFuHDで、1枚の人物画像から高解像度3Dモデルを作る」で紹介されていたプログラムを使用しました。(cedro-blogさん、ありがとうございます!)

2 上部メニューにある「ファイル」から「ドライブにコピーを保存」を選択します

3 自身のGoogle ドライブを開き、「マイドライブ」の中に「Colab Notebooks」というフォルダが作られているはずです。その中の「PIFuHD Demoのコピー」という名前のファイルを開きます。

これでPIFuHDを利用できるようになりました。

2. 画像から3Dモデルを生成する

次は実際にPIFuHdを動かして画像から3Dモデルを生成していきます。

手順は以下の通りです。

  1. 3Dモデル化したい画像を用意する

  画像を用意する際はいくつか注意点があります。

   ・サイズは512×512以上

   ・人体の全身が写っている画像を使用する←ここ重要

   ・人物画像以外の画像は3Dモデル化できません(エラーが起きます)

   私は今回はこちらの画像を使用します。

https://publicdomainq.net/business-man-portrait-0040717/

2. 上部のメニューの「ランタイム」から「すべてのセルを実行」を押してプログラムを実行します。途中で画像のアップロードを求められるので、先ほど用意した画像を選択してください。プログラムが終了すると画像から生成した3Dモデルのレンダリング結果が表示されます。

3. 左側にあるファイルアイコンをクリックし、フォルダを表示させます。results/pifuhd_final/reconの中にある.objのファイルが生成された3Dモデルです。これをダブルクリックしてダウンロードします。

以下が生成された3Dモデルです。

割と精度よく3Dモデル化できていますね!(なんか左手が消えているのには目を瞑りましょう)

これで画像から人物の3Dモデルを生成することができました。

3. 3Dプリンターで印刷する

3Dモデルができてしまえばあとは印刷するだけです。

とういわけで実際に印刷してみたものがこちらになります。

なんか左手がとれてて怖いことになってます。恐らく印刷がうまくいかなかったのでしょう。

おわりに

画像から3Dモデルを生成できるとは本当に驚きです。これで色々な人物画像を簡単にフィギュア化することができますね!

ただ、このPIFuHDは機械学習を用いて開発されているので、画像によってはかなり精度が落ちる場合があります。

今回やったことは非常にシンプルです。PIFuHDに画像を読み込ませて人物の3Dモデルを作る。そして3Dプリンターで印刷する。

プログラミングの経験がない人からするとPythonのプログラムと聞いて敷居が高く感じてしまうかもしれませんが、やることは単純で用意されているプログラムを手順にしたがって実行するだけです。プログラミングをやったことがない人でも簡単にできますので是非試してみてください!

それでは今回はこの辺で。

最後まで読んでいただきありがとうとざいました!

利用者投稿

次の記事

小杉山