ゴマちゃんフロンティア

気まぐれと勢いで作るUnityゲーム開発日記です。

【再編集】Unity開発メモまとめ「Clothコンポーネント」

time 2015/09/27

※本記事は旧ブログの記事を再編集し、再度投稿したものです。
 一部内容に差異がある可能性がありますので、予めご了承ください。

Unity5から、それまでのCloth系コンポーネントがClothのみの1本に統合されたようです。
なので「Interactive Cloth」や「Skinned Cloth」はなくなりました。

EditConstraint

メッシュの頂点に対し、どの程度まで動かすかを設定します。
専用のUIが用意されており、方法は範囲選択or頂点クリックの2パターンがあります。

そのままでは超絶見にくいので、シーンビューのレンダリングをWireFrameに変更します。
またはVisualizationの「Manipulate Backface」にチェックを入れると頂点が透けて見えるようになります。

shot2ss20150531221157814

MaxDistanceにチェックを入れ、「動かさず固定する部分」が赤色になるようにします。
逆に動かす部分は緑色にするわけですが、赤色の頂点さえ付けておけば緑色にしなくてもシミュレートしてくれます。

「動かす頂点だけど、緑だと動きすぎる」という場合は、赤と緑の中間の色に設定します。
いきなり中間に設定しようとすると、入力した値が最大値になる(=緑色になる)ため上手く設定できません。
先に動かす箇所を緑色にして最大値を設定し、その後で0~最大値の中間を指定します。

パラメータメモ

・StretchingStiffness
布の伸縮率を設定します。
リファレンスには「頂点数を減らす程硬くなる」と書いてあります。

・BendingStiffness
布の曲げ剛性を設定する・・・らしいです。
頂点数によって変わるのはStretchingStiffnessと同じようです。

・UseTethers
過剰な伸縮を行わないようにする制約を適用するそうです。
OFFだと頂点が1つだけ吹っ飛んでしまったりするので、基本ONで問題なさそう。

・Damping
布がどの程度湿っているかを0~1の間で設定します。
1にするとかなり鈍くなります。

・friction
キャラクターと布との間に生じる摩擦だそうです。
キャラクターを回転させた際に布が引っかかってしまう場合、この値を下げるとスルっと外れてくれます。

・Acceleration系
UnityのWindZoneはTerrainに配置した草木やパーティクルにしか反応しません。
外部的な力を加えたい場合、「Extrernal Acceleration」と「Random Acceleration」の値を変更します。

・World~Scale系
キャラクター本体の移動が布に与える影響を設定します。
高いと移動に対してアグレッシブに影響を受けるので、自分は0か低い数値に設定しています。

・Collider系
Sphere ColliderとCapsel Colliderを設定できます。
ここで設定したコライダーを貫通しなくなります。
主な用途は体に合わせてコライダーを設定し、めり込まないようにすることでしょうか。

shot2ss20150604131213760

逆を言うと上の2種類のコライダーしか設定できません。
自分のキャラのように単純なモデリングならいいのですが、リアルな人間などの場合は何個もコライダーを用意する必要がありそうです。

上手くいかない場合

Edit Constraintsで設定してもなびかない場合

Skinned Mesh Rendererの「RootBone」が設定されていると上手くいきません。
特にBlenderで親子関係を設定してアニメーション等を作成していると見落としやすいです。
RootBoneを解除(None)すればOKです。

メッシュの形状にもよりますが、明らかに不自然なレベルで動かないので分かりやすい現象ではあります。
また、RootBoneが設定されているとEdit Constraintsを設定していなくても落下しません。

メッシュが不必要に伸びてしまう場合

上とは逆に、Clothが効きすぎてびろびろに伸びてしまう場合は、Clothを付けているモデル自体のScaleを調節するといい感じになります。
小さくしすぎると逆に効かなくなってしまうので適度にサイズを下げましょう。
Scaleというよりは、Boundsの値がそれに応じて変化するため・・・でしょうか。

スポンサーリンク

down

コメントする



ツイッター