HIKI Tech Blog

yhikishimaのブログ。ゆるくUE4やUnity、web開発の記事を書いてます。

1枚画像からPIFuで3Dオブジェクトを自動生成。

1. はじめに

画像から手軽に3Dオブジェクトを作成できないかと色々調べていた。 twitterでPIFu の話題をみて、面白そうなので試してみた。 また、自動化できないかと思い、batを作成してみた。

[実行環境]

  • windows10 Pro

2. 必要なツールのインストール

Pyhonインストール

pythonで動くようなので、pythonをインストールする。

Download Python | Python.org

pipを最新に。

$ pip install --upgrade pip

必要なpythonモジュールをインストール。

$ pip install numpy
$ pip install torch
$ pip install scikit-image 
$ pip install opencv-python
$ pip install tqdm
$ pip install torchvision

image magic をinstall

画像の大きさなどの整形のために、image magic。

ImageMagick – Download

ImageMagickを使う(Windows編) - Qiita

↑を参考に。

Remove BGの登録

画像の背景を削除するのに、image magicでは難しそうだったので使用。

画像の背景を削除 – remove.bg

↑で登録。

Background Removal API – remove.bg

↑のAPIを使用できるようにしておく。

mesh labをinstall

データの形式の変更のために、mesh labをinstall。

MeshLab

PyMeshLab — PyMeshLab documentation

3. プロジェクトをclone

git clone -b  feature/add_automatic_script git@github.com:yhikishima/PIFu.git

↑にて自分のforkしたプロジェクトをブランチ指定でcloneする。

4. 画像を用意

src 配下に好きな画像を用意。画像は形式を .pngにして配置する。

今回はサンプルの画像を配置してみる。

疋島康成

5. XAPI_KEYの修正

Remove BG を使用するために XAPI_KEY を登録しておく。

  • execute.batをエディタで修正
  • 13行目 set XAPI_KEY=2. 必要なツールのインストール で登録したKeyに変更する。

6. CheckPointsの作成

  • checkpointsフォルダを作成
  • net_Gnet_C をダウンロードし、そこに置きます。

7. execute.bat の実行

疋島康成

上記のbatファイルの実行。

疋島康成

成功した様子。

results\pifu_demo を確認してみると、 result_ryota.objresult_ryota.ply があるのを確認できるかと。

f:id:yhikishima:20210905180250p:plain

objファイルをMeshLabで確認してみると、3Dオブジェクト自体は作成されている。

自動化のために試行錯誤しましたが、もっと良い方法がありそう。

ここから、

  • plyからBlenderで.fbxを作成
  • Mixamoでアニメーション作成
  • UnityもしくはUnreal Engineでモデルを動かす

上記あたりが自動化できたら良いなと思ってます。

参考

PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization

画像1枚から人物の3Dモデルを生成するPIFuを使ってみた - Qiita

一枚の人物画像から3Dモデルを生成する「PIFu」 - Google スライド

PIFuでリアルアバターつくーる(Windows10、Python3.7) - Qiita

■STYLY 全身3Dスキャンデータ→Mixamo(リギング、モーション)→STYLYで動かしてみた件 - Qiita

MeshLabのスクリプトについてのメモ: メモブログ