【連載記事】第4回 v1.2.0に実装された「DynamicBonePlaneCollider」を解説
スクリプト/アニメーション
$21.60(割引無し) 【更新日】2018年1月10日
胸や髪の毛、スカートなどボーンをリアルに揺らす大人気アセット「Dynamic Bone」
バーチャルYoutuberや、VRChatの方に絶大な人気を誇る、
定番の「揺れもの」スクリプトです。
この記事でわかること
・調べても情報が出てこない v1.2.0の新機能「DynamicBonePlaneCollider」を解説!
・ユニティちゃんの「スカート」めり込み問題を解決させたい。
・Final IKのVR IKと一緒に実装する方法を模索(するところまで行けたらいいなぁ)
アセットストア公式イベント情報
購入額に応じて人気アセットが無料でゲットできるイベント第二弾開催中!
今回のテーマは「IK制御」と「SF」
・「Bio IK」($30達成で無料化)
バーチャルYoutuberができちゃうパワフルなIK制御アセット。
ゲーム中で指定したポイントにキャラの腕や指先をスムーズに動かせるエディタだ!
※ 「イベントページ」でエントリーしてから購入することをお忘れ無く!
対象アセットまとめ記事:こちら
【イベント開催期間】2018年7月1日〜7月31日(火)まで
詳しくは記事最下部をチェック!
DynamicBonePlaneCollider
スクリプトをアタッチすると出てくる黄色いラインの正体。
どうやって使うのかネットにも情報が無くて謎でしたが、わかりました!
うまく使えばスカートのめり込み問題を解決する突破口になるかもしれません!
「DynamicBonePlaneCollider」概要
今までは「Capsule Collider」だけだったDynamicBoneに新たな衝突判定が追加!
実装すると、平面に対して衝突判定ができるようになります。
壁に衝突する尻尾。
複数のPlaneでもリアルに再現してくれます。何かに使えそうで面白いですね。
視覚的に分かりやすくするため「Planeオブジェクト」に設置して紹介しました。
貫通すると揺れが発生しなくなる
赤色のPlaneの判定より奥に入ってしまうと、
完全に固定されて揺れが発生しなくなりますが、出てる部分だけは揺れます。
まるで水中に入っているかのようで面白いですね。
PlaneColliderの仕様(重要)
UnityのPlaneColliderと違って、
「Colliderに形状を作る事は出来ない」仕様になっていることです。
Planeオブジェクトはあくまで「位置と角度の目安」です。
影響範囲は「無限」です(ソースコードがそうなってた)
実装方法
とても簡単です!
私は最初、これをどう使うか理解出来ず悩んでましたが、意外に簡単でした。
空のゲームオブジェクトに配置してしまうと、よく分からなくなってしまうので、
個人的オススメ方法は、
Planeオブジェクトに「DynamicBonePlaneCollider」をアタッチすることです。
Planeに突き刺さっているような表示にしておけば、ガイド代わりに使えます。
「DynamicBonePlaneCollider」各部説明
Direction:X、Y、Z軸の切り替えができます。
Center:オブジェクトが移動出来ない状況の時に、ここで数値的に移動できる。
Bound:outsideは黄色、insideは紫色になります。衝突方向が反転します。
DynamicBoneColliderBaseとは
スクリプトフォルダにあるもう一つのColliderソースコード。
以前、「DynamicBoneColliderBaseが謎」でモヤモヤしてる事をお伝えしましたが、
ソースコードを読んでみたら、
他のColliderを開発するための継承用クラスでした。
ご自身でオリジナルColliderが開発できるようになっています。
PlaneColliderが追加されたように、
今後のアップデートで新たなColliderが追加される可能性を感じました。
ユニティちゃんで遊んでみる
ベッドでゴロゴロ
「DynamicBonePlaneCollider」のコライダーを用いて、
ベッドでゴロゴロする事が出来る様になりました!
とりあえず髪だけ判定に加えていますが、中々理想的な挙動になりました。
ベッドに座った時も安心
座り姿勢から横になる流れをイメージして、
物理的な髪の挙動が出せるようになりました。
Colliderのセットアップ
②③の枕には通常のColliderをセットして、①だけPlaneColliderをセットします。
黄色のラインは上向きです。
PlaneのMesh RendererはOFFにしておいて、必要なくなったら消してください。
Dynamic Bone Plane ColliderはデフォルトのままでOKです。
髪の衝突に3つ新たに追加して完成!
リストが増えすぎると管理し辛くなったり処理が重くなってしまいますので、
ベッド周りに入ったらソースコード側から直接入れ変える様なシステムがあると良いですね。
ランタイム(プレイ中)にColliderを消す方法
プレイ中に、
ColliderオブジェクトのActiveをdisableにしても、
衝突判定を無力化することができませんでした。
手っ取り早く対応する方法として、
「Colliderオブジェクトを削除」または「影響が出ない場所へ移動させる」方法が簡単です。
例えば、
ベッドにColliderを設置してキャラがワチャワチャ遊んだ後に、
ベッドから降りたらColliderを消して床だけの判定にしたい場合、
(スカートやロングヘアーが衝突するので)
↑ベッドのColliderを ↓ 直接床へ移動してもOK
Colliderそのものは解除できませんので、
ベッドを床に移動させてあげるか、角度を変えて遙か彼方に移動させる方法が簡単。
ソースコードがシンプルですので、
衝突リストで不要なColliderをnullにして初期化してあげれば、
コード側からのアプローチで対応できると思います。
(出来そうな感じがしますので、次回あたり紹介できたらいいなぁ)
ベッドなど、家具素材はこちら
この記事で登場するかもしれない予定アセット。とりあえず保留待機。
オシャレUIのテンプレートです「Modern UI Pack」(記事はこちら)
↑
かっこいいボタンを配置してColliderをOFFにしようと企んでましたが、
時間の都合で今回は使いませんでした。
ユニティちゃんのスカートめり込み問題
結果から話すと、上手くいきませんでした。涙
ユニティちゃんのスカートは「DynamicBone」に向いてないかもしれませんね...。
ただ、今回実践してみた
「DynamicBonePlaneCollider」はかなり有効打になる可能性を秘めています!
私が試してみた工程をお話します。
※ このGIFアニメは「PlaneCollider」を使っていない通常のColliderで再現しています。
こうなって欲しい!
スカートの端Colliderが、太ももをスルッと避けてしまい、
その結果、すり抜けが起きているように見えます。
原因?
通常のColliderは「カプセルコライダー」と同じタイプだから、
少しの衝撃でスルリと落下していたと思われる。
DynamicBonePlaneColliderで対応してみた
「Character1_RightLeg」の階層に、空のゲームオブジェクトを作成して、
太ももの表面あたりまで座標を移動。
「DynamicBonePlaneCollider」を取り付けて完成です。
こうすれば確実にすり抜けること無くキープしてくれます。
「これで絶対直る!」と信じて実装してみましたが...。
実験その1
スカートのDynamic Boneの設定です。
とりあえずColliderがスルリと落ちる事がなくなって、
先端がギリギリ残ってくれてます。
次に試したこと。
Dynamic Boneの設定が正しいか手動で検証してみる。
そもそも回転しても曲がらなかった。
もっと上の階層から実装しなければ作用しない事がわかる。
実験その2
「J_R_Skirt_00」を親にして、Susoが入らないように設定してみた。
「間違い無くココ!」って感じがしますよね!
その結果
親ボーンが垂れ下がってしまい、やっぱり上手くいきませんでした。
この後、色々試しました。
・重力のパラメータを切ってみる
・4種類の挙動パラメータを可能な限り調節
・「DynamicBonePlaneCollider」の位置をズラしてみたり・・・
・Updateモードを変更
・Freeze Axisで回転軸を固定したり
まだ試してない案
足を上げた時に、親ボーンに影響する設計で「通常のCollider」もしくは「DynamicBonePlaneCollider」を新たに追加して強制的に浮かせれば...
でも何だか正解じゃ無いような気がします。
気になる事
今まで回転出来てた「親スカート」が、何らかの圧力で押し戻されてしまい回転しなくなりました。
もしこれが原因で回転しないのであれば、納得がいきます。
あと少しで上手くいきそうな感じがしますよ〜!
アドバイスをよろしくお願いします!
手詰まり感があって、正解が分からなくなってきました。
もしご存じな方は、コメント欄にアドバイス頂けますと泣いて感謝します。
記事にしてシェアしたいと思います。
中々出番が来ないプロ生ちゃん。
Dynamic Boneドキュメント
Readme.txt(機械翻訳)バージョン1.2.0
ダイナミックボーンはキャラクターの骨や関節に物理学を適用します。
シンプルな設定で、あなたのキャラクターの髪、布、胸、またはあらゆる部分が現実に動くでしょう。
Assets / DynamicBone / Demo / Demo1を開いて動作を確認します。
ご不明な点がございましたら、メールでご連絡ください。
-------------------------------------------------- -----------------------
基本設定:
1.適切に設定された文字を準備すると、Mecanimと従来のリグの両方がサポートされます。
2.ダイナミックボーンを適用するゲームオブジェクトを選択します。
3.コンポーネントメニューで、Dynamic Bone - > Dynamic Boneを選択します。
4.インスペクタで、ルートオブジェクトを選択します。
5.動的骨パラメータを調整します(次のセクションの詳細の説明を参照)。
必要に応じて、コライダーオブジェクトを追加できます。
1.コライダーがアタッチするゲームオブジェクトを選択します。
2.コンポーネントメニューで、Dynamic Bone - > Dynamic Bone Colliderを選択します。
3.コライダーの位置とサイズを調整します。
4. Dynamic Boneコンポーネントでは、コライダーのサイズを大きくし、対応するオブジェクトを追加します。
-------------------------------------------------- -----------------------
ダイナミックボーンコンポーネントの説明:
- Root
物理を適用する変換階層のルート。
- Update Rate
内部物理シミュレーションレート。フレーム/秒で測定。
- UpdateMode
通常:通常の更新。
AnimatePhysics:フィジックスエンジンと同期するためにフィジカルループ中に更新されます。
UnscaledTime:Time.timeScaleから独立して更新されます。
- Damping ダンピング
どのくらいの骨が減速した。
- Elasticity 弾力性
各骨を元の向きに戻すために適用された力。
- Stiffness 剛性
骨の元の向きがどれくらい保存されているか。
- Inert 不活性
どのくらいキャラクタの位置変化が物理シミュレーションで無視されるか。
- Radius 半径
各骨は、衝突者と衝突する球体とすることができる。半径は球のサイズを表します。
- Damping Distribダンピング分布、弾性分布、剛性分布、不規則分布、半径分布
階層チェーン上でのパラメータの変更方法曲線の値は、対応するパラメータに乗算されます。
- End Length 終わりの長さ
End Lengthがゼロでない場合、変換階層の最後に追加のボーンが生成され、
長さは最後の2つの骨の距離で乗算されます。
- End Offset 終了オフセット
End Offsetがゼロでない場合、変換階層の最後に追加のボーンが生成され、
オフセットは文字のローカルスペースにあります。
- Gravity 重力
力は、世界の空間の骨に適用されます。キャラクターの初期ポーズに適用される部分的な力は相殺されます。
- Force 強制
力は、世界の空間の骨に適用されます。
- Colliders 衝突
Colliderオブジェクトは、骨と相互作用します。
- Exclusions 除外
骨は物理シミュレーションから除外されます。
- Freeze Axis 凍結軸
特定の平面上を移動するように骨を拘束する。
- Distant Disable 遠隔ディスエーブル、参照オブジェクト、オブジェクトまでの距離
キャラクターがカメラやプレーヤーから遠い場合、物理シミュレーションを自動的に無効にします。
参照オブジェクトがない場合、デフォルトのメインカメラが使用されます。
Dynamic Bone Colliderコンポーネントの説明:
- Center センター
オブジェクトのローカル空間にある球またはカプセルの中心。
- Radius 半径
球またはカプセルの半径は、変換のスケールでスケーリングされます。
- Height 高さ
2つの半球を含むカプセルの高さは、変換のスケールでスケーリングされます。
- Direction 方向
カプセルの高さの軸。
- Bound バウンド
骨を外側に束縛するか内側に束縛するかを制限する。
-------------------------------------------------- -----------------------
ダイナミックボーンスクリプトリファレンス:
- パブリックvoid SetWeight(float w);
物理学と既存のアニメーションとの融合を制御します。
- パブリックvoid UpdateParameters();
実行時にパラメータを更新し、パラメータを変更した後にこの関数を呼び出します。
-------------------------------------------------- -----------------------
バージョン履歴
1.0.1初期リリース。
1.0.2インスペクタのUIを改善しました。
1.0.3有効/無効にすると不活性不安定になる不具合を修正しました。
1.1.0カーブを使用して、階層チェーン上のパラメータを設定します。
Colliderは束縛内の骨を束縛するように設定できます。
1.1.1除外設定を追加します。
1.1.2負のスケール問題に対処する。
1.1.3ボーンにスケールが含まれているバグを修正しました。
1.1.4フリーズ軸を追加する。
スクリプト経由で追加したときにバグを修正しました。
1.1.5遠隔ディスエーブルを追加します。
GCの割り当てを減らす。
1.1.6カプセル衝突者のバグを修正しました。
1.1.7 Unity 5のサポート。
1.1.8負のスケールに起因する問題を修正しました。
1.1.9マイナススケールの検出を改善する。
衝突者が内部に設定されているとバグを修正しました。
UpdateMode設定を追加します。
1.1.10 Unity 5.4以降のマイナススケールによる問題を修正しました。
1.2.0ツールチップを追加する。
平面コライダーを追加します。
実行時にパラメータを更新する関数を追加します。
Dynamic Boneの記事一覧
① 2018年5月17日
初見さん用。セットアップ方法を解説します。
② 2018年5月25日
挙動パラメータについて徹底的に調査!
Damping(減衰)、Elasticity(弾性)、Stiffness(剛性)、Inert(不活性 / 鈍い / のろさ)
③ 2018年7月1日
Colliderの基本的な特性の紹介と、
衝突判定の実装方法、キャラの髪や胸をぷにぷに触って遊べる方法を紹介。
④ 2018年7月9日
v1.2.0の新機能「DynamicBonePlaneCollider」の使い方を解説。
ベッドで髪が乱れる挙動と、ユニティちゃんのスカートめり込み問題に挑戦。
⑤ 2018年8月13日
真夏のアドベントカレンダーにて、カーブグラフの活用方法と、
パラメータ設定例を紹介しました。
7月も続行!ご利用額達成で大人気アセットを無料でGET
お得なイベントのお知らせ(2018年7月31日まで)
アセットストアのUnity公式イベント第二弾がスタートしました!!
今回のテーマは「IK制御」と「SF」
・「Bio IK」($30達成で無料化)
VRデバイスでキャラをコントロールしてバーチャルYoutuberができちゃう安価なIK制御アセット。
・「SF系の人気アセット 4種類」乗り物、キャラ、背景、宇宙生成
※ 最低額のハードルが前回より下がって達成しやすくなりました。
・「$50」→「$30」
・「$250」→「$199」
「$30」達成条件の「Bio IK」が熱い(欲しい)!!
7月もBio IKのような、レビュー5★の人気アセットが
— UnityAssetStoreJapan (@AssetStore_JP) July 4, 2018
もらえるキャンペーンを実施中!!
Unityアセットストアで$30以上のお買い上げいただいた方が対象となります。
下記のページでUnityIDのメールアドレスをご登録するだけで応募完了です。https://t.co/KqkjjZH3pf pic.twitter.com/cBLzf679TG
【イベント開催期間】2018年7月1日〜7月31日(火)まで
参加方法(必須条件)
イベントに参加するには、
イベントページにてUnity ID(メールアドレス)を登録する必要があります(重要)
エントリーしてから、イベント期間中に$30、$99、$199以上ご購入すると、
ご利用額に応じて5つのアセットが無料でゲットできます。
ボーンのIK制御、SF素材、宇宙誕生エディタ
今回の注目アセットは「Bio IK」です。
バーチャルYoutuberが出来ちゃうパワフルなIKエディタ。
狙ったポイントにスムーズに関節が動いてくれる機能を持つもので、
例えばロボットアームが球体の位置を認識して掴みに行くようなことができる。
(WebGLで意味がわかるはず)
前回の「Puppet3D」とはちょっと違うタイプのキャラ制御で面白そう。
ブログで紹介した事が無いアセットなので、近日調べて記事にしたいと思います。
全6アセットまとめ記事
ボーンのIK制御、SF素材、宇宙誕生エディタ
人気アセットがてんこ盛り♫ お得にゲットしちゃいましょう。
- Bio IK $20(記事無し)指定した座標に手や指の関節をスムーズに移動させるエディタ(WebGLで意味がわかるはず)
- The Starfighter $50(記事)宇宙と大空を飛行して戦闘をする巨大戦艦
- Sci Fi Space Soldier PolygonR $10(記事)HALOのマスターチーフみたいなキャラ素材
- SciFi Industrial Level Kit 2.0. $70(旧記事)大きな工場、科学技術、ハイテク産業のテーマシーンのSF系インテリア3Dモデル
- SPACE for Unity - Space Scene Construction Kit $85 (記事)マウス1クリックで超綺麗なオリジナル「宇宙」が爆誕するエディタ
【イベント開催期間】2018年7月1日〜7月31日(火)まで
過去セールから神アセットを探す
過去大セールで登場したタグ一覧です。ぜひご活用下さい。
- MADNESS SALE カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Back to School セール カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Unite 2017 Tokyo記念セール カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Biggest Sale Ever カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Wishlist Sale カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Holiday Sale カテゴリーの記事一覧 - Unity AssetStoreまとめ
※右サイドバーの「月別アーカイブ」や「タグ」からチェックすることもできます。
アセットの検索方法
検索ボックスから「アセット名」「希望する機能のワード」を入力してチェックしてください。
【新サイト】アセット割引情報
$43.20 => 無料化 100%OFF!!
【過去ログ】無料アセット
【過去ログ】作者セール&注目アセット
【よく使う記事】無料の3Dモデルまとめ
この作品はユニティちゃんライセンス条項の元に提供されています