ブログの女の子を作る #21 ボーン入れとウェイト設定1【Blender,Unity】
前回の記事で「テクスチャ画像」を描いて、モデリングが完成しました!
最初の目標は達成できたんですが、一番最初の記事「#1 作るものと三面図」では、3Dモデルを作ったあと、
> ・スカートにボーン入れてウェイト設定
> ・Unityにインポート
> ・アセット設定してスカートひらひら
> ・Unityにインポート
> ・アセット設定してスカートひらひら
を考えてました。
スカートだけではもったいないのと、ずっとTポーズのままというのも寂しいので、体全体を動かしてみることにしました。
今回は、ボーン入れとウェイト設定をしていきます。
で、やってみたんですが。。。
「ボーンを入れる→ウェイト設定する」だけならすぐできます。けど、その後に「動かしてみる→おかしいところがある→設定を少し変えてみる→良くなった!(または悪くなった…)」という作業が続いていくのでした。。。
目次
参考にさせて頂いたサイト
今回のモデリングで参考にさせて頂いたサイトです。
(1) ボーンを入れる
基本的にBlenderでは、「体」を動かす際に、直接「メッシュで作ったオブジェクト」は動かしません。
まず、体の中にボーンを入れておき、ボーンと「体のオブジェクト」を紐づけます。親が「ボーン」、子が「オブジェクト」の親子関係になりますね。そして、そのボーンを動かすことで、間接的に「体」を動かしていきます。そんな仕組みのようですよ。
上半身に入れる
「追加 – アーマチュア – 単一ボーン」を選択します。
これが「ボーン」ですね。
太くなっている下側を「Root(根本)」、細くなっている上側を「Tip(先端)」と呼ぶようです。
1本ボーンを追加した後は、先端から「押し出し」でボーンを増やしていきます。
頭までボーンが入りました。
Unityにインポートすることを考えて、ボーンの名前を決まった名称にしておきます。「Head、Neck、Chest、Spine、Hips」などですね。
腕と手に入れる
「左腕」にボーンを作っていきます。
右側は、あとから「対称化」機能でコピーするので手動では作りません。
その代わり、ボーンの名前は「Xxxx_L」のように「_L」を付けておきましょう。こうすることで、対称化した時に「Xxxx_R」という名前のボーンを作ってくれますよ。
指にもボーンを入れておきます。
使うかは分かりませんがとりあえず。
基本的には、オブジェクトで作った「関節」の単位でボーンを入れていきます。
一本分を作ったら「複製」して、それぞれの位置を調整するのが楽です。
手の指はこんな感じでしょうか。
関節の外側が良いらしい
動画でも説明がありましたが、関節部分の場合、外側に回転部分を持ってくると良いらしい。
ここら辺ですね。
こうすると、関節を曲げた時に違和感が少なくなるらしい。
「対称化」で反対側にコピーする
左側の「Xxxx_L」という名前が付いたボーンをすべて選択し、「右クリックメニュー – 対称化」を選択します。
反対側にボーンができました!
名前も「Xxxx_R」になってますね。
便利です!
下半身に入れる
下半身にもボーンを入れていきます。
足は「UpperLeg_L、LowerLeg_L、UpperFoot_L、UpperFoot_L」などですね。
これも「対称化」しておきます。
右側にもボーンができました。
(2) ボーンとオブジェクトを親子関係にする
基本となるボーンが入りました。
次は、「ボーン」と「体のオブジェクト」を紐づけて、親子関係にしていきます。
親子関係にする
オブジェクトモードで「オブジェクト」を選択し、Shiftキーを押した状態で「ボーン」を選択します。
「オブジェクト – ペアレント – 自動のウェイトで」を選択します。
ここに出てきた「ウェイト」は、「ボーンを動かした時に、どれくらいオブジェクトを動かすか」の「重み、影響度」を意味していますよ。
「ボーンヒートウェイト」エラーが出た
先ほどの操作で、「ペアレント(親子関係にする)」と「自動でウェイトを付ける」を同時にやってくれる、はずなんですが、エラーがでました。
「ボーンヒートウェイト:一つ以上のボーンで解決に失敗しました」らしい。
原因がどこかにある
どこかの頂点がおかしいのが原因なんですが、どこがおかしいかは表示してくれません。ベタな方法ですが、消去法で原因を探ります。
試しに、腕以外のメッシュを削除して、ペアレントしてみます。
できましたね。
エラーは発生せず、ポーズモードでボーンを回転させると、腕のオブジェクトも回転してくれました。
ということは、腕以外のメッシュに問題がありそうです。
クリーンアップする
という感じで探そうとしましたが、かなり面倒なので、「クリーンアップ」機能で頂点をキレイにしてみます。これで改善するとありがたい。
すべての頂点を選択して、「メッシュ – クリーンアップ – 孤立を削除」を選択します。
「頂点:6個、辺:4個、面:0個を削除しました」と表示されました。
ゴミ頂点が無くなったようですね。
同じくクリーンアップで「大きさ0を溶解」を選択します。
「頂点:0個、辺:6個、面:6個を削除しました」と表示されました。
更にキレイになったようです。これは期待大。
「自動のウェイトで」で動いた!
再度、「自動のウェイトで」をやってみます。
エラーは出なかったようです。
ポーズモードでボーンを動かしてみると、ちゃんと「体のオブジェクト」も動きました!
これでなんとか作業を進めれそうです。
ポーズを元に戻したい時は、「右クリックメニュー – ユーザーのトランスフォームをクリア」ですね。
(3) いろいろ動かしてみる
とりあえずボーンを入れて、「自動のウェイトで」をやってみました。
まずは、この状態でどんな感じで動くかを確認しておきます。
とりあえず動くが…
腕の関節がやや不自然。
まだ靴下はペアレントしてないので追随しませんが、足の曲がり具合は良い感じ。
親指は、回転角に問題がありそう。
他のオブジェクトもペアレントする
ワイシャツをペアレントしてみます。
オブジェクトの種類が「ワイシャツ」に変わるだけで、操作方法は同じ。
とりあえず服も動くようになりました。
「神に祈りを!」※本好きの下剋上
動きましたが、いろいろと問題あります。
リボンがズレる。
ワイシャツの下からブラがはみ出してる。
スカートの形が崩れる。
スカートは「Magica Cloth(マギカクロス)」で制御するので、体の動きには追随する必要はありません。あとからウェイト消しておけばOKです。
まつ毛や眉毛、靴などは、単純にウェイトの付け忘れ。
ウェイトを付けておきましょう。
靴は変形しないので楽ですね。
余分なウェイトを削除する
顔(Head)のボーンを動かした時、リボンも動いてしまうのは、「リボンのオブジェクトにHeadのウェイトがのっているから」です。
Headボーンを選択してから、ウェイトペイントモードに切り替えてみると、リボンの上部に「薄い黄緑」が付いてました。
これが「ウェイト無し(青色)」になれば良いですね。
「ウェイト0.000」で塗ってみました。
リボン本体は動かなくなりましたね。
ウェイトペイントで調整する場合は、こんな感じの作業のようです。やや面倒。。。
(4) Unityにインポートしてみる
まだ調整は途中なんですが、この段階で一度、Unity上でどのように表示されるか確認しておきます。
FBXファイルに出力する
エクスポートはとても簡単です。
Blenderのメニューバー「ファイル – エクスポート – FBX(.fbx)」を選択して、出力ファイル名とフォルダを入力します。
画面右側の「オブジェクトタイプ」は、「アーマチュア」と「メッシュ」だけを選択しておきましょう。
Unityを起動する
私の場合、この記事で作成した環境があったので、そのまま使いました。
なんかいる!と思ったら、以前作成した「2頭身の女の子」でした。
スケール間違えてたので超でかい。。。
今回は関係ないので消しときましょう。
FBXファイルをインポートする
FBXファイルをインポートしていきます。
作業としては、
- fbxファイルをUnityにD&Dする
- テクスチャが入ってるフォルダをコピーする(フォルダ名はtextureとか)
- Rigを「Humanoid」に変える
- Materialsで「Extract Materials…」をクリックして、テクスチャフォルダを指定する
ですね。
動作確認しますので、適当にAnimatorのControllerを設定しておきます。
これで準備完了です。
いろいろおかしい
で、動かしてみたんですが、いろいろとおかしい。
・ワイシャツが小さくなってマフラーになってる
・まつ毛と眉毛がどこかに行った
・靴が脱げてる
など。
リボンだけは本来の位置にあるので、ギリお見せできる画像にはなってますが。
Blender上ではそこまでおかしくは無かったので、もしかするとFBXにエクスポートするファイルを間違えたのかも知れません。
そのあたりも含め、確認と調整作業を続ける必要がありそうです。
まとめ
ボーン入れとウェイト設定をやってみました。
とりあえずUnityにインポートしてみましたが、まだまだ調整が必要なようです。けど、実際にUnity上で動くことは確認できたので、なんとかなる気もしてますよ。
次は引き続き「ボーン入れとウェイト設定」をやっていきます。なんか、モデリングより時間かかる予感がしてきた。。。
コメント
トラックバックは利用できません。
コメント (0)
この記事へのコメントはありません。