FC2ブログ

うちの子をUnityだったりVRChatに連れて行ってあそぼう

最近の現実逃避先としてUnityに触り始めました

MMD用に作っていたうちの子をUnityに持っていけたので忘れないようにメモっておきます。

①モデル準備

Blenderのうちのこ

3分クッキングばりにすでにできているものを持ってきます

MMD用に作っていたうちの子モデルで、

・モディファイヤーの適用
・余分なオブジェクト(下絵とか、ライトとかカメラとか)を削除したきれいなBlenderシーン
・ボーンにスキニング済み

という状態になっています。

別のソフトにコンバートという話になるとボーン名称などでよくトラブルになるのでググっていたのですが、
現時点では気にしなくていいようです。


②FBXエクスポート
基本的にはBlenderのファイルメニューからエクスポート→FBXを行うだけなのですが…
ちょっとこったことをしようとして一度詰まってしまいました。
スケール変更の話です。

BlenderとMMDとFBXとUnityで長さの扱いが違うという話。
ややこしい。

まず。MMDは長さの扱いが直感出来ではありません。
初音ミクの設定身長は158cmですが、MMDのミクさんのモデルをBlenderにもってくると約4 BlenderUnitとなります。
BlenderUnit(以下BU)とはBlenderの長さの単位であり、特に設定をいじっていなければ1BU=1メートルとなります。
身長158cmのミクさんをBlenderの世界に連れてくると4メートルの巨人になってしまう
今回使うオリジナルキャラのヘイローちゃんもMMD世界では1メートルちょっとの身長ですが、Blender世界では2.7メートルになっています。
ちなみにUnityの単位はメートルなので、1BUがそのまま1メートルとして扱われます。

なので、BlenderからFBXを書き出すときについでにサイズ縮小をかけました。

FBXエクスポート画面_m

Blenderのファイルメニューからエクスポート→FBXの画面
左下に出力設定をする項目があります。

そのなかにスケールを入力する場所があるのでそこに「0.395」と入力しました。
これで身長4メートルのミクさんは158センチに、2.7メートルあったへいろーちゃんも良い感じの身長になるはずです。

倍率の出力時
またそのさい、数字入力欄の横のアイコンをオフの状態にしておいてください。
Blenderの単位1BUは1メートルでUnityの単位もメートルなのでそのままで問題ないのですが、
FBX形式の単位はセンチメートルなので、このボタンをONにしておくと数字が100倍のセンチメートル表記に勝手に変えてしまいます。
オフの状態にしておいてください。


③Unityへのインポート
FBXの書き出しができたのでUnityに読み込みます。

Unity画面01
Unityを起動して新しいプロジェクトを作ったら、
画面下側の「Assets」の中にFBXをD&Dで投げ込みます。
すると投げ込んだFBXと同時にマテリアルというフォルダも作成されます。

次に、今投げ込んだ、「Assets」の中のFBXファイルを今度は左上の「Hierarchy」にD&Dします。
すると真ん中のシーン画面にキャラが表示されます。

Unity画面02
ですがそのままだと想定より小さくなってしまっています。
(ためしにユニティちゃんを隣に置いてみました)
これはFBXエクスポート時に設定したサイズ変更で0.395倍にモデルを縮小した上で、更にUnity上でも0.395されてしまい、
0.395×0.395で最終的に0.156025倍にされてしまっているためです。
なぜそんな謎なことを…という思いは置いておいてUnity上で勝手にかけられているスケールをなくせば想定の身長になります。

Unity画面03
Assetsの中のモデルを選択し、InspecterのModerlの中の、Use File Scaleのチェックを外します。
するのチェックの上のScale Factorが倍率として使用されるようになりますので、これが1なら想定通りの身長になります。


④マテリアル設定
Blenderではテクスチャを張って色までついてたはずですが、Unity上だと真っ白になってしまっています。
Unity上でテクスチャを張り直します。

Unity画面04
まずモデルに使用しているテクスチャ画像を適当なフォルダにまとめ、そのフォルダごとAssetsの中にD&Dします。

Unity画面05
次にAssetsの中のMaterialsフォルダ(FBXを入れたときに勝手に作られるフォルダです)の中のマテリアルを選択し、InspecterのなかのAlbedoのとこの丸をクリックします。
するとテクスチャ選択画面が出るので、対応したテクスチャを選択します。
これをすべてのマテリアルに行うとモデルに色が付くはずです。


⑤キャラクタライズ

キャラクタライズって言葉はモーションビルダーでの呼び方だけど似たようなものだからいいでしょ…

Unityには、違うモデルでも共通のモーションを使いまわせるMecanimという機能があるのですが、それに対応した人型モデルとして「ここが腕ですよ、ここが脚ですよ」というように指定をする必要があります。

Unity画面06

Assetsの中のモデルを選択したら、Inspecterの中のRigを選択し、Animation TypeをHumanoidに変更します。
そうしたら下のConfigureをクリックしてキャラクタライズ画面を開きます。
(セーブするか聞かれたらセーブしましょう)

Unity画面07
キャラクタライズ画面
右のInspectorに人の絵とリストが表示されます。
リストにはそれっぽいボーンが自動で入っていますが、間違いが多いので確認して修正していきましょう

左のHierarchyの中にあるボーンから正しいボーンを選択し、Inspectorのリストの中にD&Dします。
実線の丸が必ず必要なボーン
点線の丸があってもなくてもいいボーンです。
(ヘイローちゃんつま先とか無いし)

全部設定できたらDoneを押して作業を終わります。

ここまででUnityで使いやすいモデル形式が完成しました


⑥Unityパッケージ化

Unityは、アセットストアでいろんなものが配布、販売されているように、モデルや背景、スクリプトなどそれぞれの要素を組み合わせてゲームを作ることができます。

今回はその中でキャラクターの作成を行ったので、コレをいろんなプロジェクトに使いまわしし易いようにUnityパッケージ化しておきます。
Unity専用のzipファイルみたいなもので扱いやすいし、一度用意しておけばマテリアル設定やキャラクタライズをしなくてもすぐにキャラクターが使えます。

まず、Assetsの中で右クリックして新規フォルダを作ります。
作ったフォルダの中に、キャラクターと関係あるデータをD&Dで入れます(FBXデータやマテリアル、テクスチャフォルダなど)

Unity画面08
フォルダにひとまとめにしたら、メニューのAssetsからExport Packageを選択し、

Unity画面09
自分が作ったフォルダだけチェックをいれてエクスポート

保存画面が出るので名前を付けて保存すると、「.unitypackage」が作成されます。

ほかのプロジェクトでキャラクターを使いたい場合はこのUnityパッケージをAssetsにD&Dするだけですぐにキャラクターが使えます。


⑦遊ぶ
あとは
http://0310unity.hateblo.jp/entry/unity_chan_basic
こちらの記事のようにキャラクターを走らせたり

http://vrchatjp.playing.wiki/d/%a5%a2%a5%d0%a5%bf%a1%bc%a4%ce%ba%ee%c0%ae
なにかと話題のVRチャットのアバターにしたり

自分が作ったものが動くって楽しいぞ!
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

てねひむ

Author:てねひむ
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード