ジャンプ先: 概要. 戻り値. 関連. フラグ. Python 例.
collision(
[objects]
, [friction=float], [name=string], [resilience=float])
注: オブジェクトの名前と引数を表す文字列は、カンマで区切る必要があります。これはシノプシスに示されていません。
collision は、取り消し可能、照会可能、および編集可能です。
collision コマンドは、パーティクルをジオメトリと衝突させます。また、衝突のサーフェス プロパティ(摩擦と弾性)の値を指定することもできます。この値は、ジオメトリ オブジェクトの geoConnector ノードに格納されます。Maya の以前のバージョンとは異なり、分離した「衝突ノード」はありません。
ソフト オブジェクトがセレクション リスト内にある場合、collision コマンドは、これをコライダにすると仮定します。ソフト オブジェクトを何かと衝突させるには、connectDynamic -c を使用します。衝突(Collision)メニュー オプションは最重要オブジェクト規則を使用してこれを分類し、必要なコマンドを発行します。作成時、このコマンドは、パーティクル衝突用に設定したジオメトリ名の文字配列を返します。
このコマンドを使用して情報を照会すると、返される可能性のあるタイプが複数あります。これには次のようなケースがあります。
- -resilience フラグまたは -friction フラグがコマンド ラインに渡され、単一の衝突ジオメトリが選択されるかコマンド ラインにある場合は、衝突ジオメトリ用の弾力または摩擦を表す値が単一の float 値として返されます。
- -resilience または -friction フラグがコマンド ラインに渡されて、1 つの衝突ジオメトリと 1 つのパーティクル オブジェクトが選択されるかコマンド ラインにある場合は、2 つの結果が生じることがあります。パーティクル オブジェクトを設定せずにジオメトリと衝突しない場合は、その旨を示すエラーが表示されます。オブジェクトがお互いに衝突するように設定されている場合は、パーティクル オブジェクトがジオメトリとの衝突で使用した弾力または摩擦を表す値が単一の float 値として返されます。ユーザがジオメトリの geoConnector ノードの弾性またはパーティクルへの摩擦からの接続を解除し、そのジオメトリに対して使用されているパーティクルの衝突の弾性(Collision Resilience)、衝突の摩擦(Collision Friction)または衝突オフセット(Collision Offset)アトリビュートに異なる値を設定しているという理由で、この値がジオメトリの弾性や摩擦とは異なる場合もあります。これで、同じサーフェスに対して、各パーティクルにそれぞれ異なる反応をさせることができます。
- どちらのフラグもコマンド ラインに渡されず、単一のジオメトリと単一のパーティクル オブジェクトが選択されるかコマンド ラインにあれば、オブジェクトが互いに衝突するように設定されている場合には単一の整数値 1 が、そうでなければ 0 が返されます。
- 最後に、フラグがコマンド ラインに渡されず、単一のパーティクル オブジェクトが選択されるかコマンド ラインにある場合は、パーティクル オブジェクトが衝突する可能性のあるすべてのジオメトリの名前とジオメトリが接続されているマルチインデックスを含む文字配列が返されます。この配列の書式は次のとおりです。
pPlaneShape1:0 pPlaneShape2:2 nurbsSphereShape1:3
ここで、「:」の後の数字はマルチインデックスです。
string[] | パーティクル衝突用に設定したジオメトリ名。 |
照会モードでは、戻り値のタイプは照会されたフラグに基づきます。
event, particle
friction, name, resilience
ロング ネーム(ショート ネーム) |
引数タイプ |
プロパティ |
|
friction(f)
|
float
|
|
|
サーフェスの摩擦です。これは、パーティクルが衝突する場合に減速される、衝突するパーティクルのサーフェスに対して平行な速度です。値 0 では接線速度はまったく失われず、値 1 ではパーティクルはサーフェスの法線に沿ってまっすぐに反映します。
|
|
name(n)
|
string
|
|
|
このフラグは現在サポートしていません。Maya 2.0 ですでに「衝突ノード」はありませんでした。したがって必要ありません。衝突のマニュアルを参照してください。このフラグは、古いバージョンの Maya で記述されたスクリプトを実行する目的のためだけに含まれています。警告メッセージが発生しますが、問題ありません。
|
|
resilience(r)
|
float
|
|
|
サーフェスの弾性です。これは、サーフェスの法線に沿って反映される、衝突するパーティクルの速度です。サーフェスの法線に沿って、値が 1 の場合に完全に反映され、0 の場合にまったく反映されません。
|
|
フラグはコマンドの作成モードで表示できます
|
フラグはコマンドの編集モードで表示できます
|
フラグはコマンドの照会モードで表示できます
|
フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。
|
import maya.cmds as cmds
cmds.collision( 'nurbsSphere1', 'particle1', r=.75, f=.1 )
# Causes particles of particle1 to collide with nurbsSphere1,
# and sets a resilience value of 0.75 and a friction value of 0.1
# for the surface.
cmds.collision( 'nurbsSphere1', q=True, f=1 )
# Returns the friction value stored in the geoConnector for nurbsSphere1.
cmds.collision( 'particleShape1', 'nurbsSphere1', q=True, f=1 )
# Returns the friction value that particleShape1 is using for collisions
# against nurbsSphere1. This may be the same as the friction stored in
# nurbsSphere1's geoConnector. Or, if the user broke that connection,
# then it is whatever value is in the particleShape1's collisionFriction
# attribute that is used for collision with nurbsSphere1.
cmds.collision( 'nurbsSphere1', 'particleShape1', q=True )
# Returns whether or not particleShape1 is checking for collisions
# against nurbsSphere1.
cmds.collision( 'particleShape1', q=True )
# Returns all of the geometries that particleShape1 is colliding with.