ワールド空間モディファイヤ - Force 関連メソッド

次のメソッドを使用すると、ワールド空間モディファイヤ (スペース ワープ) によって定義されるフォースを計算することができます。

これらのメソッドは、3ds Max 2008 以降で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。

WSMApplyFC <WSM_node_array> <pos_point3_array> <vel_point3_array> <force_point3_array> interval:<interval> stepsize:<time>

フォースフィールド (パーティクル&ダイナミック+ディスプレイス) およびディフレクタ (パーティクルのみ) タイプのスペース ワープを、位置、速度、およびフォースの配列値に適用します。

単位

位置の値は 3ds Max 単位で、速度の値は 3ds Max 単位/ティックで、フォースの値は 3ds Max 単位/ティック^2 (質量は == 1 であると仮定) で表します。

位置、速度、およびフォースの配列は必ずすべて同じ大きさです。

評価の間隔と順序

スペース ワープの効果は指定された間隔にわたって評価されます。既定値の間隔は、指定された stepsize と既定値である 1 フレームを使用して (interval currenttime (currenttime+ 1f)) です。

フォース フィールド スペース ワープの効果は、最初に指定された順序で評価され、続いてディフレクタ スペース ワープが指定された順序で評価されます。

位置、速度、およびフォースの配列内の値は、スペース ワープの効果の評価結果に置き換えられます。

指定されたフォースの値は、スペース ワープが適用されるよりも前に適用されます。

初期値

通常は、このメソッドを呼び出す前に、フォース配列に含まれる値が[0,0,0]になるように設定するとよいでしょう。スクリプトにおける追加のフォースを計算したい場合にのみ、フォース配列の値を別の値に設定します。位置および速度の配列には、通常は、このメソッドに対する前回の呼び出しの結果が含まれています。

サポートされるスペース ワープ

サード パーティ製プラグインを含むすべてのフォースフィールド スペース ワークが正しく動作します。

サポートされるのは、3ds Max に付属のディフレクタ スペース ワープのみです。

パス追跡スペース ワープはパーティクル システムに依存するので、サポートされません。

使用例:

(
resetMaxFile #noPrompt
gravity pos:[41.7827,242.9,0] isSelected:on iconSize:33.4742 transform:(matrix3 [1,0,0] [0,-1,0] [0,0,-1] [41.7827,242.9,0])
Deflector bounce:1 width:101.617 length:74.9636 transform:(matrix3 [1,0,0] [0,0.751713,0.659491] [0,-0.659491,0.751713] [16.7722,4.28949,-146.329])
posArray=#([10,0,0],[10,10,0])
velArray=#([0,0,0],[0,0,0])
forceArray=#([0,0,0],[0,0,0])
for i = 0 to 40 do(
point pos:posArray[1] wirecolor:red
point pos:posArray[2] wirecolor:blue
at time i WSMApplyFC #($gravity001,$deflector001) posArray velArray forceArray
)
)
 

<bool>WSMSupportsForce <node> 	 

指定されたノードが WSMApplyFC() のフォースフィールド タイプのスペース ワープとして使用できる場合には true を返します。

   

<bool>WSMSupportsCollision <node>   

指定されたノードが WSMApplyFC() のディフレクタ タイプのスペース ワープとして使用できる場合には true を返します。