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 ジャンル: 日記
Unityでオリキャラのモーションテスト
Unity



さて、Blenderで作り上げたオリキャラをUnityにFBXでインポートしてみた図です。Unity 2017使ってみました。




そろそろ、このキャラクターの名前を決定しておくことにしました。

その名も『桃実沢まい』。小柄で華奢な割にはけっこう力持ち、チャレンジ精神が旺盛で身体能力も並外れているところから、周りからは「Mighty」をもじって「まいティーちゃん」と呼ばれている、という感じで。(^^;)




シェーダーは「ユニティちゃんトゥーンシェーダー2.0」を使ってます。今回は、前髪に隠れている眉を透けて見えるようにしてみました。ただ、眉と髪が同じ色だと境目が分からなくなってしまうので、より効果的にするために眉のテクスチャに輪郭線を描き足しました。




設定の仕方は、隠れているもの(眉)のシェーダーを「StenciMask系」に、透かして見せるもの(前髪)のシェーダーを「StenciOut系」にすると言う具合です。




「ユニティちゃんトゥーンシェーダー2.0」ではポリゴンの片面表示と両面表示の設定が出来るようになってます。デフォルトで「BACK」になっていてスカートの裏側が黒かったのですが「Cull Mode」をOFFにすると両面表示になりました。




Blenderでモデルを作ってモーションを付けてもUnity上でどう動いて見えるかは実際にUnityで動かしてみないと分かりません。それで、まいティーちゃんにBlenderでいくつかアニメーションを作ってUnityで動作チェックしてみました。


今回もImgurのGIF動画にしてみました。

元のYouTube動画はこちら
https://youtu.be/kiVnTLmzjUc


前に作った動画の画質が悪くてどうしたものかと思っていたらブラウザにもよるみたいですね。普段IE11を使っているのですが、Chromeで見てみたら普通に綺麗でした。なんででしょう?




一応、モーションの解説的なものを。まず、「待機」です。ここから各モーションへ分岐するということに。

キーボードのキーにも各モーションを割り当てていたのですが、動画的にUIボタンも付けてみました。「走る」と「ピース」はボタンを押したら3秒間モーションを再生するとしてみました。




「走る」です。今まで走るモーションはいろいろなソフトでチャレンジしましたがかなり苦戦したものです。意外にもBlenderが一番付けやすかったですね。Blenderだとボーンコンストレイントを簡単に設定できるので今後はモデリングだけではなくモーション付けにも大いに役立ってくれそうです。

髪やスカート等の揺れモノは今回も「Unity揺れものスクリプト」を使わせてもらってます。リボンの動きがちょっとコミカルで面白いですね。やはり、手付けではこんなに自然な動きは付けられません。

ただ、難航したのはUnity上でのスカートの挙動です。結局、かなり試行錯誤と修正が必要でした。これについてはまたの機会に。




「がんばるぞい!」。ではなく、「よし!」です。(笑)




「おー!」。本当は「やったー!」のつもりでしたが思っていたよりモーションが短かったので「おー!」に変更しました。(^^;)

髪用として左右の肩にコリダーを付けていますが、左腕を上げたとき髪が貫通しないように左腕にさらに2つコリダーを追加してあります。うまくいったようです。




「ピース」。実際にピースする時は薬指と小指はぎっちり握ってないんですよね。あと、腰に手を当てるときは腰骨の手を置く方が少し上がるのが自然です。これらも作った後に気がついて修正です。




「ユニティちゃんトゥーンシェーダー」だとリアルタイムでのベタ塗りの影がいい感じですね。逆光の演出も使えそうです。




せっかくなので、「走る」の別角度を「うごイラ」にしてみました。



関連記事:

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

テーマ: CG ジャンル: 日記
カテゴリ
ini-T MUSIC SKY
プロフィール