ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2012年08月10日

Blender ボーンに結び付けたメッシュがUnityでおかしくなる

2つ前の記事で、Blender(2.6)のボーンにメッシュオブジェクトを結び付けるのに、普通に親子にしてからAmatrueモディファイアをつけるという手順を書いたが、これでうまくいかない場合があることが判明。

Blenderの上では問題ないのだけど、Unityでおかしくなる。なんかボーンが委縮してるっていうかなんていうかそんな感じの不具合。

色々試してみたところ、Amatureとオブジェクトの親子関係をいったん解消して、2つを選択してCtrl + Pで「自動のウエイトで」でやるとUnityでも問題なく再現されることがわかった。

どちらの方法でもBlenderではうまくいってるし、Unityでもうまくいくことは多いんだけどな。

fbxインポータの問題なんだろうか?

よくわかんないけど、おかしいときはこっちも試してみるべし。

こういうことがあるので、Blenderで一気に作ってからUnityに取り込むのはリスクが大きそう。

ちょっとずつ変更して、Unityでうまく再現されているのを確認しながら進む方が安全。
posted by みこあいさ at 15:35| Blender

2012年08月09日

Blenderでボーンを使ったアニメを作ってUnityへインポート

Blender(2.63)でモデルにボーンを入れたアニメを作ってUnityにインポートするというのを試してみている。
買ったチュートリアル本のアニメがUnityの上でやるアニメだったんだけど、数値指定しかできないみたいなんでとても納得いくものが出来そうになかったんでいったんBlenderに戻ることにした。

順を追って説明するのはもう無理ってくらい複雑だけど、自分的にここを忘れないように、ってことをメモ。

参考にしたのは
本当に初めての方のために作成したBlenderチュートリアル for 2.6

FAQ: Blender から Unity3D へスキン付きメッシュをインポートするには

・Amature(アーマチュア)は1つだけでルートボーンを明確にする
 Unityでインポートするとき、ボーンのルートがはっきりしていないとUnityのインポートで失敗してモデルが大変なことになる。
 ルートボーンを1つ作って、全てそこからの分岐にすること。
 あと、Amature自体も1つでないとダメらしい。


・Amatureが全ての親となる
 ボーンでアニメをするためには、Amature傘下に全てのメッシュがないといけないらしい。
 Amatureは子のメッシュだけをアニメーションコントロールできるということ。

・モディファイアAmatureの存在がメッシュとボーンを繋いでるようだ
 上の資料をみると、AmatureとメッシュのCtrl+P等で親子関係を設定するときに、With Automatic Weights(日本語だと、自動のウエイトで、とかそんな感じのメニュー)をするように書いてあったが、これだと頂点のウエイト情報が勝手に付けられてしまってそれを解除してまたウエイトペイントで…となって手間が何段にもかかる。このWith Automatic Weightsが何をしてるのかとよく調べてみたら、メッシュをAmatureの子にするときにメッシュオブジェクトにモディファイアAmatureを付加しモディファイアAmatureのオブジェクトいう欄に「Amature」を設定してやることだった。
だから、普通にメッシュをCtrl+PでAmatureの子にしてから、メッシュオブジェクトにAmatureモディファイアを付加してからmatureのオブジェクトいう欄に「Amature」を設定してやっても同じ。というかこの手順のほうが融通が利いて自分的には使いやすかった。

・タイムラインでボーンアニメをキーフレーム指定するときは、全てのボーンをAで選択して i キー → 回転

必ずしも全部のボーンでなくてもいいんだが(動いてる左腕だけとか)、ある程度の動きだと大抵ほとんど全てのボーンが動く。
ゲームに使うものくらいだと、かなり複雑なメッシュでもボーンの数はそれほどは多くないので、全てのボーンを毎回キーフレーム指定したほうが間違いがなく、ルーチンワーク化されて事故が減る。
あと、ボーンアニメだと回転以外考えられないんで、i キーのあとは必ず「回転」。
はじめ回転と位置とか色々あるんじゃん、とか思ってたんだけど、よくよく考えたら骨が移動ってそりゃないよ。

・Unityには.blendファイルのままインポートできる
正確には裏でfbxコンバータが動いているとかで、.blendのまま読んでるわけじゃないらしいんだが、Assetファイルとしては.blendをそのまま置ける。具体的にはFinder(WinだとExplorer?)からProjectビューへのDropでそのまま置けてしまう。
いったん置いてしまうと、Blenderでモデルやアニメを修正→セーブするとUnityも勝手に更新を検知して更新してくれる。
Blenderでうまくいってるように見えてもUnity上だとダメってこともあるので、大変便利。
ぐぐると、Unity-BlenderToFBX.pyってのを書き直さないと云々、っていうのに良く当たるけど、そのまんまで行けてる(Unity 3.5.5とBlender2.63)。
最近改善されたのかもしれない。直前のバージョンではCameraとLightがインポートされてたんでUnity-BlenderToFBX.py修正しないといけないのかーと思ってたんだけど、それも直ってるっぽい。

・Blenderのテクスチャは自動でインポートされない
上のように.blendのままで使えてとっても便利だけど、テクスチャだけは自動でインポートされない。
テクスチャのビットマップを自分でもっていってProjectビューの中でマテリアルを探してくっつけてやる必要がある。
どういう理屈かわかんないけど、一度テクスチャ指定をすると、モデルの更新で自動でインポートされ直してもテクスチャ指定は有効。
一回だけがんばれ。

・Blender上でアニメの名前を変更するとUnityでもそのままインポートされる
Blenderのアウトライナー上のAmatureの子(プロパティ?)として表示されるAnimationの項目内にアニメーション名がある。これを変更すると、そのままUnityでもその名前でインポートされるので、適宜わかりやすい名前にするとよさそう。




・Unityでアニメがループしないとき
しないときっつーか、たぶんデフォルトではループしないんじゃないかと思う。
UnityのProjectビューからBlenderモデルを選んで、InspectorのAnimation Wrap modeをLoopに変えてやるとループするようになった。

posted by みこあいさ at 11:45| Blender

2012年06月11日

Blender 頂点を追加(辺を分割) 面を張る

Blenderは2.6.3。

ほとんどメッシュ追加+ループカットの馬鹿の1つ覚えでモデルを作ってきたが、もうちょっと細かいものも作ってみたい気がしてきてもう少しだけ調べてみた。

どうやってやるのかなーと思っていた新しい頂点の挿入。
いくつか方法はあるみたいだけど、自分的に一番理解できるのは辺の分割。

●辺の分割(新頂点の追加)
編集モードで辺を選び、左のツールボックスから「細分化」を選ぶだけ。これで辺が2つに分割され、頂点が新規に作られる。

それから新頂点など任意の頂点の間に新たな面を作る方法

●面を張る
編集モードで新たに面を張りたい頂点を3つ以上選び、Fキー。
メニューだと、メッシュ→面→辺/面作成

ついでに頂点を削除する方法。
いつものようにxまたはdeleteキーで頂点を削除すると、頂点だけではなくて辺とか面まで削除されてしまう。

●頂点のみの削除
削除というか結合を使う。すぐ隣の頂点と2つ選択し(削除したいほうを後に選択)、メッシュ→頂点→結合 ででくるメニューの「最初に選択した頂点に」を選ぶ。
ちなみに メッシュ→頂点→結合 のショートカットは Alt Mになっているが、Macだと option + Mで出る。
posted by みこあいさ at 10:36| Blender