4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【TitanCraft】マインクラフトに巨人を召喚するためのツール作った

Posted at

TitanCraft is 何?

スマホなどで撮影した1枚の全身画像から、3Dオブジェクトを経由してしてマインクラフトの.schematicファイルを生成します。
生成された.schematicファイルをWorldEditなどのmodを使ってマイクラのワールドに読み込ませると巨人を召喚できます。

ソースコードはここで公開しています

こんなことができます

titan1.png

その日 人類は思い出した
ヤツらに支配されていた恐怖を…
鳥籠の中に囚われていた屈辱を…

titan2.png

titans.png

処理の流れ

以下の画像を使って処理の流れを追ってみます。(画像はここから取得しました:pray_tone1:
man_2.jpg

1. 入力画像から前景を抜き出す

私が作成したremove_bgというリポジトリを使って前景を抜き出します。
その際、次の工程のPIFuでマスク画像が必要なので、それも一緒に作成します。
remove_bgでは、まず入力画像に対してSemantic Segmentationを適用して対象のオブジェクトを抽出します。その後、trimapという3値画像を生成し、入力画像とあわせてFBA_Mattingに入力して前景の抽出を行っています。

[処理結果]
man_2_remove_bg.png

サンプルの画像に背景がほとんど無いのであまり適切では無いですが、うまく人物が切り出せていることがわかります。(股のや首の近くなど少し背景が残ってしまっているところもありますね)
remove.bgAPIを使えばもっと高精度になると思いましたが、有料だったので今回は使っていません。

2. PIFuで画像から3Dオブジェクト生成

PIFuという手法を使って画像から3Dオブジェクトを生成します。
この処理によって、3D形状だけでなく画像に写っていない部分の服や髪型などのテクスチャも推論してくれます。
PLFuの詳細については私はあまり理解できていないですが、この記事などにもう少し詳しく載っています。

[処理結果]
man_1_obj.jpg
meshlabで可視化)

入力画像には全く写っていない背中やお尻の部分もよく再現されています。すごいですね。
現状では、このまま3Dオブジェクトとして使うのは少し厳しいかもしれませんが、今後技術がさらに進展すれば1枚の画像からキレイな3Dオブジェクトが生成できる日も遠くなさそうですね:ok_hand_tone2:

3. 3Dオブジェクトからマインクラフト用の.schematicファイル生成

私が作成したobj2schematicというリポジトリを使って、2.で生成した.objファイルからマインクラフト用の.schematicファイルを作ります。
PIFuが生成する.objファイルを読み込み、中身を解析してマイクラのブロックに変換しています。
生成された.schematicファイルをWorldEditなどのmodでワールドに読み込ませることで巨人を召喚できます!

[処理結果]
man_schematic.png

どうでしょうか⁉
まぁまぁよく出来てると思います:smile_cat:

以下、召喚した巨人のギャラリーです。

2020-08-03_16.53.29.png
そびえ立つ巨人と見守る村人たち

2020-08-03_16.55.51.png
夕焼けの巨人

2020-08-03_16.56.12.png
丑三つ刻の巨人

2020-08-03_16.58.22.png
巨人の肩の上に立つ

2020-08-03_17.01.51.png
中身は空洞です

2020-08-03_17.05.14.png
オマエヲミテルゾ

まとめ

1枚の画像からマインクラフト内に巨人を召喚するツールを作りました。
Google Colabで実行できるようにしておいたので是非使ってみてください。
Open In Colab

ローカルで実行する場合は、pythonの環境が必要ですが、そこさえクリアできればすぐに使えると思います。
GPU無しの私の環境(MacBook Pro(2019))でも1画像(512x512)あたり2~3分で処理することが出来ます。

「すげー!」と息子に言ってもらいたくて作りましたが、想像通りにできて満足です:joy_cat:
今回は全身画像から3Dオブジェクトを作りましたが、使用するモデルを切り替えることで他にも色々できるんじゃないかと考えています。
何かアイデアがある方はコメントなどで教えていただけると対応するかもしれません:rolling_eyes:

また、PIFuFBA_Mattingなどの公開されているモデルを使用させてもらっていますが、各手法の詳細について理解していなくても使えるような状態になっていることはすごいことだと改めて感じました。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?