2013年10月

2013年10月31日

2014の新機能を調べてみた その48 3dsmax 2014

今回も前回に引き続きmPグルーテストについて調べてみたい。

前回よくわからなかったアンカー配置のバインドについて実験してみた。

fig01

比較するために同じイベントを2つ用意して並べてみた。

fig01

基本的なところはmParticlesフローをそのまま使っていて、そこにパーティクルシェイプに外部から力を加えるためのmPコリジョンとパーティクルシェイプを固定するためのmPグルーが追加してある。

そしてBirthグリッドのアイコンをシェイプが地面に接するまで下に下ろして、こんな感じに配置した。

fig02

BirthGridのアイコンサイズはこんな感じで、

fig09

グリッドサイズは0.102m

fig10

シェイプの大きさは0.1m

fig11

BirthGridアイコンの高さは0.05mにした。

fig08

毎回mPグルーの壊れやすさの最大値を結構大きな値に設置しないと安定しないので、今回はmPシェイプの「密度別」パラメータを0.01にして、シェイプの質量をちょっと軽めに設定した。

fig03

mPWorldは両者で同じドライバを使うように、あとで追加した方のドライバを新規に追加しないですでにあるものを参照させてある。

fig04

そしてドライバのサブフレーム係数を14に設定した。

fig05

これはシェイプが6面体だからバインドの数を6にしたのでバインド数×2+2=14から得た数だ。

横からぶつけるBOXはパーティクルシェイプにぶつけるキーフレームアニメーションをつけたあとに「PFlowコリジョンシェイプ」モディファイヤを追加し、「アクティブ化」した。

fig06

これでこのBOXはディフレクタとして働くようになるので、これをパーティクルフローに干渉させるためにmPコリジョンのディフレクタリストに追加した。

fig07

これでパーティクルシェイプとBOXが干渉するようになった。

最後に2つのmPグルーの両方ともに「タイプ」を「リジッド」、「距離のバインド」を0.12m、「パーティクルごとの最大バインド数」を6、「フォースによる壊れやすさ」をON、「最大フォース」を500、「最大トルク」を800にして、

fig12

地面に固定するために「バインド対象」として「グラウンド」をONにした。

fig13

そして左側のmPグルーの「強固なバインド」は「中心の平均」に設定し、

fig14

右側の「強固なバインド」は「最も近いポイントの平均」に設定した。

fig15

これで左右のフローの違いは「強固なバインド」だけだ。

パーティクル間のバインドは隣接するパーティクル間と、地面に対してなされている。

fig16

これがシミュレーション結果。わかりやすいようにゆっくり再生しているよ。

fig17

自分の予想ではシェイプを整列して並べた場合、「中心の平均」も「最も近いポイントの平均」も同じになるんじゃないかと思っていたけど、結果は「中心の平均」の方がシェイプどうしの接線方向の力に対して強固にくっついていて、なかなか接続が切れないのに対して、「最も近いポイントの平均」はすぐに接続が切れてバラバラになっていく感じだ。

これはもしかしてこういう事なのかな?「中心の平均」のアンカーの配置はバインディングされるパーティクル間になるけど、

fig18

「最も近いポイントの平均」はシェイプの頂点から一番近い点を探してこんな感じになっちゃうんだろうか。

fig19

この場合、6面体のシェイプの各面に隣接する面に対して最大4つのバインドが出来ることになるから6×4=24にバインド数を増やしてみたんだけど結果はまったく変わらなかった。

ついでにぶら下げてテストをしてみた。上の図のようにアンカーの位置がシェイプの端の方にあるなら、吊り下げた時に回転力が働いて崩壊するだろうと思ったからだ。

しかし結果は「中心の平均」の方が先に切れて落ちた。

fig25

どうもアンカーにオフセットがかかってるという予想は違うみたいだな。こんな感じなのかな?

fig26

いずれにしても両者でアンカーの軸方向は同じだと思うので、マニュアルにある

メイン アンカーの軸がパーティクル間のベクトルと同じ方向になっていないと、バインドは接触サーフェスに沿って壊れやすくなり、粘着性が低くなります。

というのは当らないと思うんだけど、両者の違いはどこから来るのかな?

結局よくわからなかったけど、今度はこのアンカーの軸が異なるようにシェイプの配置を変えてみた。

BirthGridの「交互横方向オフセット」をONにして、各段でパーティクルの位置をずらしてみた。

fig20

こうすればバインドされるパーティクル間の方向はシェイプの面に対して垂直じゃなくなるので「中心の平均(軸はパーティクル間に平行)」と「最も近いポイントの平均(軸はシェイプの法線に平行)」とではアンカーの軸方向が異なるようになる。

ここでバインドするパーティクルが斜めになって遠くなるので距離のバインドもちょっと増やして、バインド数も増やした。

fig21

こんな感じで結合された。

fig22

これが結果。サブフレーム数はバインドの数を12にしたので26にしてある。予想に反して「最も近いポイントの平均」の方が強固にくっついてバラバラにならなかった。

fig23

どうもいろんなファクターが係わってくるようで微妙なところで結果が異なってくるんだろうな。そこでシミュレーションの精度をあげるために「サブフレーム係数」を50まであげてみたのがこれだ。

fig24

今度は「中心の平均」の方が崩れないで動いた。

アンカーの存在がどうなっているのかが皆目不明なのでどうにもよくわからない。ただ、シミュレーションの精度を上げれば、「中心の平均」より「最も近いポイントの平均」の方が接線力に対して壊れやすいようだ。

それではまた次回。

maxまとめページ



take_z_ultima at 12:41|この記事のURLComments(0)TrackBack(0)3ds Max | CG

2013年10月30日

ACSを使ってみた その23 modo701 SP2

前回に引き続きアニメーションレイアウトを調べてみたい。

fig01今回はこの2つのボタンから。上が「タイムツール」ボタンで下が「3Dビューキー設定インターフェース」ボタンだ。

「タイムツール」ボタンを押すとビューポートにこのようなタイムツールが表示される。

fig02

「タイムツール」はタイムラインの操作を補助するツールで、これがビューポートに表示されている時にこのツール外のビューポートを右ドラッグすると、タイムラインをスクラブでき、中ボタンを押し続けると、押している間リアルタイム再生する。

fig04

当然その間は右ボタンや中ボタンドラッグで投げ縄選択などは出来なくなる。

さらにタイムツールの右下のボタンを押すと

fig06

このようなダイアログボックスが出て、中ボタンを押しっぱなしにした時に再生されるフレームの範囲を指定できたり、「マウスホイールを使用してキーフレームのステップを行います。」のチェックボックスをチェックすれば、

fig07

マウスホイール転がすだけで現在選択中のアイテムに設定されたキーフレーム間を移動できるようになる。

fig08

キーフレームの移動で言えば以下の2つのボタンはキーフレームに移動するためのボタンで、

fig12

マウスの左ボタンでクリックした場合はボタンを押している間だけ現在時刻の前後のキーフレームに移動して、ボタンを離すともとの時刻に戻り、マウスの右ボタンでクリックした場合はボタンを離しても現在時刻はキーに移動したまま戻らない。

fig13

中ボタンを押し続けた時に再生される範囲は前述のダイアログボックスの「自動再生範囲」パラメータで指定する。再生される範囲はカレントフレームに対して前後にこのパラメータで指定したフレーム数分になる。例えばカレントフレームが10で「自動再生範囲」が5なら5〜15フレームが範囲になる。

また、再生は「再生モード」ボタンを押して切り替えることで時刻が増加する一方向の方式と増減を繰り返す方式の2通りから選択できる。

fig05

こっちがピンポン再生

fig09

こっちがリピート再生

fig10

右下のこのボタンはONになっていると右ドラッグでタイムラインをスクラブしても、ボタンを離したらもとの時刻に戻るようになる。

fig11

fig14

タイムツールに表示されている2つの数字はカレントタイムを表わしていて、設定によってそれぞれの表示形式が変化する。

時間形式が「フレーム(0)」なら上の数字はカレントタイムをフレーム数で表わして、下の数字は秒数になる。

時間形式が「秒(0s)」、「SMPTE(00:00:00:00)」、「フィルムコード(0.0+0)」の場合、上の数字がその形式になって、下の数字は全てフレーム数になる。

fig03

「3Dビューキー設定インターフェース」ボタンは変換チャンネルにキーが打たれているアイテムを選択してONにすると

fig15

ビューポートにウィジェットが表示され、選択されているアイテムと線で繋がる。もう一度このボタンを押すとウィジェットは消える。

アニメーションがついていないアイテムは選択してもウィジェットは表示されない。ウィジェットは折りたたみ式になっていて、展開するとアニメーションが設定されている変換チャンネルのカレントタイムでのキーの状態が丸で表示される。

fig16

グレーの丸はアニメーションが付けられていないチャンネルで、黄緑色の丸はアニメーションが付けられているチャンネルだけどカレントフレームにはキーが無い状態。赤い丸はカレントフレームにキーがある状態。黄緑の丸はクリックするとカレントフレームにキーが打たれ、赤い丸になる。赤い丸をクリックするとカレントフレームのキーが解除されてそのチャンネルに他のキーがなければグレーになり、他のフレームにキーがある場合は黄緑色の丸になる。グレーの丸はクリックしても何も起きない。

fig20

左側の大きな円は右側の小さな円を代表するもので、この縁をクリックすると右側の円の全チャンネルのキーをON/OFFできる。また、右側の円の状態によって3色に色が変化する。

カレントタイムにキーが無い場合、円は黄緑色になる。

fig18

カレントタイムで全てのチャンネルにキーが打たれている場合、赤くなる。

fig19

カレントタイムでキーが混在している時は青色になる。

fig17

このキーウィジェットがあればいちいちアイテムプロパティを表示しなくてもキーを打ったり解除したりという事が簡単に出来るようになるね。アニメーションレイアウトではプロパティパネルとかはデフォルト状態で非表示にしてあって、なるべく広い3Dビューポートがとれるようにデザインされているけど、これならビューポートが広いまま作業を続けることが出来そうだ。

ただし何もキーが無い状態からはキーが打てないようなので、そこはちょっと考えてもらいたいな。

それではまた次回。

modo701ブログ目次



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)modo | CG

2013年10月29日

2014の新機能を調べてみた その47 3dsmax 2014

今回も前回に引き続きmPグルーテストについて調べてみたい。

バインドタイプ「リジッド」や「単純化」でバインドされたシェイプどうしはバインドアンカーと呼ばれるオブジェクトで力学的に接合され、条件によってそれが破壊されてバインドが解除されるように出来る。

その条件を決めるのが「壊れやすさ」のグループだ。

fig04

「フォースによる壊れやすさ」がチェックされるとバインドが条件によって分離するようになる。

「最大フォース」はパーティクル間を引き離す方向の張力の限界値でこの値を超えた時にバインドが分離する。

「最大トルク」はパーティクルにかかる捩じったり曲げたりする力の限界値でこの値を超えた時にバインドが分離する。

これら2つのパラメータはアニメーション可能で、その値を有効にするのが「連続調整」パラメータだ。「連続調整」はチェックを入れると常に現在の「最大フォース」と「最大トルク」を使って分離の判定をするようになる。チェックされていない時はパーティクルがバインドされた時点の「最大フォース」と「最大トルク」が分離の判定に使われる。

「バインド距離別最大」はチェックを入れると「最大フォース」「最大トルク」がパーティクル間距離によって変化するようになり、「距離単位」を超えてパーティクル間距離が離れるとその距離が遠いほど壊れやすくなる。

「距離単位」はマニュアルには

指定した[最大フォース](Max Force)/[最大トルク](Max Torque)の値を適用するパーティクル間(中心間)の距離です。

と書かれている。この記述の「/」が割り算を表わしているのか、それとも単に2つを並べたのかがよくわからない。原文を見ると「Max Force/Torque」となっていて、MaxがForceとTorqueにかかってると見なせば単なる列挙のように思える。

よくわからない所はあるけど要するにこれは「壊れにくさ」のフォールオフを決めるもののようで、この値を超えてパーティクル間距離が伸びると、最大フォースと最大トルクがバインド距離別最大をパーティクル間距離で割った値倍されて使われ、例えばパーティクル間距離が2で距離単位が1の場合、最大フォースと最大トルクが1/2倍され、2つの値が半分になり、壊れやすくなるって感じみたいだ。

バインドされた2つのパーティクルシェイプにはアンカーが配置され、力学的に結合するような感じらしい。マニュアルにこのアンカーについて詳しく書かれている箇所が見つけられなかったのでイマイチよくわからないんだけど、そのアンカーの配置方法について「リジッド」なら「強固なバインド」ロールアウト、「単純化」では「単純化されたバインド」ロールアウトから設定できる。

fig01

アンカーの配置方法は次の3つ

  • 中心の平均
  • 最も近いポイントの平均
  • 質量に比例

「中心の平均」はマニュアルにはこうある。

バインドのメインアンカーをパーティクルの基点の中心に配置し、メイン アンカーの軸をパーティクル間のベクトルと同じ向きにします。

どうやらアンカーにはメインとサブがあるようだ。マニュアルの「距離のバインド」の部分にはパーティクルシェイプ間はロープで結び付けられていて、その両端がアンカーだっていう記述も見られるので、リジッドバインドではロープのかわりに曲がらない棒が使われる感じだろうか?

言葉の通りに考えると、メインアンカーはパーティクルとパーティクルの中間に置かれて、バインドされたパーティクル間を結ぶ線に沿った方向にローカル軸の方向が定められるのかな?

fig02

日本語マニュアルだと「パーティクルの基点の中心に配置」だからパーティクルと同じ位置にアンカーを配置するようにも読み取れないこともないけど、原文では「at the center point of particles' pivots」となっているからたぶん2つのピボット間の中心でいいんだと思う。

「最も近いポイントの平均」はマニュアルにはこうある。

パー ティクルの衝突シェイプの各ペアの最も近いポイントを決定し、メイン アンカーをそれらの間の中点に配置します。メイン アンカーの軸は、最も近いポイントでのシェイプのサーフェスに対して垂直になります。

図でかくとこんな感じだろうか?

fig03

マニュアルにはさらにこう書かれている。

この場合、メイン アンカーの軸がパーティクル間のベクトルと同じ方向になっていないと、バインドは接触サーフェスに沿って壊れやすくなり、粘着性が低くなります。したがっ て、たとえば破壊するブロック壁がある場合は、この設定を使用します。

意味がよくわからないんだけど、自分なりに解釈すると、シェイプを繋ぐアンカーの張力はアンカーの軸方向に働くようになっていて、これが面に垂直だから接線方向の力がかかった時にそれに抵抗する張力が発生しない。それに対して「中心の平均」でアンカーを決めた場合は面に対して軸が垂直とは限らないので、垂直じゃない時は接線方向の力に対して張力が発生する。だから「中心の平均」の方が「最も近いポイントの平均」より接線方向の力に対してシェイプが固定されやすく、暴れないぶんだけ安定って事なのかな?

「質量に比例」はマニュアルにこうある。

バインドのメインアンカー ポイントをパーティクルの質量の逆 3 乗比で配置します。

これは密度が同じ物体は体積の比がそのまま質量の比になり、球体の体積は半径の3乗に比例することから、2つのパーティクルを1点で接する大きさの異なる2つの球体(両者の質量の比が体積比になっている)として捉えてその接点にアンカーを置くような処理になるようだ。

とにかくマニュアルを読んでも詳しい解説が見つからないので現象としてどうなるかを見て行くしかなさそうだ。マニュアルにも比較のムービーが載ってるんだけど、これだけでは他のパラメータをどう調整すれば効果的なのかがよくわからないんだよねぇ。

もうちょっと実験してみないとね。

それではまた次回。

maxまとめページ



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)3ds Max | CG

2013年10月28日

ACSを使ってみた その22 modo701 SP2

前回に引き続きアニメーションレイアウトを調べてみたい。

「オーディオ」は701から導入されたオーディオアイテムに関するメニューだ。

fig01

modoで扱えるオーディオファイルは以下の通り。

形式 拡張子 備考
Waveform Audio File WAV  
Audio Interchange File Format(AIFF) AIF  
MPEG-2 Audio Layer III MP3  
Core Audio Format CAF Macのみ
MPEG-4 MP4 Macのみ
Dolby Digital AC3 Macのみ
Windows Media Audio WMA Windows のみ
Audio File Format AU Windowsのみ
Digital Sound File Format SND Windowsのみ

オーディオファイルはファイルメニューからも読み込めるし、

fig04

オーディオパレットやオーディオリストからも読み込む事が出来る。

オーディオファイルは読み込んでチャンネルモディファイヤとして使う事も出来るし、タイムラインに表示してアニメーションのタイミングをあわせるのに利用することも可能だ。

下はチャンネルモディファイアで利用してみたもの。Soundチャンネルモディファイヤでオーディオファイルを調整してそれをキューブのスケールにしてみた。

fig05

Soundチャンネルモディファイヤのプロパティはこんな感じ。

fig06

キューブはサウンドの音量にあわせて大きさが変化する。

fig07

オーディオをチャンネルモディファイヤとして使う時は「オーディオリスト」ボタンを押して

fig10

オーディオリストを出せば、ここからスケマティックビューポートにドラッグ&ドロップできる。

fig09

オーディオをタイムラインに読み込むとこのように波形が表示される。

fig08

オーディオをタイムラインに読み込むにはファイルメニューから「オーディオをタイムラインに読み込み」か、「オーディオ」ボタンからアクセスできるオーディオメニューパレットの「オーディオアイテム」をクリックして、

fig02

表示されるオーディオパレットパレットから、modoに読み込まれているオーディオファイル(このパネルからも新規にオーディオファイルを読み込むことが出来る)から1つ選択することでも可能だ。

fig03

タイムラインでのオーディオの位置は「開始時間」パラメータによって調整できる。

fig13

タイムラインに読み込めるオーディオは1つだけで、アニメーション再生時に再生する事が出来るし、再生させない事も出来る。オーディオメニューの「ミュート」をチェックすると再生時に音は出なくなる。

fig14

「ループ」をONにするとタイムラインに読み込まれたオーディオがタイムライン上に繰り返し配置されるようになる。

fig15

「スクラブ」をONにするとタイムラインをマウスでスクラブして手動で現在時刻を前後に移動した時にもオーディオが再生されるようになり、オーディオのどこの部分が波形のどの部分なのかをより把握しやすくなる。通常はONにしておいた方がいいだろうね。OFFの時はオーディオが再生されるのは「再生」ボタンを押してアニメーションを再生している時だけになる。また「ミュート」がONの時はスクラブしても再生されない。

「波形表示」をONにすると、

fig11

ビューポートにオーディオの波形がオーバーラップして表示される。

fig16

ちょっと無理があるけどオーディオをACSのアゴの回転チャンネルに適用してみた。

fig17

スケマティックビューはこんな感じで、

fig18

サウンドが小さかったのでスケールを大きくして

fig19

マイナス側に振れる部分はカットした。

fig20

声の大きさと口の開閉はそんなに関係が無いからやっぱり変な感じになっちゃったなw

音声認識についての連載がインターフェース11月号(amazonへlink) から始まったので音声認識の勉強してみようかな。

それではまた次回。

modo701ブログ目次



take_z_ultima at 11:51|この記事のURLComments(0)TrackBack(0)modo | CG

2013年10月25日

2014の新機能を調べてみた その46 3dsmax 2014

今回も前回に引き続きmPグルーテストについて調べてみたい。

mPグルーでバインドするバインドのタイプは

  • リジッド
  • 距離
  • 単純化

の3つの方法がある。

リジッドはパーティクル間の距離や角度などの互いの位置が変化しないように振舞う。多少の柔軟性があって条件によって変形したりするけど基本的にはバインディングされたものは剛体として振舞う。

単純化はリジッドをより単純なソルバで実現したもので、リジッドより精度は落ちるがレスポンスは良い。

距離はパーティクルシェイプやディフレクタなどの間に仮想的なロープを張って、そのロープの伸縮を使って構造を保つように振舞う。ロープで繋ぐのでリジッドと違って回転に対する拘束力は無く、またロープは伸縮させる事ができるので、このタイプを使うと構造は柔軟に変化するようになる。ロープは基本的にパーティクルシェイプやディフレクタの表面から表面に接続される(バインドアンカーの埋め込みによってシェイプ内部から繋ぐことも出来る)。

下の画像は2つのタイプを比較したもので、「リジッド」の場合はバインドの青いラインがパーティクルの位置から出ているのに対して、

fig03

「距離」ではバインドの青い線がシェイプ表面から出ているのがわかる。

fig04

シェイプを並べてバインディングし、そこにディフレクタをぶつけて挙動を比較してみると、

「リジッド」や「単純化」の場合、2つの物体の間の距離と角度の両方が固定されるので、回転に対する復元力も手伝って変形を押し留めようとする挙動になった。

fig05

「距離」の場合は2つの物体の距離だけの拘束なので角度が変わっても戻す方向に力は働かない。また、距離に許容範囲が設けられるので、それを大きくしたら伸びて安定した。

fig06

タイプを変えた場合、それぞれの挙動を決めるための専用ロールアウトのパラメータで調整することになるようだけど、それらは他のタイプが選ばれても無効にはならないようだ。

「リジッド」「単純化」に対しては以下のロールアウトが、

fig07

「距離」に対しては以下のロールアウトが、

fig08

専用ロールアウトだ。これらについてはちょっと後回しにして共通のパラメータの続きを見て行きたい。

「タイミング」はいつエレメントどうしをバインディングするかを決めるパラメータ。「イベントエントリ」時と「継続」が選べる。

fig09

「イベントエントリ」では新規にイベント中に新規に発生したパーティクルとイベントに入って来たパーティクルに対して1度だけバインドできるかチェックして可能ならバインディングする。

「継続」は常にパーティクルを監視してバインディング可能になったらバインディングする。

下のGIFアニメは両者を比較したもの。

「イベントエントリ」では発生したパーティクルの付近に他のパーティクルがあれば、それにバインディングするけど、バインディングするタイミングは1回きりなのでその後は他に新しいパーティクルが付近に発生しない限りバインディングする事無く落ちて転がる。

fig10

「継続」は常にバインディングできるかチェックしているのでパーティクルが接近すると次々にバインディングされていく。

fig11

「バインディング浸透を許可」はバインディングされたパーティクルシェイプどうしやディフレクタとの衝突判定をしないかどうかを決める設定。

fig02

これをONにするとパーティクルシェイプは接触しても反発しなくなるのでバインディングの許す範囲で重なったりするようになる。下のGIFアニメはこれを比較してみたものだ。この例ではシェイプどうしが重なりやすいように、バインドタイプを「距離」にして、「バインドアンカーの埋め込み」をON、深度を0.02mにしてある。

fig01

それではまた来週。

maxまとめページ



take_z_ultima at 12:44|この記事のURLComments(0)TrackBack(0)3ds Max | CG
Archives