2019/01/19更新
unity 2019現在、標準clothはバグっているのでこちらのアセットを使うのが吉
◆
みんな大好き布の動き。
今回はクロスシミュレーションCross simulationの使い方を書きます。
Unity 2018.1.02f 使用
布モデル作成
まず布のモデルを作成します。
メニュー > 3D Object > Plane
Positionを全て0にしましょう
通常ではメッシュの裏面は表示されないので、スタンダードアセットのトゥーンを適用します。そうすると裏面も表示されます。
メニュー > Assets > Import Package > Effectsを選択し、Importを行います。
PlaneのMaterialsにToonBasicを設定します。
マテリアルのMain Colorを設定しピンクっぽい色にします
これでメッシュの裏側も表示されるようになりました。
Clothコンポーネントの設定
Clothコンポーネントを設定します
Planeを選択肢、インスペクタ下部の[Add Component]から[Physics]>[Cloth]を選択します
Skinned Mesh RendererとClothが追加されます
◆パラメーターを設定します。
[Stretching Stiffness]布の伸び具合 0~1で設定。
“1”で伸びにくくなる。0.8設定
[Bending Stiffness]布のねじれ具合 0~1で設定。
“1”でねじれにくくなります。 0.2設定
[Damping]布の動きの減衰 0~1で設定。
“1”は最も減衰力が働きます。 0.05に設定
[Friction]は衝突物との摩擦。0~1で設定
0.5のままです
[Solver Frequency]はシミュレーションの精度。数値が大きいほど精度が高くなります。
ここでは120のまま
このままでは重力で落ちてしまうので次に進みます。
◆ジョイントの位置を固定して落下を防ぎます
この画像のボタンを押して[Cloth Constraints]ウィンドウを開きます
[Select]をクリックして、固定するジョイントをドラッグで選択します
[Max Distance]にチェックを入れて有効にします
[Max Distance]ではジョイントの初期位置から移動できる最長距離を設定します。0を設定することで一を固定することができます
[Max Distance]が0に設定されるとジョイントが赤色で表示されます。
※それにしてもここまで近づかないとジョイントが判別できません。大きくしてよー>Unityさん
この状態で実行してみます
布っぽくなってきました
布同士の衝突
◆布同士が貫通しているので、衝突するように[Self-Collision]を設定します。
先程より右側のボタンをクリックして[Cloth Self-Constraint And Inter-Constraint]ウィンドウを開きます
[Select]をクリックして、全てのジョイントを選択します
[Self-Collision and Inter-Collision]にチェックを入れて有効にします
・[Self-Collision and Inter-Collision]を有効にすると、ClothパネルにSelf Collisionのプロパティが表示されます
[Self Collision Distance]を0以外に設定するとセルフコリジョンが機能します。
“0.6”に設定して実行してみます
布が貫通しなくなりました!
別オブジェクトとの衝突
◆別オブジェクトを(キャラ)を配置して衝突物として設定します
ヒエラルキーの[Create]から[3D Object] > [Plane]を選択して地面となる板状オブジェクトを作成します
布が垂れ下がったときに衝突しないように[Position]のYを”-11″に設定します
大きさ[Scale]のX,Zを10に設定します
スタンダードアセットのキャラクターをSceneに配置します。
Assetsメニューから[Import Package]>[Characters]を選択してインポートします
下画像を参考にヒエラルキーにドラッグしてキャラクターを配置します
キャラクターの大きさを3にして、Position [Y]”-11″ [Z]”-9″に設定します
※このキャラクターは衝突判定となる[Collider]コンポーネントが既に設定されています
布の位置の固定位置を変更します
[Cloth Constraints]ウィンドウを開き、[Select]をクリックし、全てのジョイントを選択します
[Max Distance]のチェックを外し無効にします
改めて端の一辺を選択して[Max Distance]にチェックを入れて有効にします
[Cloth]パネルの[Capsule Colliders]プロパティを開きます。
[Size]を1に変更し、[Element 0]にキャラクターをドラッグする事で衝突判定が機能するようになります
これでキャラクターと布の衝突判定が完成しました!
コメント