Unity、クロス、ボーン、試行錯誤
Unity



前回触れました、まいティーちゃんのスカートのUnity上での挙動の件にについて書いておきたいと思います。

とりあえず、MMDでも動かせるようにスカートにはボーンを付けていましたが、クロスシミュレーションの方が自然な動きになってくれそうかなと思い、Unityではクロスコンポーネントを使う予定でした。




まず、スカートにクロスコンポーネントをアタッチして、スカートの頂点にクロスコンストレイントを設定します。そして、足と腰にコリダーを設定して動作テストしてみました。




そしたら、スカートのメッシュがとんでもないことに!?

まさに、メッシュの爆発状態ですねぇ(汗)。前にカレンでクロスを使った時は普通に使えたのですけど。あの時のUnityのバージョンは5.4でしたが今回は2017です。それが原因なのか?

5.4は5.6を入れる時に上書きしてしまったのですが、2017を入れる時は念のため5.6を残して置いたので、そちらでも試してみたのですがメッシュは同じく崩壊状態でした。

それで、もっとシンプルなモデルで試したらどうなのかと、Blenderで簡単なモデルを用意してFBXで書き出して試してみたら、やはりクロスを設定したメッシュは形状が崩壊してしまいます。

まいティーちゃんは一からBlenderで作ってあったのですが、カレンはShadeで作ったものです。まさかそれが原因だったりするのかと、Shade3Dでも同じようなテストモデルを作って試してみたら、そちらは普通でした。




左の緑のがShade3Dで作ったもの、右の青いのがBlenderで作ったものです。それぞれ、アニメーション付きのFBXで書き出したものをインポートしたものです。




GIF動画にしてみました。クロスの設定は3つとも同じです。セッティングは「Stretching Stiffness」、「Bending Stiffness」が共に1。「Damping」が0.5です。

Shadeで作ったものは元の形状を保っているのですが、どういうわけかBlenderで作ったものはメッシュの元の形状を保てず伸びきってしまってます。理由は分かりません。(汗)

FBX形式は何かと相性とかが問題になったりします。一応、Autodesk FBX Converterでバージョンの変換とかも試してみたのですが改善はしませんでした。

では、FBX形式じゃなかったらどうなのだろうと、Blenderから傘の部分だけOBJ形式で書き出して、Unity上で左の青いモデルを複製して、その傘の部分を付け替えてみたものが真ん中の赤いメッシュです。こちらは形状を保っています。

とりあえず、Blenderで作ってあってもOBJ形式のメッシュならメッシュの破綻はないようです。しかし、カレンはShadeで作ってあってもFBXのエクスポートはBlenderからしていました。元のメッシュがどのソフトで作ってあるかが関係しているのか、はたまた自分の環境だけそうなるのかは分かりません。

それでとりあえず、まいティーちゃんのスカートのみをOBJ形式でインポートして取り替えてクロスコンポーネントを付けてテストしてみました。

形状は保てるようになったのですが、今度は黒いノイズが現れる様になりました。




スカートは溝もメッシュで段差を付けて作っておいたのですが、そこの頂点が近すぎるために揺れる時に奥の頂点が表側より前に出たりするのが原因のようでした。




それで、溝の段差を無くして単純なメッシュ構造に変更してみました。モデラーとしては溝も凝ってみたのですが、揺らしてみて不都合となるようなら修正せざるを得ませんね。動き重視です。(あと、若干全体的に膨らませました)




黒いノイズは出なくなりましたが、なんか想像していた動きと違っていました(もっと形状を維持してくれるのかと)。しかも、なんか動作も少し重いような感じもありました。それで、クロスは諦めてボーンでやることにしました。




スカートの前のボーンは始めは一本だったのですが、一本だと横に振られた時に大袈裟に動いてしまうので、ボーンを2本に変更して影響を分散させることにしました。

スカートの場合、複数のボーンの影響を受けた方がより自然になるということでウエイトは自動でやり直しました。こういうのはケース・バイ・ケースですね。

使わせてもらっている「Unity揺れものスクリプト」はシンプルでコリジョンと自然な揺れを表現できる素晴らしいスクリプトです。ただ、剛体形状が球のみなので、ぶつかった角度に対して素直に跳ね返るし隙間も出来やすいので、スカートのように平面的なものを表現したい時に少し考えなくてはならなくなります。

MMDだとスカートには、広がっても突き抜けにくく前後に揺れやすい板状の剛体を使うのが一般的なので少し困りました。




そこで、腿のところと股間辺りの2箇所にコリダーを置いてスカートのボーンをなるべく前に弾くようになるようにしました。片側の足を上げた時、反対側のスカートも前方に動くようにすることでうまくごまかそうという訳です。




股間のところのコリダーが無いとメッチャ左右に揺れてしまうことになり後ろ側に比べると結構前だけ横方向に大袈裟な動きになってしまいます。それよりはまだマシに見えるかなという感じです。

走らせることを前提としているのならば、お椀型のようにスカートの前方をもっと広くして足から離れるようにしたらもう少しすんなりいったかもしれません。ちょっと、このキャラには将来的にはギターとかも持たせてみようかなとか思っていて前面はあまり広がらないようにしておいたのです。

Blenderで作ったメッシュは本当にUnityのクロスシミュレーションと相性が悪いのか気になります。ググっても同じような症状になるという話題は見かけませんでしたので、自分環境なのでしょうかね。

今思えば、スカートをShadeで作ってクロスを試してみれば、また印象が変わるのでしょうか。

先程の傘モデルのように、同じ「Stretching Stiffness」、「Bending Stiffness」が共に1の設定でも、緑のShadeの傘は元の形状を保っていますが、赤いBlenderの傘は垂れてなんか柔らかい感じがします。クロスが垂れないのならShadeで作り直してみる価値もあるかもしれませんが、今すぐには気力が湧きませんね。(^^;)

揺れものは一筋縄ではいきませんねぇ。走らせるのならホットパンツとかならもっと楽だったとは思いますが、何事もやってみないと分かりませんからね。

あと、Unity 2017はインスペクターからは日本語入力が出来なくなってしまいましたね。必要があれば、メモ帳に書いてからコピペという感じです。次のアップデートでは対応してくれるとよいのですが。


~後日追記~

BlenderからスカートのみをFBXでエクスポートしてクロスを試してみたら、OBJと同様でメシュの崩壊はありませんでした。しかし、同じく柔らかくて垂れますね。

関連記事:

Unityでオリキャラのモーションテスト

スポンサーサイト
テーマ: CG ジャンル: 日記

コメント

コメントの投稿


非公開コメント

カテゴリ
ini-T MUSIC SKY
プロフィール