神部まゆみです(*^-^*)
今回は前回の記事の続きで、VertExmotionをいじってみます。
今回は私の備忘録的な意味合いが強いから、VertExmotionを持ってない人には全く参考にならないと思う(;^_^A
パラメーターいじったりとか、記録がメインなので。
参考にできるところがあれば参考にしてね。
VertExmotionはこれね。
私は安い方の通常版を使ってます。
前回の記事はこれね。

- Collider Setting
- Sensor Settings
- まとめ 重要な機能や注意点など
- よくある動かない原因
- ペアレントするボーンが間違っている
- ボーンではなくメッシュにペアレントしてしまっている
- インスペクターメニューでVertExmotionがオフになっている
- シェーダーがVertExmotionに対応していない
- 動いてはいるが他のセンサーと競合していて打ち消し合ってしまい、動いていないように見える
- オブジェクトを当てて動作確認する場合、当てる側にコライダーが設定されていない
- センサーで指定するウェイトのレイヤーが間違っている
- 動いてはいるが、3axisで制限した範囲が狭すぎて動きに気付かない
- 動いてはいるが、ウェイトが小さすぎる、distance powerを上げすぎていて動きに気付かない
- それでも直らない場合、一旦コンポーネントごと消して作り直す、Unity再起動するとか。でも大抵は上記のケアレスミスがほとんどだと思う
- おわりに
- 2021/12/19追記:ちょっとメッシュを動かしたいだけなら、 blenderでシェイプキー作ったほうがいいかも?
Collider Setting
最初にセンサー設定をいじったのですが、あまりいい感じにならなかったので、コライダー設定から書いてます。
Wobble(ぐらつき?)は揺れ制御にかなり重要かも。
Wobbleなしだと突き抜けたりしてしまう。
センサーとかコライダーの設定にもよるけど、この状態でboxコライダー付きのcubeを当てると突き抜けちゃう。
ーーーーーーーーーーーーーーーーーーーーーーー
追記:
突き抜け問題は、sensor settingsで3axis limitを設定することで解決しました。下に書いてあります。
ーーーーーーーーーーーーーーーーーーーーーーー
Wobbleをオンにすると、衝突してから返ってくる頂点の設定が可能
これ、Wobbleにチェックを入れないと赤枠のメニューが出ないから注意!
Time Scale これは戻ってくるまでの時間?
↑だとTime Scaleが5になってるけど、この状態でcubeを当てると、高速バウンドして帰ってくる(笑)。
TimeScaleを高くするほど、戻ってくるスピードが速くなるみたい。
10にしたら超高速になったけど、1にしたらゆっくり戻ってきた。
でもどっちにしても穴が空いちゃうから、パワーの設定はこれじゃないみたい。
Limit これでどのくらい揺れるか制御できるっぽい
0にしたら全く動かなくなったけど、0.1でもかなり揺れる。
マニュアルには最大バウンス値?みたいに書いてあったから、バウンスを減らせばいけるかな?
でも0.001にしても相変わらず突き抜けちゃったから、バウンドを制限するだけみたい。
Bouncing 0にしたら穴が空いてもバウンドしなくなっちゃった
これはこれで必要だから0はやめたほうがいいね。揺れなくなっちゃうし( ̄▽ ̄;)
傷が自己再生していく感じには使えるかもしれない(笑)。
Damping 衝突から戻ってくる力みたい。0だとビヨンビヨンしたまま全く戻ってこないw
10にしたら速攻戻ってきた(笑)。
Friction いじってみたけど変わらない?摩擦係数?
これはちょっとよくわからなかった。
マニュアル翻訳したら「摩擦係数」とか書いてあったから、そういう感じのかな?
あれ、これで全部だ。
Wobbleだけじゃパワー制御は難しいみたい。
Maximize Collision チェックを外すと弱くなるっぽい
これでも突き抜けちゃうなあ(;^_^A
でも現状だと揺れが強すぎるから、チェックを外しておこう。
たくさん揺らしたい時はチェックするといいのかも。
No backward Collisions センサーの向きによって後方衝突を無効にする?
ってマニュアルに書いてあった。センサーから出てる水色のギズモがセンサーの向きみたい。
とりあえず現時点では、オンにしてもオフにしてもあんまり変わらないかな。
まぁ後方衝突は意図しない動きをしそうだし、何もなければデフォルトでオンでいいかな。
Smooth Collision 衝突アニメーションをスムーズにする?あまり変わらないっぽい
一応1にしとくくらいでいいかな?0にしても増やしてもあまり変わらないっぽい。
Position コライダーの位置。結局これでコントロールするしかない?
外側をちょっと触るくらいが一番いい挙動をするような。調整次第かな。
まぁ動画作るだけなら私がオブジェクトの動きをコントロールできるから、突き抜けるまで当てなければいいんだけど( ̄▽ ̄;)
あとはもうセンサーの設定でやるしかないのかな。
そもそもこれ力が強すぎるんだと思うから、センサーの設定と併用してやっていこう。
Radius コライダーの半径
最初に設定すると思うけど。
とりあえずウェイトを塗ったあたりと同じくらいのサイズでいいと思う。
Sensor Settings
最初にこれをいじるべきなんだろうけど、最初にいじったけどいい結果が得られなかったので…。
Collisionの設定と併用すればいけるかも。
parent センサーを設定するボーンの指定?
これ、今顔のメッシュをいじっているからFaceメッシュを指定したんだけど、キャラを動かしたらセンサーとコライダーが追従してこず、空中に置き去りにされた( ̄▽ ̄;)
Headボーンを指定したらちゃんと追従してきたよ。
胸に仕込む場合はBustとか、なければchestとかupperchestとか、一番近いボーンを指定しておけば上手く追従してくれると思う。
Radius センサーの半径
これ、あまり大きくし過ぎるとセンサー内にある設定したウェイト部分が全部一度に揺れるみたいなので、揺らしたい部位だけに絞って小さくしといた方がいいっぽい。
右頬だけ、左頬だけ、みたいに。センサーは複数作れるので。
じゃないと右頬のコライダーに触れたら左頬が触れる、という謎の現象が起きるみたい(笑)。
揺らしたい部位だけ、ピンポイントではみ出ないように配置したほうがいいね。
Distance Power これが一番パワー制御に近い?増やすほどウェイト範囲が絞られて弱くなる
マニュアルをgoogle翻訳したら「センサーの吸引力」とか出たんだけど(笑)、これを増やすとウェイト範囲が狭くなって弱くなるっぽい。
最初これだけで制御しようとしたら微妙な結果になったからコライダー設定を先にしたんだけど、コライダー設定と併用すればいい感じになるかな?
お、5だとまだ穴が空いちゃうけど、8~10なら大丈夫っぽい。※でも後で後ろからやったらちょっと突き抜けたw
最初ここだけで設定しようとした時は穴が空いちゃったりしたんだけど、やっぱりコライダーの設定と併用してやったほうがいい感じかな?
・distance power10 でコライダーのmaximizeにチェック → 突き抜けた
・distance power10 でコライダーのbounce値を上げる → 突き抜けた
・distance power10 でコライダーのdampingを0に近づける → ビヨンビヨンが止まらないけど、衝撃を弱くしてるから見た目はまぁ悪くない
んー、他の設定項目も見てみよう。
とりあえずdistance power10で見てみる。
Motion Factor モーションの振幅を増減する?
0にしたり10にしたりしてみたけどあんまり変わらないっぽい?
とりあえずデフォルトの1でいいかな。
3 axis limit 揺れをコントロールするならこれは一番重要かも
XYZの3軸で頂点変位を制限できる?とかマニュアルに書いてあった。
これを制限すれば、動く範囲を制限して突き抜け防止できるかもしれない。
これにチェックを入れると、XYZ軸を指定するメニューが出てくる。InnerとOuter2種類ずつ。
InnerとOuterは、球体を真ん中で割った半径を表してるみたい?
Outerのz軸を0にしたら前方の半径が消えて、Innerのz軸も0にしたら後方の半径も消えたよ。
あーなるほど。これで動かす範囲を制限しておけば、強い力で動いても、可動範囲が制限できるってわけかな。
これ使えば突き抜けずに済みそう。
0.01にするとこのくらい。これなら大丈夫かな?
じゃあこれでコライダーの設定でバウンス値を10くらいにして、distance powerを1にして揺らしまくったらどうなるだろう。
あれ、ダメだ。揺れが強すぎると制御しきれないとか?明らかに指定した範囲外まで揺れてるし…。
一度ゲーム画面を抜けて、設定し直したらイケた!
unityって実行中に設定変えても、その場で反映されるものとされないものがあるっぽい?
一度実行やめてから設定しなおしたらいけたみたい。distance power1、コライダーのbouncing10ですごい揺れても範囲内で納まってるっぽい。
maximizeは3axisの指定より優先されるっぽい?意図しない挙動をする可能性があるから、3axisとは併用しないほうがいいかも
3axisで限界範囲を指定しても、maximizeしたら一瞬限界突破してしまうみたい。
maximizeはそもそも名前からしてそういう感じっぽいから、使わなければいいかな。
というか、maximizeはマニュアル見たら「衝突ゾーンの最大面積を使用します」って書いてあるから、多分3axisを無視して優先されて最大可動するんだと思う。
コライダー範囲もセンサー範囲も明らかにはみ出してるから、「衝突ゾーンの最大面積」ってのが謎だけど、範囲指定を考慮しない物理的な最大限の挙動をする、みたいな感じなのかな。
揺らす時は、突き抜けないようにメッシュの後方は3axisで制限しておき、前方180度のみにしておいたほうがいいかも
まぁあとは揺らすパワーの強さとの兼ね合いかな。
innnerのZ軸を0にしたら、頬の内側の半径は消えたよ。
これ今気づいたけど、水色のギズモみたいなやつがセンサーの向きらしいんだよね。
センサーの向きと反対だからInnnerなのか。今気づいた(笑)。
これなら、前方にはもう少し多めに揺らしても大丈夫かな。
…あれ、これでもダメだった…なんでだろう。
はみ出しがシビアなのは、顔のすぐ下に赤面テクスチャを仕込んでいたのが原因だった(笑) じゃあこれで解決
ほんの僅かだけ下に配置したから、ちょっと揺れるだけではみ出しちゃうのは当たり前か(笑)。
赤面テクスチャを仕込んだオブジェクトをインスペクターメニューでオフにしたら、何の問題も無く動作した。
顔の内部にオブジェクト仕込むことにはこんなデメリットがあるなんて( ̄▽ ̄;)
blenderで調整して、もう少し後ろに隠しておこう。
それか、シェイプキーで小さくできるようにしておいて、使う時だけ戻して見せるようにすればいいかな。
内部に仕込む時は気を付けよう。
inflate センサー範囲の頂点が増幅されて大きくなる感じ
デフォルトだと0だけど、使わなければ0のままでOK。
実際に見れば早いでしょう。
あれ、でもセンサーやコライダーを動かしたからか、最初にやった時と挙動が違う。
調整次第で使い道はあるかも。
あー……エロい使い道を思いついたけど(笑)、どうだろ。覚えてたらやってみるかも(笑)。
Damping 増加させるとモーションが安定する?
とマニュアルをGoogle翻訳したら書いてあったけど、いじってもあんまり変わらないっぽい。
コライダーのDampingは明らかに目で見て分かる感じだったけど、センサーの方がそうでもないかも。
とりあえずデフォルトの1でいいかな。
Bounsing バウンス値を増幅
これいじってもあんまり変わらないっぽい?
これよりコライダーのbouncingをいじったほうが明確にわかりやすいかも。
もっとたくさん揺らす時には使えるのかもしれない。
t(s)
マニュアルをGoogle翻訳したら、 視覚化のみのために曲線時間を変更 とか書いてあった。
なんだろう?MMDの補完曲線みたいなやつかな?
いじったけど明確な違いが分からなかったので、デフォルトの1でいいかな。
というか1以下にできなかった。
Unscaled time
マニュアルに記載なし( ̄▽ ̄;)
チェックしたけど特に何も変わらなかった。
デフォルトではチェック入ってなかったから、まぁ使わなくていいかな。
Time Scale
これもマニュアルに記載ないけど、コライダーにも同じのがあったよね。
でもこれもいじったけど特に変わらなかった。
コライダーのほうをいじればいいかな。
まとめ 重要な機能や注意点など
用途によるんだろうけど、私がいじってみて重要な機能だと思ったところとか、注意点とかを最後にまとめておきます。
Collider Settings
maximize
重要と言うか、はみ出ちゃう時はこれをオフにすれば直るかもしれません。
Wobble
Sensor Settingで揺れを設定するよりも、こっちで設定したほうが目に見えて変わるような?
揺れを変えたいなら全体的に見たほうがいいかも。
Position とRadius
コライダーの位置は衝突判定を行う上で重要。
まぁ難しく考えず、とりあえずウェイト塗ったあたりと重なるようなサイズで置いておいて、揺れは3axisやdistance powerやwobbleで調整するのがいいかな?
Sensor Settings
できれば細かく分けたほうが、可動部位もコライダーも分けて別々に動かせるからクオリティは上がるかも。
ただ管理が煩雑になるから、ある程度のところで妥協したほうがいいと思う。
Parent
センサーを仕込む場所に一番近いボーンを指定しないと、キャラを動かした時に上手く追従してこない。
faceとかbodyのメッシュを指定しても静止状態なら動作するけど、動かすと追従できないみたいだからメッシュは指定しちゃダメかも。
動かした時に上手く動作しない場合は、play中にセンサーがどこにあるか確認するといいかも。
Radius
センサーは複数作れるので、一部位ごとに作ってコライダーを分けるべきかも。
大きさはウェイトを塗ったのと同じくらいでいいかな。
Distance Power
パワーの微調整のメインはこれでいいかな?
揺れはこれとWibbleだけでやって、3axisで範囲制限すればそれだけでかなりコントロールできそう。
3axis limit
最初にRadiusとコライダーの大きさとかは設定しちゃう場合が多いと思うけど、その次あたりの最初のほうにやっておけば、変なはみ出しを防げると思う。
あまりオブジェクトの内側にも外側にも揺れが行き過ぎると、特に人間とか動物のオブジェクトだと痛そう( ̄▽ ̄;)
ただ、あんまり強く揺らさないなら必要ないかもしれない。
inflate
センサー範囲内を大きくしたりできるみたい?
まだあんまりいじってないけど、なんかえっちなことに使えそう( *´艸`)
ただ、上手く調整しないと偏った頂点だけが大きくなって変になっちゃうかも。
よくある動かない原因
このアセット設定項目が多いから、頭が混乱してきてよく動かなくなることがある(-_-;)
ペアレントするボーンが間違っている
これは本当によくある!
選択したボーンをクリックすると、ヒエラルキーを黄色でハイライトしてくれるから、確認したほうがいい。
できればヒエラルキーからドラッグアンドドロップで指定したほうが無難。
特に同じキャラやボーン名がほぼ同じキャラが複数配置されている場合、ボーン名見ただけじゃ誰のボーンなのか分からなくなって間違える(-_-;)
ボーンではなくメッシュにペアレントしてしまっている
これも本当によくあった(-_-;)
Tポーズでデフォルト位置のままだとメッシュでも動くみたい?だけど、動かすとセンサーが追従せずに空中に置き去りになるから動かなくなるっぽい。
外付けして内部に仕込んだオブジェクトとかは、一番近い場所にあるボーンをしておけばOK(顔ならHeadなど)。
インスペクターメニューでVertExmotionがオフになっている
ダイナミックボーンと切り替えて使おうとしてたら、忘れて何度かなった(-_-;)
「オフになっています」とか警告が出るわけじゃないから、細かく見ていかないと気付かない。
単純なだけにありがちなミス。
知らずに「一からウェイト塗り直さないとダメなのかなぁ」とか思って、2~3回ムダに作り直したりした(-_-;)
シェーダーがVertExmotionに対応していない
UTS2を改変して使う場合、改変したシェーダーがシェーダー選択画面に出ない?みたいなので、改変したシェーダーを直接ドラッグアンドドロップしてる。
動かない場合はシェーダーの問題なのかを切り分けるために、一度VertExmotionのデフォルトのStandardシェーダーあたりで動かしてみるといいかも。
それで動けばシェーダーの問題、それで動かなければ別の問題だからね。
動いてはいるが他のセンサーと競合していて打ち消し合ってしまい、動いていないように見える
ダイナミックボーンと併用しようとしたらなった(-_-;)
この場合は一旦センサーをインスペクターでオフにしてみると原因がわかるかも。
最初はわざわざ削除したりしてたんだけど、センサーは設定したメッシュの子としてヒエラルキーメニューに表示されてるから、それのインスペクターをオフにすれば大丈夫。
あんまりセンサー増やすと管理しにくくなるし、もし作り直す場合もめんどくさいから、できるだけシンプルにしといたほうがいいと思う。
オブジェクトを当てて動作確認する場合、当てる側にコライダーが設定されていない
半径0とか小さい値が入ってて気付かないことも。
ダイナミックボーンコライダーとかには反応しないみたいだから、使ってる人は注意。
センサーで指定するウェイトのレイヤーが間違っている
レイヤー指定をAllにしておけば間違えないとは思うけど、分けて使う場合は注意。
レイヤー2に塗ったウェイトに反応するようにセンサー範囲やコライダーを設定しても、間違ってレイヤー1や3を指定しちゃってると動かないから。
まぁこの場合はセンサー設定画面でウェイトが表示されないから、気付きやすいとは思うけど。
動いてはいるが、3axisで制限した範囲が狭すぎて動きに気付かない
3axisで制限するとその範囲内でしか動かないから、範囲が狭すぎるとほとんど動かない状態になっちゃう。
一度3axisを切って動かしてみて、動くかどうか確かめてみるといいかも。
動いてはいるが、ウェイトが小さすぎる、distance powerを上げすぎていて動きに気付かない
ウェイトが0.1くらいあれば大体分かるとは思うけど、それ以下だと動きがかなり小さいから気付かないかも( ̄▽ ̄;)
あとはウェイトが大きくても、distance powerを上げるとセンサーに適用されるウェイトは小さくなるから、一度distance powerを0とか1にしてみるといいかも。
それでも直らない場合、一旦コンポーネントごと消して作り直す、Unity再起動するとか。でも大抵は上記のケアレスミスがほとんどだと思う
ここまではやらなくてもいいと思うけど、経験上、これまで挙げたミスを見落としていた場合がほとんどかも( ̄▽ ̄;)
そもそも作り直したり再起動したりしても、結局何の意味も無かったことが多かった気がする(^_^;)。
よーく見たらインスペクターがオフになってたとか、ペアレントが間違ってたとかのケアレスミスがほとんどだったかも。
ペアレント関連で間違えることが本当に多いから(私の場合はw)、別のキャラのボーンを指定してないか、ボーンではなくメッシュを間違えて指定していないかチェックしたほうがいいかも。
あまりに直らないなら、作者さんにメールしてサポートしてもらったほうがいいと思う。
でも大抵は些細なくだらないミスだろうから、作者さんに説明するほうが時間かかるかもしれない。英語で問い合わせないといけないし( ̄▽ ̄;)
おわりに
こんなところかな。
昨日買ったばかりのアセットだから間違ってる部分も結構あると思うけど、気付いた点があれば加筆修正するかも。
私も後で見返して参考にすると思うし。
参考になりそうなところは参考にしてね(*^-^*)
2021/12/19追記:ちょっとメッシュを動かしたいだけなら、 blenderでシェイプキー作ったほうがいいかも?
久々に見返してみたから追記しておきます。
VertExmotionアセットは結構調整が大変な印象なので、モデルの体の一部をゆらしたいとか動かしたいだけなら、blenderでメッシュやボーンを動かしてシェイプキー作って、unityでアニメーション切り替えたほうがラクかも?
シェイプキーについては、以前書いた↓このあたりの記事が参考になるかも。












VRコンテンツだったら胸をインタラクティブに動かせる設定にすれば、鷲掴みして揉んだりできると思う(笑)↓。



VertExmotionは一度設定したら改めて設定しなおすのがめんどくさいので、プレハブ化して保存しとくとか工夫したほうがいいかも。
まぁ設定と用途によると思いますが(;^_^A