2014年12月2日火曜日

【Unity】 Blenderとの連携

Blenderでモデルを作ってUnityで動かしたい!わたしです(^o^)

というわけで進めてました。進捗、悪くないです。まだ4.6βで頑張ってます。正規版、出たらしいですね。

参考にしたサイトはこちら

日本VTR実験室様の『初心者のための!作って学ぶBlender基礎』①から⑥!

いやーこれは本当に助かった。Blender未経験&Illustrator未経験でもなんとかなった。ちゃんとUnityで動くところまで持ってけたのでマジおすすめ。

以下いつもの詰まった所特集。


■選択したオブジェクト(カメラ)を違うレイヤーに移動したらカメラを表示できなくなった

Blender未経験者、超初心者だから起こるトラブルだと思います。

オブジェクト(カメラ)選択 >> M >> 左上以外のボックス をクリック

これでカメラは移動されて消えました。でもなぜかそのボックスをクリックしてもカメラが出てこない。
↓ここをクリックしてもでてこない。


そりゃでてきません。▼Move to Layer って書いてありますやん。
M押して出てきたやつと同じですよこれは。レイヤー切り替えはココ。




カメラがちゃんと出てきたはずです。次。


■Illustratorなんて持ってない

そんなものはない。Photoshop Elements5.0は眠っているペンタブのおまけで持ってたけどどうせならベクター系のソフトできれいな線を引きたい。

で調べてたらいろいろ良さそうなフリーソフトもあるんだけどなんとAdobe CreativeSuiteファミリー(CS2)が無料でダウンロードできるとのこと。当然飛びついた。

参考にしたのはここ
http://netbe.jp/adobemuryou/

Illustratorも未経験だったので非常に苦労したけどここには書かない。書くことはないかもしれない。要望があれば書きます。

・曲線が上手く引けない
・線Aの端と線Bの端を結びたい
・塗りつぶしができない、エラー吐く
・ガイド(元画像)のレイヤーを見えなくして書き出すと画像のサイズが変わってしまう(元画像は1024×1024)

こんなところだったか。完成したパンダくん。最初に吐き出したやつ。






















ぶっさ、コミュ抜けるわ。この後修正しました。Illustratorで.png塗り替えるだけだから楽だね。
ちなみに格子はガイドレイヤーの上に白塗りレイヤーをつくれば消えます。


■床のマテリアルがおかしい

対角線を境に床の模様が変わる。






















テクスチャのマッピングがUVなのでGeneratedに変えれば直る。質問スレPart23 >>163さんに感謝。
ちなみにUnityに取り込むときは部屋は消します。違うレイヤーに移してもUnityで出てしまうので消します。
法線について確認しておきたい場合一度部屋ごと取り込むことをおすすめします。


■Unityに取り込んだBlenderのモデルがぐちゃぐちゃになる

動かすとぐちゃぐちゃ、動かす前からぐっちゃぐちゃ。
.blendファイルで読み込むと前者、.fbxファイルで読み込むと後者になった。Blenderの中ではちゃんと動いてたじゃないか!
主に手と肩が壊れてるパンダくん。














取り込むとUnityのコンソールに警告が出る。警告文は↓

ImportFBX Warnings:
Mesh 'Plane' has 35 (out of 7626) vertices with no weight and bone assigned (they will be assigned to bone #0 with weight 1). The list of vertices: 2124, 2125, 2126, 2127, 2128, 2129, 2130, 4255, 4256, 4257 and so on...

UnityEditorInternal.InternalEditorUtility:ProjectWindowDrag(HierarchyProperty, Boolean)
UnityEditor.DockArea:OnGUI()

頂点群がどうたら、ノーウェイトとボーンってことでWeightPaintモードを起動して全ての頂点に対しweightを設定、boneに関連付ける。
簡単に言えば全体をうっすら塗って腰骨あたりに関連付け。操作的には

pandaオブジェクト 選択 >> Weight Paintモード(Ctrl+Tab) >> spine2 選択 >> 全体をBrushで塗る

デフォルトではWeightは1.000に設定されていてパンダは塗れば赤くなる。Weightを落としてRadi(塗り範囲)を大きくして全体をまんべんなく塗る。色は青とほとんど変わらなくていい。
それから取り込み。もう.blendファイルだけでいいや。同期してくれるし。.fbx吐き出すのめんどい。
取り込んだらまたエラー出ました。

ImportFBX Warnings:
Mesh 'Plane' has 2 (out of 7626) vertices with no weight and bone assigned (they will be assigned to bone #0 with weight 1). The list of vertices: 7298, 7551

UnityEditorInternal.InternalEditorUtility:ProjectWindowDrag(HierarchyProperty, Boolean)
UnityEditor.DockArea:OnGUI()

頂点群が35から2に減った。ご丁寧に頂点の番号まで書いてくれてるけどどこかわからないしそういうエラーだってことがわかっただけで良しとする。
ぐちゃぐちゃ度合が少しましになった。ほんと少し。相変わらず手の先がヤバイ。
35から2に減ったにしては効果が薄いと思ったので違うところに原因があるんじゃないかと思い別のところを探す。

ウェイトペイントモードでいろいろ変えながらUnityで確認を繰り返す。
footにウェイト乗ってなかったから赤く塗る。そしたら足先がぐちゃった。
ということでfootとhandのWeightをSubtractで消す
Unity側で正常に、ぐちゃらず動く。

ボーンがパンダのメッシュから飛び出てるのが原因だったのか?なんにせよ直ったので良しとしよう。

そういえばUnityに取り込むときはY軸とZ軸の関係が逆だからモデルを後ろ向きにしなきゃいけないはずだったんだけど実際やってみたら後ろ向きにする必要なかった。仕様が変わったのかな。


■MeshColliderが機能しない

先に言っとく。まだ解決してない。Mesh ColliderはあきらめてCapsule Collider入れた。回転拘束つけて。

MeshColliderコンポーネントのConvexにチェックを入れればMeshCollider同士衝突できるようになり(重くなるが)、Mesh以外ならConvexは必要ない。

MeshColliderが機能する頂点数は255が上限でそれ以上になると突き抜けるから頂点を削る。
Blender側で滑らかにしたことを覚えているだろうか。その逆をやる。

















両方とも0まで落としたが依然突き抜ける。無念。














突き抜けるパンダ。どうすればいいんじゃ。誰か教えてくれい。


■Unity側で取り込んだアニメーションがループしない

UnityでAnimatorタブで矢印引っ張ってプログラム書いてさぁ動かした!動く、ループしない。Animator上ではバーが動いていて繰り返しているはずなのに…

取り込んだPrefabを選択してここをいじる。























■Weight Paintモードでボーンを個別に選択できなくなった

モデルぐちゃぐちゃ事件で全塗りしようとした時に出てきた問題。
WeightPaintモードでなぜかboneを選択できなくなる。選択するとArmatureまるごと選択されてしまう。こんな風に↓






















こりゃおかしい。ってことで解決策。

Armature を選択 >> Pose Mode に移行
Plane(panda) を選択 >> Weight Paint Mode に移行 >> bone選択

これだけ。どうもArmatureがオブジェクトモードだとこうなるみたい。イラ壁事案でした。




今回はこんなもんかな。以下私的なメモ

UpdateとInput.GetKeyは相性が悪い
FixedUpdateとInput.GetKeyDownは相性が悪い
LookRotationにInput.GetAxisで得た値を直接いれるとまずい。入れるならifで分岐させろ
Bloggerの使い方がいまいちわからない。レイアウトのいじり方とか画像で改行とかやりたいことができてない。エラーだけ灰色Rectで囲むとか。見づらくてごめん。
ちょっと前にやってたロボットくんはだいぶパワーアップしました。


0 件のコメント:

コメントを投稿