Blenderで骨が入った伊藤さん

Unityなどでゲーム作りをする上で欠かせないのが3Dモデル。

プログラマだと自分自身でモデルデータを作る事ができず、アセットストア上のモデルやユニティちゃん、MMDのモデルデータの流用などいろいろと苦心しているのではないでしょうか。 絵心を欠いている自分としては、なんとか写真などからモデルを作る方法を練習しており、今回、一応動くようになったので紹介します。

追記、続きの記事を書きました。

Autodesk 123D Catchで撮影

まず、撮影はAutodeskが出している123D Catchという無料のアプリを使います。こちらはiOSとAndroidに対応しています。またPC版とWeb版も存在しているのでスマホではなく一眼などを使って高品質な撮影を行えばモデルの精度をさらに高めることもできます。

上記のビデオにもありますが、基本的には周囲をぐるぐると回りながら20枚前後の写真を撮影、123Dのサイトにアップロードすることでモデルデータ化されます。

今回、友人の小島さんが撮影した友人の伊藤さんは次のようなデータになりました。iPhone5での撮影です。

試行錯誤の結晶

なかなか綺麗な仕上がりです。背景になっていた壁や道路、カフェもモデル化されており妙な迫力があります。そしてモデルデータは.obj形式か.3dp形式でダウンロードできます。このままでも一応、Unityへ持っていく事が可能です。

Blenderで背景を削除し、頂点数を削減する。

Blenderでの作業

123DからダウンロードしたデータをBlenderにインポートすると、その巨大さに圧倒されます。今回の場合ですと、 頂点数が39万、ポリゴン数が78万 ということでUnity上での実用には耐えません。また背景部分のゴミが付いているのもキャラクターとして使うのには邪魔です。

自分は今回がBlender初体験だったのですが、書籍の説明を見ながら背景部分の削除、頂点の削減を行いました。具体的には下記のような作業を行いました。

  • オブジェクトを選択して、編集モードに入り、頂点選択モードに。
  • 投げ縄選択ツールで不要な部分を囲んで削除(X)をひたすら繰り返す。
  • モディファイアーのDecimateを使って頂点数を減らす。

不要な部分の選択と削除はやや根気が必要でしたが、頂点数の削除はスライダーでパラメータを調整しつつプレビューもできるのでとてもカンタンでした。この作業により頂点数は1500前後、ポリゴン数も3000弱に削減できました。これくらいになるとUnityへのインポートもあっというまです。

Blenderでの作業の続き

Blenderでボーンの埋め込みを行う。

ボーンの埋め込み

次にMecanimなどで動かすためのボーンの埋め込みです。こちらはMixiamoを使えば自動で出来るのですが、そこそこの金額がかかってきます。今日からBlenderを始めた人間には荷が重いかもしれませんが、ボーンの埋め込みを行ってみます。実際には下記のビデオを見ながら試行錯誤してみたのですが、2時間とかからず作業が完了しました。

実際のところ、Blenderの操作や画面レイアウトなどに戸惑っていた時間の方が長かったとは思います。終わってみるとこれまでBlenderでの作業を敬遠していたのがもったいなかったなというくらいにサクっとボーンを作成できました。データは.fbxでエクスポートします。これでもうアセットとして配布されている人間型のモデルデータと形式上は大差ありません。

UnityでMecanimからコントロールする。

必要な数のボーンが埋め込まれていれば後はいつもどおりです。Humanoid向けに公開されているモーションやユニティちゃんのデータの流用などが自由に行えます。

まさにMecanimの威力を実感できます。AvatarがHumanoidであればコードの互換性もあるので、サンプルプロジェクトにオリジナルのモデルを登場させて動かすなんていう事もコーディング不要、1分もかからずに完了します。

いちおうパッケージにもしてあります。

download

まとめ

要点だけの紹介でしたが、Blender入門初日の自分でも実際に動作するモデルを作成できました。 アップでの使用に耐えるデータにするにはテクスチャやボーンにさらなる調整が必要かとは思います。とはいえスマホで撮影した人物がUnity上で駆けまわる様子を見た時には感動しました。 これまでBlenderなどの3Dソフトを避けてきましたが、食わず嫌いせずにやっておけばよかったと思います。とてもカンタンなのでぜひお試しください。

使うソフトが違いますが、下記の動画も参考にしました。

またクドいようですが、下記の本は基本操作やリギングなどをカバーしていてとても役に立ちました。