Blender エンジニアでも出来るキャラクタ3Dモデリング
はじめに
こんにちは。情報システム部の山田幸司です。GREE Advent Calendar 2014 5日目の記事を担当させて頂きます。
今回のテーマは「Blender」です。
ゲームづくりに携わっているエンジニアの方々の中にも、素材を自前で用意して動かしたいと思っている方が多いと思います。僕も2年前から趣味でUnityを触り始め、3Dモデルを自作して動かしたいと思い始めていました。ただ3Dのモデルデータをどうやって作ればいいのか悩む方がいると思います。モデリングのためにMayaやLightWaveなどのモデリングソフトの購入も検討できますが、高価で手を出しにくい。そんな時にBlenderをお勧めします。
Blenderとは
Blenderはオープンソースのモデリングソフトです。最新バージョンは2.72b(2014/12/5現在)。フリーのモデリングソフトならばメタセコイアが有名だと思います。しかしBlenderは基本的なモデリング機能はもちろん、パーティクル、物理演算、ゲームエンジンなど様々な機能を標準で備えています。さらに有志によって公開されている多数のプラグインを入れることにより機能拡張することができます。クロスプラットフォームなのでWindows,MacOS,Linuxで利用することが出来ます。Blenderを使うことで次のような機能を使うことが出来ます。
・ボーン
モデリングしたオブジェクトにボーンをつける機能です。メタセコイアの場合はプラグインを利用しないと使えませんが、Blenderには標準で備わっています。またボーンをつけることによりオブジェクトにアニメーションをつけることが可能です。
・ヘアーパーティクル
毛を生やすパーティクルです。簡単に毛を生やすことが可能です。物理シミュレーションと組み合わせることで自然なアニメーションを施すことも可能です。
・ゲームエンジン
Blenderには標準でゲームエンジンが備わっています。自分でモデリングしたモデルを使ってゲームを作れます。スクリプトを書かなくても動かす事ができます。
キャラクターのモデリングをしてみよう
今回の記事を書くにあたり、1週間ほどの期間でキャラクターのモデリングをしてみました。細かい部分については説明を省きますが、どんな感じで作成していったのか紹介していこうと思います。(※1)
モデリング
下絵の用意
正面・側面(+真上から見た図があるとなおいい)を用意します。今回は下記の下絵を使用させていただきました。(※2)
この下絵を正面(front)と側面(right)に設定します。
体の作成
キャラクターの体から作って行きます。shift+AキーでMesh→Cubeを選択し,オブジェクトを体の真ん中あたりに配置・移動させます。配置が終わったら肩〜お尻の部分までオブジェクトを伸ばします。中央あたりでCtrl+Rキーでループカット(オブジェクトに新たな辺ループを挿入し、面にあるループを分割)します。カットしたら左半分のオブジェクトは削除してしまいます。次にミラーモディファイアを設定します。軸をxに設定し、y軸とz 軸のチェックは外しておきます。こうすることで体の右部分を変更すれば左側の部分も変更されるので、調整の手間が省けます。右側だけ残してミラー設定した結果がこちらです。
次に股と肩の部分から、脚と腕を押し出して作ります。ある程度形ができたらSubdivision Surface(再分割)を施します。これを適用すると、メッシュの面が再分割され、滑らかな仕上がりになります。
顔・服の作成
顔を作成します。体の場合は立方体のオブジェクトから作りましたが、今回は円形のオブジェクトから作ります。顔を右側から見た状態にして、円形オブジェクトから下絵の顔の輪郭に合うように各頂点を合せます。輪郭を作ったら、球に近くなるように間の辺・頂点をつないでいきます。後で眼球を作るので、目の周りは円形オブジェクトを作って空けておきます。口はあけた状態にしておき,あとで閉じて調整します。その後面を張り付けていきます。頂点を3点以上選択してFキーを押すと面を張り付けることが出来ます。
眼球は球オブジェクトを生成して半分のメッシュを削除し、半球オブジェクトにしてから作成、髪の毛は球オブジェクトから一部を切り出し、円形にコピーして作りました。
最後に服を作ります。服は体とは別のオブジェクトとして作る方法もありますが、今回は体のメッシュの一部分から押し出しや拡大縮小、ループカットで作り上げていきます。袖・スカート・靴部分を作成すれば大分人らしくなってきました。
テクスチャマッピング
作成したモデルにテクスチャを張り付けていきます。モデルにテクスチャを張り付けるにはUV展開させる必要があります。UV展開は簡単にいえば展開図です。BlenderのMake Seam機能を使って切り込みを入れていきます。zキーを押してワイヤーフレーム状態にして斬り込み線(赤色の辺)を追加していきます。以下は体のUV展開した図になります。
UV展開した画像をpngなどの画像にエクスポートして、ペイントソフトなどで色を付けます。GIMPやinkspaceなどのフリーソフトを使うのもありですし、使いなれたソフトを使うのもありです。今回はAdobe Illustrator CCを使いました。
目・髪の毛にも同様にUV展開し、テクスチャ情報をマッピングしていきます。全てマッピングすればキャラクターの完成です。
ボーン・アニメーション
ここまでの過程でモデリングしたキャラクターはまだ動かすことが出来ないので、ボーンを付けてアニメーションを付けていきます。ボーンの設定にはrigifyというBlenderのプラグインを入れる方法がありますが、今回は手動で付けていきます。
shift+Aキーを押してarmatureからSingleBoneを選択して、モデルにボーンを付けていきます。ボーンには予め名前を付けておくとインバースキネマティクス(IK)の設定時に役立ちます。
ボーンを作ったら、モデリングしたオブジェクトにボーンを割り当てます。モデリングした体・目・顔・髪の毛のオブジェクトを選択した後にarmatureオブジェクトを選択しset parent toのwith automatic weightを選択して、ボーンとメッシュを親子関係にします。また手と足の部分にはIKの設定をしておきます。
ボーンの設定が終わったら、アニメーションを作っていきます。今回は何もしない状態(idle)と前に歩く(fowardwalk)の2つ作りました。
Unityへインポート
自分でモデリングしたキャラクターをUnityへインポートして動かしてみました。
まず、Blenderで作ったキャラクターをFBX形式で出力します。
Unityで出力したFBXファイルをAssetsフォルダにドラッグ&ドロップします。テクスチャ画像も一緒にドラッグ&ドロップします。
インポートするモデルの設定をします。アニメーションの種類はLegacyにします。
WrapModeをLoopにしてアニメーションをループさせます。
インポートの準備が終わったら、FBXをhierarchyタブの部分にドラッグ&ドロップします。するとモデルは表示できますが、テクスチャが張られていません。テクスチャをモデルへドラッグ&ドロップすると、テクスチャが張られます。
また、応用例としてC#のスクリプトを記述すれば以下の動画のようにキャラクターを動かすことも可能です。スクリプトについてはこちらの書籍を参考にさせていただきました。
いかがでしたか?Blenderでモデルを作成して、Unityで動かすところまで一通り紹介しました。Blenderを使って素材を作るところから実際に動かすところまで自作するのも楽しかったです。エンジニアの方もそうでない方も、Blenderを使ったモデリングに挑戦してみてはいかがでしょうか?
明日は僕と同期であるwatildeさんの記事です。お楽しみに。
注意
※1:今回作成したモデルデータの配布予定はありません。
※2:株式会社ボーンデジタル様、田島キヨミ先生の下絵の掲載及び使用許可を頂いております。田島キヨミ先生の許可なしに画像を使用することはできませんのでご注意下さい。
参考文献
・ゲーム開発者になるための-Unity4-徹底ガイド-プロが教える効果的なゲーム制作技法
・キャラクターをつくろう-3DCG日和。-vol-3--Blenderでつくる、ポリゴンキャラクター
・Autodesk Mayaキャラクターモデリング造形力矯正バイブル -へたくそスパイラルからの脱出! !