Syflex for modo のよく使うパラメータの覚え書きです。他のソフトでもだいたい同じように動くと思います。
Syflexとは
SyflexはModo、Maya、3ds Max、LightWave、Cinema 4D、Softimageなど様々なプラットフォームにリリースされてるクロスシミュレータプラグインです。2001年に公開された映画ファイナルファンタジーで使用されたクロスシミュレータの技術が元になった製品です。
ソフトは古い時代の作りのままなので少し使い勝手はよくない所もありますが、高速で比較的安定したシミュレーションを行うことができます。
メリット
- シミュレーションの計算速度が速い。
- シミュレーション結果が比較的安定している。震えが発生しにくい。
- modo内でシミュレーションできる。
デメリット
- サブフレームの計算ができない。速い動きでり抜けが発生しやすい。
- ホストアプリケーションとの統合が弱い。例えばモーフなどデフォーマリストの前の変形を考慮しない。
- シミュレーションキャッシュをファイル保存する必要があるのがやや面倒。
- 恐らくMarvelous Designerの方がシミュレーション安定してそう(使ったことない)。
デフォーマリストはsyClothでシミュレーション後のメッシュをスケルトンやモーフ変形できるけど、スケルトン変形した後にsyClothでシミュレーションすることができません。
Softimageでは標準機能のクロスシミュレーションとしてSyflexを搭載していました。完全に同じものではありませんが、シミュレーションの注意点などSoftimageのマニュアルも参考になると思います。
http://docs.autodesk.com/SI/2015/JPN/#!/url=./files/GUID-1A8166A7-7768-42FC-8A6A-D4CC9913F845.htm
仮想のバネ
Syflexはmodoのソフトボディと同じくstretch、shear、bendの3つの仮想のバネを使用して計算します。
パラメータの設定が同じでもメッシュの細かさによってクロスの伸縮が若干変わります。今回テストに使用したのは正方形1メートル、Subdivision 6のメッシュです。
Syflexのパラメータ
syCloth
クロスシミュレーションに必須のノードです。
mass
クロス オブジェクトの質量です。単位はグラム。
•綿(シャツ) 100
•フリース(パーカー) 250
• デニムジーンズ) 500
stiff
バネの硬さです。3つのバネ、stretch、shear、bend全体の硬さを設定します。
一般的な値の範囲は0.1〜10。20、30など10以上の値の場合は変かが少なくなる。
damp
バネのダンピング係数です。クロスの振動を抑えることができます。
一般的な値の範囲は0.00001〜0.1。0.1以上の値を設定すると計算が遅くなります。0.5以上は変化が少ない。stretch、shear、bendの値に応じて設定を変える必要があります。
stretch
ポリゴンメッシュのエッジに沿ったバネです。 stiffの値を基準にしたバネの強さです。
1.0=100%=stiffという感じらしい。
shear
ポリゴンメッシュの対角線状のバネです。stiffの値を基準にバネの強さを設定します。
stretch、shear、bendの順番で値を小さく設定するといいらしく、bendとのバランスが重要なようだ。
bend
頂点を 1 つおきにつないだバネです。stiffの値を基準にバネの強さを設定します。
syDamping
移動速度を低下させるダンピング フォースです。空気抵抗や水中での動きっぽくなる。
damp
syNail
クロスをウェイトマップで固定するフォースです。トランスフォームにオブジェクトやロケーターに接続することで固定箇所を移動できるようになります。
同様のフォースにsyPinがありますが、syNailはアイテムへの「位置コンストレイント」で、syPinは変形するメッシュに固定する「ジオメトリコンストレイント」という違いがあります。
dist
固定する頂点の距離です。0は完全に固定、0以外にすると仮想のバネが作られて吊された状態になります。
stiff
固定する頂点のバネの硬さです。distが0以上の場合に動作します。
stiffの値を上げても頂点を完全に固定することができないので、頂点を完全に固定したい場合はdist 0に設定したNailフォースをもう一つ追加するといいです。
damp
バネのダンピング係数です。振動を抑えます。
map
Nailの影響をウェイトマップで指定します。
画像左はリニアフォールオフを使ってウェイトを設定したもので、画像右はリニアフォールオフのイーズアウトを使用してウェイトに偏りを持たせた設定です。
syCollideMesh
メッシュと衝突させるフォースです。
friction
摩擦係数です。一般的な値の範囲は0~1。
damp
接触している頂点の移動を減速させます。
sticky
濡れた布がひっつくような設定になります。
envelopeExt
衝突オブジェクトからの距離を指定します。単位はメートル。
envelopeInt
衝突判定の反応エリア距離です。単位はメートル。envelopeIntの範囲に頂点が入るとenvelopeExtの距離だけ押し戻します。
マニュアルには高速移動時には値を小さくした方がよいと書かれてますが、envelopeIntの値が小さいと速い移動でCollisionがすり抜けてしまうようです。逆に値が大きすぎてシミュレーション開始時に衝突オブジェクトと重なった状態だと計算が不安定になります。
sySelfCollision
クロス自身の衝突です。計算に時間がかかるのと震えが止まらない。
syVolume
体積維持するフォースです。風船のような閉じたオブジェクトで機能します。
pressure
オブジェクト内の圧力です。パラメータの単位はわからないですが100で元の形状を維持するように見えます。
volume
volume単体で値を上げても効果がなくpressureと併用して使います。
volume 3、pressure 100にするとサイズが3倍なってるように見えます。
damp
オブジェクトの移動速度が遅くなります。
syPinの使用方法
Syflexはフォースの設定方法が少し複雑です。毎回Pin追加に失敗するので画面キャプチャしました。
- 頂点選択(アイテムを選択してると追加に失敗する) + syClothモディファイヤ選択 + メニューからAdd Pin
Syflexは専用プラグインなので当然ですがmodo標準のソフトボディよりクロス表現に適してます。セルフコリジョンの計算はそれなりに時間が掛かり、クロスが折り重なる場合はdampの値を10以上に設定しても頂点の震えを抑えるのが難しいことがあるようです。
syWindも試そうかと思いましたが単純なメッシュでも布が極端に柔らかくなる現象に遭遇てしまい、安定して動かすのがちょっと困難なのであきらめました。サンプルファイルだとちゃんと動いてるのですが、新規シーンに適用しようとするとクロスが暴れてしまいます。たまに上手く動くんですけどね。