インタフェース: nvpx
nvpx コア インタフェースは、nVidia PhysX テクノロジに基づく MassFX 物理的シミュレーション システムを MAXScript に公開します。
3ds Max 2012 以降で使用可能です。
プロパティ:
nvpx.UseAdaptiveForce : boolean : Read|Write
[アダプティブ フォースを使用](Use Adaptive Force)オプションの状態を取得/設定します。
3ds Max 2013 以降で使用可能です。
nvpx.gravityMode : enum : Read|Write
gravityMode enums: {#none|#directional|#object}
重力モードを取得/設定します。
有効な値は次のとおりです。
#none - 重力なし
#directional - 指向性重力
#object - nvpx.gravityObject プロパティを使用するオブジェクトベースの重力 (以下を参照)
3ds Max 2013 以降で使用可能です。
nvpx.gravityObject : node : Read|Write
重力の方向を定義する重力オブジェクトを取得/設定します。
3ds Max 2013 以降で使用可能です。
シーン書き出し
メソッド:
<integer>nvpx.ExportPhysXScene <string>filename <string>extension
2 番目の引数で指定されたファイル形式を使用して、シーン シミュレーション データを外部ファイルに書き出します。成功した場合は 0 を、失敗した場合は -1 を返します。
有効な拡張子の値は次のとおりです。
「xml」 - 既定の XML ファイルを作成します。
「nxb」 - NxuStream BINARY ファイルを作成します。
「dae」 - COLLADA XML ファイルを作成します。
他の拡張子の値を指定すると MAXScript リスナーに警告が出力され、書き出しでは XML ファイル形式が使用されます。
filename 引数で使用される実際のファイル拡張子が、ファイル タイプと一致する必要はありません。たとえば、「collada.xml」という名前のファイルを「dae」という
extension 引数を使用して保存できます。
例
|
nvpx.ExportPhysXScene "c:\\temp\\physxtest.xml" "xml"
--> 0
nvpx.ExportPhysXScene "c:\\temp\\physxtest.nxb" "nxb"
--> 0
nvpx.ExportPhysXScene "c:\\temp\\physxtest.dae" "dae"
--> 0
nvpx.ExportPhysXScene "c:\\temp\\physxtest.abc" "abc"
--> SDK does not support exporting format, abc. It will be exported with default format.
--> 0
|
<integer>nvpx.ExportPhysXProjectFile <string>physxProjectPath <string>physxProjectName
2 番目の引数に従って命名した XML 形式の PhysX プロジェクト ファイルを、1 番目の引数で指定されたパスに書き出します。拡張子 .PxProj が自動的に追加されます。
3ds Max 2013 以降で使用可能です。
例
|
nvpx.ExportPhysXProjectFile @"c:\temp\" "physxproject"
|
ファイル内容
|
<PhysicsPlugin>
<GraphicsExport File="physxproject.fbx" />
<PhysicsExport SDK="2.8.5" PhysXScene="" />
<ClothingTool CTP="" />
<SceneParameters>
<AnimationRange Start="0" End="100" FrameRate="30" FrameSubStepCount="0" />
<LengthUnit type="0" scale="1" length="39.3701" />
<GroundPlane enabled="true" direction="0.0 0.0 1.0" height="0" />
<Gravity enabled="true" value="0 0 -386.221" />
<Simulation SolverIteration="4" LastFrameMode="Continue Simulation" LoopAnimationMode="Reset Simulation" />
</SceneParameters>
<SceneObjects />
</PhysicsPlugin>
|
<integer>nvpx.ExportPhysXProject <string>physxProjectPath <string>physxProjectName <string>fbxFileName
2 番目の引数で指定された名前の PhysX プロジェクトを、1 番目の引数で指定されたパスに書き出します。3 番目の引数に従って FBX ファイル名として書き出されたジオメトリが含まれます。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.PrepExportPhysXScene <boolean>isexportphysx <string>extension
書き出しの準備をします。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.PrepExportAPEXClothing <boolean>exportAPEXClothing <string>apExtension <boolean>useModelSpace \
<float>scale <boolean>addHulls <boolean>exportCTW <boolean>exportFBX <boolean>exportSelected <boolean>launchViewer \
<boolean>reverseWinding <boolean>omitMeshSubpartName
将来的に使用します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.PrepExportAPEXDestruction <boolean>exportAPEXDestruction <string>apExtension <boolean>exportSelected
将来的に使用します。
3ds Max 2013 以降で使用可能です。
<boolean>nvpx.GetExporterMode <integer>Parameter
指定されたパラメータの書き出しモードを返します。
3ds Max 2013 以降で使用可能です。
<boolean>nvpx.SetExporterMode <integer>Parameter <boolean>onOff
指定したパラメータの書き出しモードを 2 番目の引数のブール演算値に設定します。
3ds Max 2013 以降で使用可能です。
ワールドの設定
プロパティ:
nvpx.gravityMode : enum : Read|Write
gravityMode enums: {#none|#directional|#object}
重力モードを取得/設定します。
有効な値は次のとおりです。
#none - 重力なし
#directional - nvpx.SetGravity() メソッドによって指定され、 nvpx.GetGravity() メソッドによって返された方向を使用します。
#object - nvpx.gravityObject プロパティによって指定されたオブジェクトの -Z 軸を使用します。
3ds Max 2013 以降で使用可能です。
nvpx.gravityObject : node : Read|Write
nvpx.GravityMode プロパティが #object に設定されている場合に、その -Z 軸が重力方向を定義する参照オブジェクトを取得/設定します。
3ds Max 2013 以降で使用可能です。
メソッド:
<point3 by value>nvpx.GetGravity()
重力ベクトルを標準単位/秒の二乗で表された Point3 値として返します。システム単位が 1GU = 1 インチに設定されている場合、重力の既定値は[0,0,-386.221]で、これは[0,0,-9.81]メートル/秒の二乗に相当します(地球の加速度)。
<integer>nvpx.SetGravity <point3 byvalue>gravity
重力ベクトルを指定された Point3 値に設定します。
3ds Max 2013 以降では、 nvpx.gravityMode オプションが #directional に設定されている場合に使用されます。
<float>nvpx.GetGeometryScale()
ジオメトリ スケール係数を返します。既定値は 1.0 です。
<float>nvpx.SetGeometryScale <float>scaleRate
ジオメトリ スケール係数を Float 引数に設定します。
<boolean>nvpx.CreateGround <float>position <&point3>normal
normal is In and Out parameter
position 引数によって指定され、2 番目の引数によって指定された normal ベクトルに合わせて方向を設定した Z の高さにグラウンド平面を作成します。
シミュレーションで使用できるグラウンド平面は 1 つだけです。
<boolean>nvpx.RemoveGround()
シミュレーションからグラウンド平面を削除します。
<boolean>nvpx.ReadSystemUnit <integer>type <float>scale
<float>nvpx.GetMeterToSystemUnit()
メートルと現在のシステム単位の間のスケール係数を返します。システム単位が 1GU = 1 インチに設定されている場合、値は 1 メートルのインチ数である 39.3701
になります。
<float>nvpx.SetMeterToSystemUnit <float>newValue
メートルとシステム単位の間のスケール係数をユーザ値に設定し、新しいワールド スケールを定義します。
<void>nvpx.SetCCDMotionThreshold <float>ccdMotionThreshold
持続衝突検出モーションのしきい値を、指定された浮動小数点値パラメータに設定します。
<integer>nvpx.GetSolverIterations()
ソルバの反復回数を返します。
<integer>nvpx.SetSolverIterations <integer>count
ソルバの反復回数を integer 引数に設定します。新しい値を返します。
<void>nvpx.SetShapePerElement <boolean>shapePerElement
[エレメントごとのシェイプ](Shape Per Element)モードを、指定されたブール演算値に設定します。
3ds Max 2013 以降で使用可能です。
シミュレーション
メソッド:
<integer>nvpx.Simulate <float>deltat
指定された時間ステップを使用してシミュレーションを開始します。
<boolean>nvpx.IsSimulating()
シミュレーションが現在実行中の場合は true を返し、実行中でない場合は false を返します。
<integer>nvpx.SetSimulationSubSteps <integer>numSteps
シミュレーションのサブステップを指定された値に設定します。
<integer>nvpx.SimulationReset()
シミュレーションをリセットします。
<void>nvpx.SetSimulationState <integer>state
実際のシミュレーションを実行しないで、シミュレーションの状態を指定されたモードに設定します。
3ds Max 2012 では引数が boolean であり、False はシミュレーションがリセットされたことを、True はシミュレーションが実行されたことを意味しました。
3ds Max 2013 では、引数が次のように整数に変更されました。
0 - シミュレーションがリセットされ、シミュレーション データはありません。
1 -
2 - シミュレーションが実行され、シミュレーション データがあります。
<integer>nvpx.GetSimulationState()
現在のシミュレーション状態を整数で返します。
有効な値については、上記を参照してください。
<void>nvpx.PauseSimulation()
シミュレーションを一時停止させます。
3ds Max 2013 以降で使用可能です。
ボディとコンストレイント
メソッド:
<integer>nvpx.AddRigidbody <node>inode
引数として渡されたノードを、リジット ボディとしてシミュレーションに追加します。成功した場合は 1 を、失敗した場合は 0 を返します。失敗した場合は、メッセージも
MAXScript リスナーに出力されます。
<integer>nvpx.RemoveRigidbody <node>inode
指定されたノードからリジット ボディ データを削除します。
<integer>nvpx.RemoveAll()
すべてのシーン ノードからリジット ボディ データを削除します。
<integer>nvpx.AddConstraint <node>node
コンストレイントを指定されたノードに追加します。
<integer>nvpx.AddDistanceJoint <node>node
距離接続を指定されたノードに追加します。
<integer>nvpx.SetRigidbodyShapeFlag <node>inode <TSTR by value>flagname <boolean>value
1 番目の引数で指定されたノード内にある、2 番目の引数で指定された名前のリジット ボディ シェイプ フラグを、3 番目の引数として渡されたブール値に設定します。
<boolean>nvpx.RBBroken <node>inode
指定されたノードのリジット ボディが壊れている場合は true を返し、それ以外の場合は false を返します。
<integer>nvpx.ClearInvalidNodes()
無効なノードをクリアします。
<integer>nvpx.PrintNodeParams <node>inode
指定されたノードについての詳細情報を出力します。
例
|
nvpx.PrintNodeParams $Teapot001
print Node param blocks:
totally 0 Param Blocks
print modifier param blocks:
totally 1 Param Blocks
PBlock version 9, local name: ??, flag: 0x226, 60 Params
Param 0 (type): TYPE_INT, flag: 0x920020, value: 1
Param 54 (switchType): TYPE_BOOL, flag: 0x820020, value: false
Param 55 (switchTypeAtFrame): TYPE_INT, flag: 0x920020, value: 0
Param 35 (EnableGravity): TYPE_BOOL, flag: 0x820020, value: true
Param 53 (ContinuousCollisionDetection): TYPE_BOOL, flag: 0x820020, value: false
Param 36 (SleepAtStart): TYPE_BOOL, flag: 0x820020, value: false
Param 52 (CollideWithRigidBodies): TYPE_BOOL, flag: 0x820020, value: true
Param 1 (): TYPE_INODE, flag: 0x810000, value: 0x0
Param 2 (extraShapes): TYPE_STRING, flag: 0x800000, value: "(null)"
Param 3 (manualSetup): TYPE_BOOL, flag: 0x820020, value: true
Param 4 (materialId): TYPE_INT, flag: 0x820020, value: 0
Param 6 (density): TYPE_FLOAT, flag: 0x820020, value: 0
Param 5 (volume): TYPE_FLOAT, flag: 0x820020, value: 0
Param 7 (mass): TYPE_FLOAT, flag: 0x820020, value: 0
Param 8 (staticFriction): TYPE_FLOAT, flag: 0x820020, value: 1073741824
Param 9 (dynamicFriction): TYPE_FLOAT, flag: 0x820020, value: 1073741824
Param 10 (bounciness): TYPE_FLOAT, flag: 0x820020, value: 0
Param 62 (EnableAdvancedSettings): TYPE_INT, flag: 0x820020, value: 0
Param 56 (SkinWidth): TYPE_BOOL, flag: 0x820020, value: false
Param 57 (SkinWidthValue): TYPE_FLOAT, flag: 0x20020, value: 0
Param 58 (SolverIter): TYPE_BOOL, flag: 0x820020, value: false
Param 59 (SolverIterValue): TYPE_INT, flag: 0x120020, value: 4
Param 61 (InitialMotionStyle): TYPE_INT, flag: 0x820020, value: 1
Param 39 (InitialVelocityX): TYPE_FLOAT, flag: 0x920020, value: 0
Param 40 (InitialVelocityY): TYPE_FLOAT, flag: 0x920020, value: 0
Param 41 (InitialVelocityZ): TYPE_FLOAT, flag: 0x920020, value: 0
Param 37 (velocitySpeed): TYPE_FLOAT, flag: 0x920020, value: 0
Param 42 (InitialSpinX): TYPE_FLOAT, flag: 0x920020, value: 0
Param 43 (InitialSpinY): TYPE_FLOAT, flag: 0x920020, value: 0
Param 44 (InitialSpinZ): TYPE_FLOAT, flag: 0x920020, value: 0
Param 38 (spinSpeed): TYPE_FLOAT, flag: 0x920020, value: 0
Param 45 (MassCenterX): TYPE_FLOAT, flag: 0x920020, value: 0
Param 46 (MassCenterY): TYPE_FLOAT, flag: 0x920020, value: 0
Param 47 (MassCenterZ): TYPE_FLOAT, flag: 0x920020, value: 0
Param 50 (LinearDamping): TYPE_FLOAT, flag: 0x920020, value: 0
Param 51 (AngularDamping): TYPE_FLOAT, flag: 0x920020, value: -2147483648
Param 49 (baked): TYPE_BOOL, flag: 0x820020, value: false
Param 14 (): TYPE_INT, flag: 0x820020, value: 0
Param 15 (): TYPE_BOOL, flag: 0x820020, value: false
Param 16 (): TYPE_BOOL, flag: 0x820020, value: false
Param 17 (): TYPE_BOOL, flag: 0x820020, value: false
Param 13 (meshType): TYPE_INT, flag: 0x920020, value: 4
Param 28 (meshCustomMesh): TYPE_INODE, flag: 0x810000, value: 0x0
Param 26 (meshVerticesLimit): TYPE_INT, flag: 0x820020, value: 32
Param 27 (meshInflation): TYPE_FLOAT, flag: 0x820020, value: 0
Param 60 (meshConvexStyle): TYPE_INT, flag: 0x820020, value: 0
Param 31 (meshRadius): TYPE_FLOAT, flag: 0x920020, value: -2147483648
Param 32 (meshLength): TYPE_FLOAT, flag: 0x920020, value: 0
Param 33 (meshWidth): TYPE_FLOAT, flag: 0x920020, value: 0
Param 34 (meshHeight): TYPE_FLOAT, flag: 0x920020, value: 0
Param 29 (): TYPE_BOOL, flag: 0x40800000, value: false
Param 30 (): TYPE_BOOL, flag: 0x820020, value: false
Param 18 (meshOverrideMaterial): TYPE_BOOL, flag: 0x820020, value: false
Param 19 (meshDensity): TYPE_FLOAT, flag: 0x40800000, value: 0
Param 20 (meshMass): TYPE_FLOAT, flag: 0x40800000, value: 0
Param 21 (meshStaticFriction): TYPE_FLOAT, flag: 0x40800000, value: 0
Param 22 (meshDynamicFriction): TYPE_FLOAT, flag: 0x40800000, value: 0
Param 23 (meshBounciness): TYPE_FLOAT, flag: 0x40800000, value: 0
Param 24 (): TYPE_BOOL, flag: 0x40800000, value: false
Param 25 (): TYPE_BOOL, flag: 0x40800000, value: false
Animatable[2] : Transform, classID = (2005, 0)
Animatable[0]: Position, classID = (118f7e02, ffee238a)
Animatable[1]: Rotation, classID = (2012, 0)
Animatable[3] : Modified Object, classID = (3, 0)
Animatable[0]: MassFX Rigid Body, classID = (a750e, 6e6ba)
Animatable[0]: no name, classID = (2005, 0)
Animatable[0]: Position, classID = (118f7e02, ffee238a)
Animatable[1]: Rotation, classID = (2012, 0)
Animatable[1]: no name, classID = (2005, 0)
Animatable[0]: Position, classID = (118f7e02, ffee238a)
Animatable[1]: Rotation, classID = (2012, 0)
Animatable[2]: no name, classID = (118f7e02, ffee238a)
Animatable[3]: no name, classID = (2005, 0)
Animatable[0]: Position, classID = (118f7e02, ffee238a)
Animatable[1]: Rotation, classID = (2012, 0)
Animatable[1]: Teapot (Object), classID = (acad13d3, acad26d9)
Animatable[0]: Parameters, classID = (8, 0)
0
|
<boolean>nvpx.SetAsDynamic <node>inode <boolean>onoff
2 番目の引数として true が渡された場合は、1 番目の引数で渡されたノードをダイナミック リジット ボディに設定し、2 番目の引数が false の場合は、静止リジット
ボディに設定します。
<integer>nvpx.PrintTM <node>inode
指定されたノードのさまざまな変換行列についての詳細情報を出力します。
例
|
nvpx.PrintTM $Teapot001
PivotTM = (matrix3 [1.000000, 0.000000, 0.000000] [0.000000, 1.000000, 0.000000] [0.000000, 0.000000, 1.000000] [0.000000, 0.000000, 0.000000])
nodeTM = (matrix3 [1.000000, 0.000000, 0.000000] [0.000000, 1.000000, 0.000000] [0.000000, 0.000000, 1.000000] [1.576996, -11.519989, 0.000000])
parentTM = (matrix3 [1.000000, 0.000000, 0.000000] [0.000000, 1.000000, 0.000000] [0.000000, 0.000000, 1.000000] [0.000000, 0.000000, 0.000000])
objectTM = (matrix3 [1.000000, 0.000000, 0.000000] [0.000000, 1.000000, 0.000000] [0.000000, 0.000000, 1.000000] [1.576996, -11.519989, 0.000000])
--pivot = [0.000000, 0.000000, 0.000000]
--nodeObjectTM <==> PhysicsNodeTM == PhysicsNodeScaleTM * PhysicsNodePivotTM * PhysicsNodePoseTM
PhysicsNodeScaleTM = (matrix3 [1.000000, 0.000000, 0.000000] [0.000000, 1.000000, 0.000000] [0.000000, 0.000000, 1.000000] [0.000000, 0.000000, 0.000000])
PhysicsNodePivotTM = (matrix3 [1.000000, 0.000000, 0.000000] [0.000000, 1.000000, 0.000000] [0.000000, 0.000000, 1.000000] [0.000000, 0.000000, 0.000000])
PhysicsPoseTM = (matrix3 [1.000000, 0.000000, 0.000000] [0.000000, 1.000000, 0.000000] [0.000000, 0.000000, 1.000000] [1.576996, -11.519989, 0.000000])
--Node Pos in Physics = [1.576996, -11.519989, 0.000000]
--Node is convex = 0
0
|
<class>nvpx.GetObjectClass <node>node
指定されたノードのクラスを返します。
<void>nvpx.UpdateCCDCtrlState <node>node
指定されたノードの持続衝突検出の制御状態を更新します。
3ds Max 2013 以降で使用可能です。
リジット ボディのコピーと貼り付け
メソッド:
<boolean>nvpx.CopyRigidbody <node>fromNode <node>toNode
リジット ボディ モディファイヤを、1 番目の引数で指定されたノードから、2 番目の引数で指定されたノードにコピーします。成功した場合は true を、失敗した場合は false を返します。
<boolean>nvpx.ClipboardCopyRBMesh <node>inode <integer>meshIndex
2 番目の引数で指定されたインデックスのリジット ボディ メッシュを、1 番目の引数で指定されたノードからクリップボードにコピーします。成功した場合は true を、失敗した場合は false を返します。
<boolean>nvpx.ClipboardPasteRBMesh <node>inode
クリップボードから指定されたノードに、リジット ボディ メッシュを貼り付けます。成功した場合は true を、失敗した場合は false を返します。
リジット ボディ メッシュのアクセス
以下のメソッドは、ノードの MassFX_RBody モディファイヤの設定と相互作用します。これらのメソッドを使用してノードを反復処理し、モディファイヤ自体を操作する代わりに、リジット ボディの設定を変更できます。
メソッド:
<integer>nvpx.AddRBMesh <node>inode
指定されたノードにリジット ボディ メッシュを追加します。新しいメッシュのインデックスを返します。
<boolean>nvpx.DeleteRBMesh <node>inode <integer>meshIndex
2 番目の引数のインデックスで指定されたリジット ボディ メッシュを、1 番目の引数で指定されたノードから削除します。成功した場合は true を、失敗した場合は false を返します。
<integer>nvpx.GetRBMeshCount <node>inode
指定されたノードのリジット ボディ メッシュの数を返します。
<string>nvpx.GetRBMeshName <node>inode <integer>meshIndex
指定されたノードにある指定されたインデックスのリジット ボディ メッシュの名前を返します。
<integer>nvpx.SetRBMeshName <node>inode <integer>meshIndex <string>meshName
指定されたノードにある 2 番目のインデックス引数で指定されたリジット ボディ メッシュの名前を、3 番目の引数で指定された名前に変更します。
<integer>nvpx.GetRBMeshType <node>inode <integer>meshIndex
指定されたノードにある、2 番目のインデックス引数で指定されたリジット ボディ メッシュのタイプを返します。戻り値の意味については、次のメソッドの説明を参照してください。
<boolean>nvpx.SetRBMeshType <node>inode <integer>meshIndex <integer>meshType
指定されたノードにある、2 番目のインデックス引数で指定されたリジット ボディ メッシュのタイプを、次のタイプに設定します。
1 - 球
2 - ボックス
3 - カプセル
4 - 凸型
5 - 合成
6 - オリジナル
7 - カスタム
成功した場合は true を、失敗した場合は false を返します。
<&matrix3>nvpx.GetRBMeshTM <node>inode <integer>meshIndex
指定されたノードにある、2 番目の引数で指定されたインデックスのリジット ボディ メッシュの変換行列を返します。
<boolean>nvpx.SetRBMeshTM <node>inode <integer>meshIndex <&matrix3>pose
pose is In and Out parameter
指定されたノードにある、2 番目の引数で指定されたインデックスのリジット ボディ メッシュの変換行列を、3 番目の引数として渡された matrix3 値に設定します。成功した場合は
true を、失敗した場合は false を返します。
<float>nvpx.GetRBMeshRadius <node>inode <integer>meshIndex
該当する場合、ノードの指定されたインデックスのリジット ボディ メッシュの半径を返します(リジット ボディ メッシュのタイプが球、ボックス、カプセルの場合など)。それ以外の場合は
0 を返します。
<boolean>nvpx.SetRBMeshRadius <node>inode <integer>meshIndex <float>radius
ノードの指定されたインデックスのリジット ボディ メッシュの半径を、3 番目の引数で指定された浮動小数点値に設定します。リジット ボディ メッシュのタイプが半径の値をサポートしている場合は
true、サポートしていない場合は false を返します。
<float>nvpx.GetRBMeshLength <node>inode <integer>meshIndex
該当する場合、ノードの指定されたインデックスのリジット ボディ メッシュの長さを返します(リジット ボディ メッシュのタイプがボックスの場合など)。それ以外の場合は
0 を返します。
<boolean>nvpx.SetRBMeshLength <node>inode <integer>meshIndex <float>Length
ノードの指定されたインデックスのリジット ボディ メッシュの長さを、3 番目の引数で指定された浮動小数点値に設定します。リジット ボディ メッシュのタイプがボックスの場合は
true、それ以外の場合は false を返します。
<float>nvpx.GetRBMeshWidth <node>inode <integer>meshIndex
該当する場合、ノードの指定されたインデックスのリジット ボディ メッシュの幅を返します(リジット ボディ メッシュの種類がボックスの場合など)。それ以外の場合は 0
を返します。
<boolean>nvpx.SetRBMeshWidth <node>inode <integer>meshIndex <float>Width
ノードの指定されたインデックスのリジット ボディ メッシュの幅を、3 番目の引数で指定された浮動小数点値に設定します。リジット ボディ メッシュのタイプがボックスの場合は
true、それ以外の場合は false を返します。
<float>nvpx.GetRBMeshHeight <node>inode <integer>meshIndex
該当する場合、ノードの指定されたインデックスのリジット ボディ メッシュの高さを返します(リジット ボディ メッシュのタイプがボックスの場合など)。それ以外の場合は
0 を返します。
<boolean>nvpx.SetRBMeshHeight <node>inode <integer>meshIndex <float>Height
ノードの指定されたインデックスのリジット ボディ メッシュの高さを、3 番目の引数で指定された浮動小数点値に設定します。リジット ボディ メッシュのタイプがボックスの場合は
true、それ以外の場合は false を返します。
<node>nvpx.GetRBMeshCustomNode <node>inode <integer>meshIndex
該当する場合、指定されたノードの指定されたインデックスのリジット ボディ メッシュのカスタム ノードを返します(リジット ボディ メッシュのタイプがカスタムに設定されている場合など)。それ以外の場合は
undefined を返します。
<integer>nvpx.SetRBMeshCustomNode <node>inode <integer>meshIndex <node>CustomNode
ノードの指定されたインデックスのリジット ボディ メッシュのカスタム メッシュを、3 番目の引数で指定されたノードに設定します。リジット ボディ メッシュのタイプがカスタムの場合は
true 、それ以外の場合は false を返します。
<integer>nvpx.GetRBMeshVertexLimit <node>inode <integer>meshIndex
ノードの指定されたインデックスのリジット ボディ メッシュの頂点の制限値を返します。
<boolean>nvpx.SetRBMeshVertexLimit <node>inode <integer>meshIndex <integer>VerticeLimit
ノードの指定されたインデックスのリジット ボディ メッシュの頂点の制限値を、3 番目の引数で指定された整数値に設定します。リジット ボディ メッシュのタイプが頂点の制限をサポートしている場合(凸型など)は
true を、サポートしていない場合は false を返します。
<float>nvpx.GetRBMeshInflation <node>inode <integer>meshIndex
ノードの指定されたインデックスのリジット ボディ メッシュのタイプが凸型の場合はその膨張値を返し、それ以外のタイプの場合は undefined を返します。
<boolean>nvpx.SetRBMeshInflation <node>inode <integer>meshIndex <float>Inflation
ノードの指定されたインデックスのリジット ボディ メッシュの膨張値を、3 番目の引数で指定された浮動小数点値に設定します。リジット ボディ メッシュのタイプが膨張をサポートしている場合(凸型など)は
true を、サポートしていない場合は false を返します。
<mesh>nvpx.GetRBMeshShape <node>inode <integer>meshIndex
ノードの指定されたインデックスのリジット ボディ メッシュのタイプが凸型またはカスタムの場合はその TriMesh 値を返し、それ以外のタイプの場合は undefined を返します。
<boolean>nvpx.SetRBMeshShape <node>inode <integer>meshIndex <mesh>newMesh
ノードの指定されたインデックスのリジット ボディ メッシュのシェイプを、3 番目の引数で指定された TriMesh 値に設定します。リジット ボディ メッシュのタイプにメッシュがある場合(凸型、カスタムなど)は
true を、ない場合は false を返します。
<boolean>nvpx.GetRBMeshOverrideMasterMat <node>inode <integer>meshIndex
指定されたノードのリジット ボディ メッシュの[物理的マテリアルを上書き](Override Physical Material)オプションの状態を返します。
<boolean>nvpx.SetRBMeshOverrideMasterMat <node>inode <integer>meshIndex <boolean>overrideIt
指定されたノードのリジット ボディ メッシュの[物理的マテリアルを上書き](Override Physical Material)オプションの状態を、3 番目の引数で指定された値に設定します。成功した場合は
true を返し、失敗した場合は false を返します(たとえば、ノードにリジット ボディ モディファイヤがない場合や、meshIndex が無効な場合など)。
ノードの物理プロパティ
メソッド:
<&point3>nvpx.GetGlobalPosition <node>inode
指定されたノードのグローバル位置の値を返します。値を報告できない場合は[0,0,0]を返します。
<integer>nvpx.SetGlobalPosition <node>inode <&point3>position
position is In and Out parameter
指定されたノードのグローバル位置を、2 番目の引数として参照で渡された Point3 の値に設定します。成功した場合は 0 を、失敗した場合は -1 を返します。
<&point3>nvpx.GetLinearVelocity <node>inode
指定されたノードの線形速度の値を返します。値を取得できない場合は[0,0,0]を返します。
<integer>nvpx.SetLinearVelocity <node>inode <&point3>linearvelocity
linearvelocity is In and Out parameter
指定されたノードの線形速度を、2 番目の引数として参照で渡された Point3 の値に設定します。成功した場合は 0 を、失敗した場合は -1 を返します。
<&point3>nvpx.GetAngularVelocity <node>inode
指定されたノードの矩形速度の値を返します。値を取得できない場合は[0,0,0]を返します。
<integer>nvpx.SetAngularVelocity <node>inode <&point3>angularvelocity
angularvelocity is In and Out parameter
指定されたノードの線形速度を、2 番目の引数として参照で渡された Point3 の値に設定します。成功した場合は 0 を、失敗した場合は -1 を返します。
<&matrix3>nvpx.GetGlobalPose <node>inode
指定されたノードのグローバル ポーズの値を返します。値を報告できない場合は恒等行列を返します。
<integer>nvpx.SetGlobalPose <node>inode <&matrix3>pose
pose is In and Out parameter
指定されたノードのグローバル ポーズを、2 番目の引数として参照で渡された matrix3 の値に設定します。成功した場合は 0 を、失敗した場合は -1 を返します。
<float>nvpx.GetMass<node>inode
指定されたノードの質量の値を返します。値を取得できない場合は 0.0 を返します。
<float>nvpx.SetMass <node>inode <float>value
指定されたノードの質量を 2 番目の引数として渡された Float の値に設定します。新しい質量を返します。設定が失敗した場合は 0.0 を返します。
<float>nvpx.GetDynamicFriction <node>inode
指定されたノードの動的摩擦の値を返します。値を取得できない場合は 0.0 を返します。
<integer>nvpx.SetDynamicFriction <node>inode <float>value
指定されたノードの動的摩擦を 2 番目の引数として渡された Float の値に設定します。成功した場合は 0 を、失敗した場合は -1 を返します。
<float>nvpx.GetStaticFriction <node>inode
指定されたノードの静止摩擦の値を返します。値を取得できない場合は 0.0 を返します。
<integer>nvpx.SetStaticFriction <node>inode <float>value
指定されたノードの静止摩擦を 2 番目の引数として渡された Float の値に設定します。成功した場合は 0 を、失敗した場合は -1 を返します。
<float>nvpx.GetRestitution <node>inode
指定されたノードの反発の値を返します。値を取得できない場合は 0.0 を返します。
<integer>nvpx.SetRestitution <node>inode <float>value
指定されたノードの反発を 2 番目の引数として渡された Float の値に設定します。成功した場合は 0 を、失敗した場合は -1 を返します。
<matrix3 by value>nvpx.GetInitialPose <node>inode
指定されたノードの初期ポーズ変換行列を返します。
3ds Max 2013 以降で使用可能です。
<void>nvpx.SetInitialPose <node>inode <&matrix3>initialPose
initialPose is In and Out parameter
指定されたノードの初期ポーズ変換行列を、by-reference matrix3 に設定します。
3ds Max 2013 以降で使用可能です。
<boolean>nvpx.CaptureInitTransforms <&node array>nodes
nodes is In and Out parameter
by-reference 配列引数によって指定されたノードの初期変換をキャプチャします。成功した場合は True を、失敗した場合は False を返します。
3ds Max 2013 以降で使用可能です。
<boolean>nvpx.GetBakedFlag <node>inode
指定されたノードのベイク処理フラグを返します - ノードがベイク処理される場合は True、ベイク処理されない場合は False。
3ds Max 2013 以降で使用可能です。
<boolean>nvpx.SetBakedFlag <node>inode <boolean>isBaked
指定されたノードのベイク処理フラグを 2 番目の boolean 引数に設定します。成功した場合には True を、フラグを設定できなかった場合には False
を返します。
3ds Max 2013 以降で使用可能です。
物理的マテリアルのロードと保存
メソッド:
<boolean>nvpx.SaveMaterial <string>filename <float>staticFriction <float>dynamicFriction <float>bounciness <integer>density
物理的マテリアルの XML ファイルを、1 番目の引数で指定されたファイル名に保存します。2 番目、3 番目、4 番目、5 番目の引数では、物理的マテリアルの静止摩擦、動的摩擦、弾力性、および密度の値を指定します。成功した場合は
true を、失敗した場合は false を返します。
<float>nvpx.LoadMaterialStaticFric <string>filename
静止摩擦の値を指定された物理的マテリアル XML ファイルからロードし、Float として返します。
<float>nvpx.LoadMaterialDynFric <string>filename
動的摩擦の値を指定された物理的マテリアル XML ファイルからロードし、Float として返します。
<float>nvpx.LoadMaterialBounciness <string>filename
弾力性の値を指定された物理的マテリアル XML ファイルからロードし、Float として返します。
<integer>nvpx.LoadMaterialDensity <string>filename
弾力性の値を指定された物理的マテリアル XML ファイルからロードし、Float として返します。
物理的マテリアルのアクセス
メソッド:
<integer>nvpx.MaterialGetCount()
シーン内の物理的マテリアルの数を返します。
<integer>nvpx.MaterialGetId <integer>matIndex
指定された 0 から始まるマテリアル インデックス(マテリアル 1 のインデックスは 0、マテリアル 2 のインデックスは 1、など)に対し、マテリアルの整数 ID
を返します。または、インデックスが範囲外の場合は 0 を返します。
<integer>nvpx.MaterialGetType <integer>matId
nvpx.MaterialGetId() メソッドによって返されたマテリアル ID を受け取り、マテリアルのタイプを返します。
<boolean>nvpx.MaterialIsLocked <integer>matId
<integer>nvpx.MaterialFind <string>ParamName
<integer>nvpx.MaterialCreate <integer>type
指定されたタイプの新しい名前のない物理的マテリアル プリセットを作成します。マテリアル ID を整数で返します。
<boolean>nvpx.MaterialRemove <integer>matId
指定された ID の物理的マテリアル プリセットを削除します。成功した場合は true を、失敗した場合は false を返します。
<string>nvpx.MaterialGetParam <integer>matId <string>ParamName
指定された ID の物理的マテリアルのパラメータを文字列として返します。
2 番目の引数はパラメータ名であり、次のいずれかです。
- "Name" - 名前を返します。
- "Density" - 密度を返します。
- "StaticFriction" - 静止摩擦を返します。
- "Friction" - 動的摩擦を返します。
- "Bounciness" - 弾力性を返します。
- 物理的マテリアル プリセットでサポートされていない他の文字列に対しては、空の文字列 "" を返します。
<boolean>nvpx.MaterialSetParam <integer>matId <string>ParamName <string>ParamValue
1 番目の引数で指定された物理的マテリアルの、2 番目の引数で指定された名前のパラメータを、3 番目の引数で提供された文字列値に設定します。
成功した場合は true を返し、失敗した場合は false を返します(パラメータ名がサポートされていない場合など)。
<integer>nvpx.GetPMVisibleForRigidBodies()
物理的マテリアルがリジット ボディに対して表示される場合は 1 を返し、表示されない場合は 0 を返します。
<void>nvpx.SetPMVisibleForRigidBodies <integer>visible
リジット ボディに対する物理的マテリアルの表示を、整数引数(1 は表示、0 は非表示)に設定します。
<boolean>nvpx.SetRBDisplayMaterial <material>dynamicMat <material>kinematicMat <material>staticMat
3ds Max の 3 つのマテリアルを、ダイナミック オブジェクト、キネマティック オブジェクト、およびリジット ボディ オブジェクトの表示用に使用するように設定します。成功した場合は
true を、失敗した場合は false を返します。
バウンディング ジオメトリの作成
以下のメソッドは任意のシーン ノードで動作し、ノードがリジット ボディ メッシュまたはジオメトリ オブジェクトである必要はありません。
メソッド:
<node>nvpx.CreateBoundingBox <node>inode
指定されたノードのオブジェクトで位置合わせされたバウンディング ボックスと一致する nv_Box ジオメトリ プリミティブを作成します。
<node>nvpx.CreateBoundingSphere <node>inode
指定されたノードに対して位置合わせされ、ノードのバウンディング ボックスの球体バウンディングを表している、nv_Sphere ジオメトリ プリミティブを作成します。
<node>nvpx.CreateBoundingCapsule <node>inode
ノードのバウンディング ボックスを囲む nv_Capsule ジオメトリ プリミティブを作成します。
<node>nvpx.CreateBoundingCapsuleFromPoints <matrix3>poseTransform <&float array>points
points is In and Out parameter
ポーズ変換行列と、カプセルの内部に含まれる点の配列に基づいて、nv_Capsule ジオメトリ プリミティブを作成します。
<node>nvpx.CreateBoundingShapeConvex <node>inode <integer>vertLimit <float>inflation <int>style
指定されたノードを囲む編集可能メッシュ ノードを作成します。2 番目の引数は、結果のメッシュに含まれる頂点の数を制限します。3 番目の引数は、バウンディング サーフェスからのオフセットを適用する膨張を定義します。4
番目の引数は、凸型ハルの生成に使用されるアルゴリズムを指定します。
- 0 - サーフェス(オーバーハル)は、ハルが常にグラフィカル メッシュの外側になるようにする
- 1 - 頂点(簡素化)がグラフィカル メッシュの既存の頂点を使用する
<mesh>nvpx.CreateBoundingConvex <node>inode <integer>vertLimit <float>inflation
指定されたノードの凸型のバウンディング シェイプを表す TriMesh 値を返します。2 番目の引数は、結果のメッシュに含まれる頂点の数を制限します。3 番目の引数は、バウンディング
サーフェスからのオフセットを適用する膨張を定義します。このメソッドは nvpx.CreateBoundingShapeConvex() と似ていますが、シーン ノードを作成するのではなく、メモリ内にメッシュを生成します。
<mesh>nvpx.CreateBoundingConvexFromNodes <&node array>inodes <integer>vertLimit <float>inflation
inodes is In and Out parameter
指定されたすべてのノードの凸型のバウンディング シェイプを表す TriMesh 値を返します。2 番目の引数は、結果のメッシュに含まれる頂点の数を制限します。3 番目の引数は、バウンディング
サーフェスからのオフセットを適用する膨張を定義します。このメソッドは nvpx.CreateBoundingConvex() と似ていますが、複数のノードを同時に処理します。
<mesh>nvpx.CreateConvexHull <mesh>mesh <integer>vertlimit <float>inflation
指定された TriMesh 値の凸型のバウンディング シェイプを表す TriMesh 値を返します。2 番目の引数は、結果のメッシュに含まれる頂点の数を制限します。3
番目の引数は、バウンディング サーフェスからのオフセットを適用する膨張を定義します。このメソッドは nvpx.CreateBoundingConvex() と似ていますが、シーン ノードではなく、メモリ内の TriMesh 値に対して動作します。
<mesh>nvpx.CreateConvexFromPoints <&float array>points <integer>vertlimit <float>inflation
points is In and Out parameter
浮動小数点値の配列で指定される点を囲む凸型のバウンディング シェイプを表す TriMesh 値を返します。配列の要素の数は、空間の Point3 値の数の 3 倍である必要があります。連続する
3 つの浮動小数点値が 1 つの Point3 値の X、Y、Z コンポーネントとして使用されます。
2 番目の引数は、結果のメッシュに含まれる頂点の数を制限します。3 番目の引数は、バウンディング サーフェスからのオフセットを適用する膨張を定義します。
このメソッドは nvpx.CreateBoundingConvex() と似ていますが、ジオメトリの頂点ではなくユーザ定義の点に対して動作します。
スリープ アクター
メソッド:
<boolean>nvpx.SetSleepState <node>inode <boolean>onoff
指定されたノードのスリープ状態を、2 番目の引数で提供されるブール値に設定します。
<integer>nvpx.FindSleepingActors()
シーン内のスリープ アクターの数を返します。
<node>nvpx.GetSleepingActor <integer>index
0 から始まるインデックス引数に対応するスリープ ノードを返します。インデックスは、0 から (nvpx.FindSleepingActors())-1 の範囲である必要があります。
インデックスが範囲外の場合は、 undefined を返します。
パラメータの取得/設定
メソッド:
<string>nvpx.GetRBParam <node>inode <string>paramName
指定されたリジット ボディの指定された名前のパラメータの文字列値を返します。
<boolean>nvpx.SetRBParam <node>inode <string>paramName <string>paramValue
指定されたリジット ボディの指定された名前のパラメータの値を、3 番目の引数として指定された文字列値に設定します。
<boolean>nvpx.GetRBShapeParam <node>inodeRB <node>inodeShape <string>paramName
指定されたリジット ボディおよびシェイプ ノードの指定されたパラメータのブール値を返します。
<boolean>nvpx.SetRBShapeParam <node>inodeRB <node>inodeShape <string>paramName <string>paramValue
指定されたリジット ボディおよびシェイプ ノードの指定されたパラメータの文字列値を、4 番目の引数として指定された文字列値に設定します。
<boolean>nvpx.GetConstraintParam <node>inode <string>paramName
指定されたノードのコンストレイント プロパティの値を返します。2 番目の引数はプロパティの名前です。
<boolean>nvpx.SetConstraintParam <node>inode <string>paramName <string>paramValue
指定されたノードのコンストレイントの指定されたプロパティの値を設定します。3 番目の引数はプロパティの名前です。成功した場合は true を、失敗した場合は false
を返します。
<float>nvpx.GetSDKParameter <TSTR byvalue>paramName
指定された名前の SDK パラメータの値を返します。
サポートされる SDK パラメータの名前のリストを取得するには、シーンを XML ファイルに書き出し、<NxParameterDesc param="ABC"> タグのファイルの内容を参照します。「ABC」はパラメータの名前です。
パラメータの名前がサポートされていない場合、戻り値は -3.40282e+038 (最小の浮動小数点値)になります。
<integer>nvpx.SetSDKParameter <TSTR byvalue>paramName <float>value
指定された名前の SDK パラメータを、2 番目の引数で指定された値に設定します。詳細は前のメソッドを参照してください。
<integer>nvpx.SetSDKDefaultParameter <TSTRby value>paramName
指定された名前の SDK パラメータを、既定値に設定します。
コンタクト レポート
コンタクト レポートは、物理的シミュレーションの間に記録された衝突に関する情報を提供し、フォース、位置、および関係するノードが含まれます。フォースの大きさのしきい値を使用してコンタクトをフィルタ処理し、軽い衝突を除外できます。
メソッド:
<boolean>nvpx.SetUseContactReport <boolean>OnOff
コンタクト レポートの有効状態を true または false に設定します。
<integer>nvpx.GetContactsCount()
記録されたコンタクトの数を返します。
<boolean>nvpx.SelectFirstContact()
最初のコンタクトを選択します。
成功した場合は True を、失敗した場合は False を返します。
3ds Max 2013 以降で使用可能です。
<boolean>nvpx.GetNextContact()
次のコンタクトの内部ポインタを設定します。コンタクトのフォース、ポイント、ノードを取得するための以降のメソッドに影響します。
<point3 byvalue>nvpx.GetContactForce index:<index>
index default value: 0
インデックス付きコンタクト レコードのコンタクト フォースを Point3 値として返します。
インデックスが 0 または指定されていない場合は、現在のコンタクト レコードが使用されます。
新しい インデックス : 3ds Max 2013 に追加されたオプションのキーワード3ds Max 2012 では、このメソッドにより現在のコンタクトのみが返されました。
<point3 byvalue>nvpx.GetContactPoint index:<index>
index default value: 0
インデックス付きコンタクト レコードのコンタクト ポイントを Point3 値として返します。
インデックスが 0 または指定されていない場合は、現在のコンタクト レコードが使用されます。
新しい インデックス : 3ds Max 2013 に追加されたオプションのキーワード3ds Max 2012 では、このメソッドにより現在のコンタクトのみが返されました。
<node>nvpx.GetContactNode0 index:<index>
index default value: 0
インデックス付きコンタクト レコードの 1 番目のノードを返します。
インデックスが 0 または指定されていない場合は、現在のコンタクト レコードが使用されます。
新しい インデックス : 3ds Max 2013 に追加されたオプションのキーワード3ds Max 2012 では、このメソッドにより現在のコンタクトのみが返されました。
<node>nvpx.GetContactNode1 index:<index>
index default value: 0
インデックス付きコンタクト レコードの 2 番目のノードを返します。
インデックスが 0 または指定されていない場合は、現在のコンタクト レコードが使用されます。
新しい インデックス : 3ds Max 2013 に追加されたオプションのキーワード3ds Max 2012 では、このメソッドにより現在のコンタクトのみが返されました。
<float>nvpx.GetContactFilter()
現在のコンタクト フィルタの値を返します。
フォースのベクトルの長さ(大きさ)がこの値より小さいコンタクトは記録されません。
<float>nvpx.SetContactFilter <float>force
コンタクトのフィルタを浮動小数点のしきい値に設定します。
フォースのベクトルの長さがこの値より小さいコンタクトは記録されません。
スキン アクセス
以下のメソッドは、3ds Max のスキン データへのアクセスを提供します。
メソッド:
<boolean>nvpx.ParseSkinInfo <node>inode <float>weightThreshold
2 番目の引数を重みのしきい値として使用して、指定されたノードからスキンの情報を収集します。重みがしきい値より小さい頂点についてのデータは収集されません。成功した場合は
true を返し、失敗した場合は false を返します(ノードがスキン オブジェクトではない場合など)。
<integer>nvpx.GetVerticesCountFromSkinnedBone <node>inode
nvpx.ParseSkinInfo() メソッドで収集されるときに指定されたボーンによって影響を受ける頂点の数を返します。
<float by value array>nvpx.GetVerticesFromSkinnedBone <node>inode
指定されたボーンによって影響を受ける頂点の X、Y、Z コンポーネントを表す浮動小数点値の配列を返します。座標はボーンのローカル スペースのものです。ワールド空間の位置を生成するには、配列の
3 つの浮動小数点値から作成される Point3 値に、ボーンの変換行列を乗算する必要があります。
<boolean>nvpx.ReleaseSkinInfo()
nvpx.ParseSkinInfo() によって収集されたスキン情報データをクリアします。
ボーン メソッド
メソッド:
<boolean>nvpx.HaveBoneFloatLimitControl <node>inode <string>block
ボーンに実数リミット コントロールがある場合は true を返します。
<string>nvpx.GetBoneFloatLimitValue <node>inode <string>block <string>param
ボーンの実数リミットの値を返します。
<boolean>nvpx.IsBone <node>inode
指定されたノードがボーンである場合は true を返し、ボーンではない場合は false を返します。
<matrix3 by value>nvpx.GetBonePose <node>inode
指定されたボーンのポーズ変換行列を返します。
ラグドール アクセス
メソッド:
<node>nvpx.RagdollGetRootBone <node>inode
指定されたラグドールのルート ボーンを返します。
<boolean>nvpx.IsRagdollNode <node>inode
指定されたノードがラグドール ノードである場合、true を返します。
<boolean>nvpx.LoadRagdollHelperMesh <meshby value>mesh
ラグドール ヘルパー メッシュの値をロードします。成功した場合は true を、失敗した場合は false を返します。
<node>nvpx.CreateRagdollHelper()
ラグドール ヘルパーを作成します。
<void>nvpx.RagdollRegenerate <node>ragdoll <&node array>bones
bones is In and Out parameter
2 番目の引数で指定されたボーン ノードの配列を使用して、指定されたラグドール ノードを再生成します。
<void>nvpx.RagdollAddBone <node>ragdoll <node>boneNode
2 番目の引数で指定されたボーン ノードを、1 番目の引数で指定されたラグドール ノードに追加します。
<void>nvpx.RagdollRemoveBone <node>ragdoll <node>boneNode
2 番目の引数で指定されたボーン ノードを、1 番目の引数で指定されたラグドールから削除します。
<boolean>nvpx.RagdollGroupBones <node>ragdoll <&node array>bones
bones is In and Out parameter
1 番目の引数で指定されたラグドールのラグドール ボーンを、2 番目の引数として渡された参照の配列を使用して指定します。成功した場合は true を、失敗した場合は false を返します。
<boolean>nvpx.RagdollSave <node>ragdoll <string>filename
1 番目の引数で指定されたラグドールを、2 番目の引数で指定されたファイル名に保存します。成功した場合は true を、失敗した場合は false を返します。
<boolean>nvpx.RagdollLoad <node>ragdoll <string>filename
1 番目の引数で指定されたラグドールを、2 番目の引数で指定されたファイルからロードします。成功した場合は true を、失敗した場合は false を返します。
Biped 統合
メソッド:
<boolean>nvpx.IsBiped <node>inode
指定されたノードが Biped ノードである場合は true を返し、それ以外の場合は false を返します。
<boolean>nvpx.IsBipedRoot <node>inode
指定されたノードが Biped ルート ノードである場合は true を返し、それ以外の場合は false を返します。
<boolean>nvpx.IsBipedFootsteps <node>inode
指定されたノードが Biped 足跡ノードである場合は true を返し、それ以外の場合は false を返します。
<void>nvpx.BipedSetKeys <boolean>setKeys
引数が true の場合、選択されている Biped に対するキーを設定します。
Physique 統合
メソッド:
<boolean>nvpx.PhysiqueLoad <node>inode
指定されたノードの Physique データをロードします。
<integer>nvpx.PhysiqueGetNumBones <node>inode
指定されたノードの Physique モディファイヤに関連付けられているボーンの数を返します。
<node>nvpx.PhysiqueGetBone <node>inode <integer>boneIndex
指定されたノードの指定されたインデックスのボーン ノードを返します。
<integer>nvpx.PhysiqueGetNumBoneVertices <node>inode <node>boneNode
1 番目の引数で指定されたノード内にある、2 番目の引数で指定されたボーンによって影響を受ける頂点の数を返します。
<point3 by value>nvpx.PhysiqueGetBoneVertex <node>inode <node>boneNode <integer>verticeIndex
1 番目の引数で指定されたノード内にあり、2 番目の引数で指定されたボーンによって影響を受ける、インデックスで指定された頂点の位置を返します。
ユーティリティ関数
メソッド:
<boolean>nvpx.IsConvex <node>inode
指定されたノードが凸型の場合は true を返し、凹型の場合またはジオメトリ オブジェクトではない場合は false を返します。
<float>nvpx.CalcVolume <node>inode
指定されたノードのボリュームを一般的なキュービック単位で返します。
間接的ドラッグ メソッド
メソッド:
<boolean>nvpx.StartIndirectDrag <node>attach
シミュレーションの実行中に指定されたノードをマウスにアタッチすることで間接的ドラッグを開始します。成功した場合は true を返し、シミュレーションが実行されていない場合は false を返します。
<boolean>nvpx.OnIndirectDrag <&point3>mousepos
mousepos is In and Out parameter
間接的ドラッグが有効の場合は、 true を返し、マウスの位置を参照引数に格納します。それ以外の場合は false を返します。
<boolean>nvpx.EndIndirectDrag()
間接的ドラッグを終了します。成功した場合は true 、失敗した場合は false を返します。
ビジュアライザー メソッド
メソッド:
<boolean>nvpx.VisualizerGetEnabled()
ビジュアライザーの有効状態を返します。
<void>nvpx.VisualizerSetEnabled <boolean>flag
ビジュアライザーの有効状態を設定します。
<float>nvpx.VisualizerGetScale()
ビジュアライザーのスケール値を返します。既定値は 1.0 です。
<float>nvpx.VisualizerSetScale <float>newScale
ビジュアライザーのスケールを、指定された浮動小数点値に設定します。
<integer>nvpx.VisualizerGetPhysXParamCount()
ビジュアライザーがサポートしている PhysX パラメータの数を返します。
<string>nvpx.VisualizerGetPhysXParamName <integer>index
i 番目のパラメータの名前を返します。インデックスの基数は 1 です。
<integer>nvpx.VisualizerGetPhysXParam <string>paramName
指定されたビジュアライザー パラメータの値を返します。ブール値は整数で表され、0 は false、1 は true です。
<boolean>nvpx.VisualizerSetPhysXParam <string>paramName <boolean>flag
1 番目の引数で指定された名前のビジュアライザー パラメータを、2 番目の引数で指定されたブール値に設定します。成功した場合は true を返し、パラメータ名を認識できなかった場合は
false を返します。有効なパラメータ名のリストについては、次の例を参照してください。
例:
|
for i = 1 to nvpx.VisualizerGetPhysXParamCount() do
(
local theName= (nvpx.VisualizerGetPhysXParamName i)
format "%: \"%\" = %\n" i theName (nvpx.VisualizerGetPhysXParam theName)
)
|
出力:
|
1: "Body Axis" = 0
2: "Body Mass Axes" = 0
3: "Body Linear Velocity" = 0
4: "Body Angular Velocity" = 0
5: "Joint Local Axes" = 0
6: "Joint World Axes" = 0
7: "Joint Limits" = 0
8: "Contact Point" = 0
9: "Contact Normal" = 0
10: "Contact Error" = 0
11: "Contact Force" = 1
12: "Actor Axes" = 0
13: "Collision AABBS" = 0
14: "Collision Shapes" = 0
15: "Collision Axes" = 0
16: "Collision Compounds" = 0
17: "Collision VNormals" = 0
18: "Collision FNormals" = 0
19: "Collision Edges" = 0
20: "Collision Spheres" = 0
21: "Collision Static" = 0
22: "Collision Free" = 0
23: "Collision CCD" = 0
24: "Collision Skeletons" = 0
OK
|
PhysX システム
メソッド:
<integer>nvpx.GetPhysXSDKVersion()
PhysX SDK のバージョンを整数として返します。
<string>nvpx.GetPhysXSDKVersionString()
PhysX SDK のバージョンを文字列として返します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetPhysXSDKVersionMajor()
PhysX SDK のメジャー バージョンを整数として返します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetPhysXSDKVersionMinor()
PhysX SDK のマイナー バージョンを整数として返します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetPhysXSDKVersionBugFix()
PhysX SDK のバグ修正バージョンを整数として返します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetApexSDKVersion()
Apex SDK のバージョンを整数として返します。
<integer>nvpx.GetPhysXPluginCount()
インストールされている PhysX プラグインの数を返します。
<integer>nvpx.GetPhysXPluginVersion <integer>Index
指定されたインデックスの PhysX プラグインのバージョン番号を返します。
インデックスが 1 未満の場合、または nvpx.GetPhysXPluginCount() で返される値より大きい場合は、0 が返されます。
<string>nvpx.GetPhysXPluginVersionString <integer>Index
指定されたインデックスの PhysX プラグインのバージョンを文字列として返します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetPhysXPluginVersionMajor <integer>Index
指定されたインデックスの PhysX プラグインのメジャー バージョンを整数として返します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetPhysXPluginVersionMinor <integer>Index
指定されたインデックスの PhysX プラグインのマイナー バージョンを整数として返します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetPhysXPluginVersionBugFix <integer>Index
指定されたインデックスの PhysX プラグインのバグ修正バージョンを整数として返します。
3ds Max 2013 以降で使用可能です。
<bool>nvpx.IsAutodeskVersion()
PhysX プラグインが Autodesk MassFX バージョンの場合は True を、NVidia またはサード パーティ ビルドの場合は False を返します。
3ds Max 2013 以降で使用可能です。
<string>nvpx.GetPluginCompanyName()
組織固有のプラグイン名を返します。
Autodesk ビルドの場合は、「MassFX」を返します。
3ds Max 2013 以降で使用可能です。
<string>nvpx.GetScriptPath()
MassFX 関連スクリプトへのパスを返します。
3ds Max 2013 以降で使用可能です。
例:
|
|
出力:
|
"stdplugs\stdscripts\(MassFX)\"
|
<integer>nvpx.InitializePhysX <value>stream
PhysX システムを初期化します。
<void>nvpx.BeforeAddPhysXActors()
3ds Max 2013 以降で使用可能です。
<integer>nvpx.CreateToolbar()
MassFX シミュレーション ツールバーを作成します。
<void>nvpx.ShowToolbar <boolean>show
ブール引数として true が渡された場合は、MassFX シミュレーション ツールバーを表示します。
ブール引数として false が渡された場合は、MassFX シミュレーション ツールバーを表示しません。
<void>nvpx.ShowMaterialEditor <boolean>show
このメソッドは 3ds Max 2012 で使用できましたが、3ds Max 2013 から削除されています。
<boolean>nvpx.ShowValidateScene <boolean>automated
[シーンを検証](Validate Scene)ダイアログを表示します。
ブール引数が true の場合は、テストも自動的に実行されます。
ブール引数が false の場合は、テストは実行されないので、[検証](Validate)ボタンをクリックする必要があります。
<boolean>nvpx.HwAvailable()
PhysX アクセラレーション ハードウェアが使用可能な場合は true を返し、それ以外の場合は false を返します。
<integer>nvpx.GetScreenHeight()
画面の高さをピクセル数で返します。
<float>nvpx.GetSimulationFPS()
シミュレーションのフレーム レートを、1 秒あたりのフレーム数の浮動小数点値で返します。
<boolean>nvpx.PrintSimulationFPS <boolean>onoff
ブール引数として true が渡された場合は、MAXScript リスナーに対する自動シミュレーション フレーム レートの出力を有効にします。
引数が false の場合は、フレーム レートの出力はオフになります。
<boolean>nvpx.UsePhysXPlugin <integer>Index
指定されたインデックスの PhysX プラグインに切り替えます。
成功した場合は true を返し、失敗した場合(プラグインのインデックスが範囲外の場合など)は false を返します。
さらに、MAXScript リスナーに「Switch PhysX SDK to XXX」というメッセージを出力します。XXX は、 nvpx.GetPhysXPluginCount() によって返される SDK のバージョンです。
PhysX プラグインをデタッチします。
PhysX プラグインをアタッチします。
<void>nvpx.DestroyPhysX()
PhysX プラグインを破棄します。
<void>nvpx.OpenHelpFile()
使用可能な場合は、MassFX ヘルプ ファイルを開きます。
<boolean>nvpx.IsApexAvailable()
APEX の布地シミュレーションが現在のプラグインで使用可能な場合は true を返し、それ以外の場合は false を返します。
<integer>nvpx.DebugPrint()
デバッグ テキストを MAXScript リスナーに出力します。PhysX エンジンの現在の状態、およびシーン内のシミュレーション オブジェクトについての情報が含まれます。
例
|
nvpx.DebugPrint()
-->
PhysX SDK version: 34079744, HW version: 0
Number of PPUs: 0
Number of Triangle meshes: 0
Number of HeightFields: 0
Number of Cloth meshes: 0
Number of SoftBody meshes: 0
Number of CCD skeletons: 0
Number of Scenes: 1
Scene object: 1013386992
Number of NxActors: 0
Our Scene object: 1013386992
Cooking interface object: 970914512, initialized: true
---------------------------------------------------
0
|
nvpx インタフェースによって実装されているすべてのメソッドのリストを出力します。 showInterface nvpx を呼び出すのと似ています。
<void>nvpx.PhysXPanelTooltip()
<boolean>nvpx.ConnectPVD <string>hostName
<void>nvpx.SetButtonCheck <integer>id <boolean>value
<boolean>nvpx.SetNullCM()
PhysX ドラッグ モードを開始します。
<boolean>nvpx.RemoveNullCM()
PhysX ドラッグ モードを終了します。
<void>nvpx.SetAnimationState <boolean>state
アニメーションの状態を、指定されたブール演算値に設定します。
3ds Max 2013 以降で使用可能です。
<boolean>nvpx.GetAnimationState()
アニメーションの状態をブール演算値として返します。
3ds Max 2013 以降で使用可能です。
<string>nvpx.GetPluginBuild()
プラグイン ビルド文字列を返します。
3ds Max 2013 以降で使用可能です。
<void>nvpx.ShowAboutDialog()
MassFX バージョン ダイアログが開きます。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetBehaviorReason()
[動作理由](Behavior Reason)モードを表す整数を返します。
3ds Max 2013 以降で使用可能です。
<boolean>nvpx.SetBehaviorReason <integer>mode
動作理由を指定された整数モードに設定します。成功した場合は True を、失敗した場合は False を返します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetVirtualScreenX()
仮想画面の X サイズを返します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetVirtualScreenY()
仮想画面の Y サイズを返します。
3ds Max 2013 以降で使用可能です。
<void>nvpx.DumpContentCore <string>file <integer>Type
すべてのコア設定が含まれている XML ファイルを、指定されたファイル名で作成します。
2 番目の引数によって内容のタイプをコントロールします - 0 の場合はオブジェクトの定義のみが出力され、1 または 0 以外の場合は引数にすべてのタイプの定義も含まれます。
3ds Max 2013 以降で使用可能です。
例
|
nvpx.DumpContentCore @"c:\temp\DumpContentCore.txt" 0
|
ファイル内容
|
<?xml version="1.0" encoding="utf-16"?><?xml-stylesheet type="text/xsl" href="cc.xslt"?>
<contentcore>
<objects>
<object name="0x29953550" type="ICCPhysX" links="0" address="0x29953550" >
<field name="ContactShellDepth">
0.0393701
</field>
<field name="ContactShellOffset">
0.0393701
</field>
<field name="ContactShellInvert">
0
</field>
<field name="BounceMinimumVelocity">
0
</field>
<field name="EnableCCD">
0
</field>
<field name="CcdEpsilon">
0
</field>
<field name="ContinuousCD">
3241.57
</field>
<field name="UseGravity">
1
</field>
<field name="Gravity">
{0,0,-386.221}
</field>
<field name="UseAdaptiveForce">
1
</field>
<field name="EnableContactReport">
0
</field>
<field name="IsApexDLLPresent">
1
</field>
<field name="IsApexLoaded">
0
</field>
<field name="PhysXSDKVersion">
285
</field>
<field name="PhysXSDKVersionMajor">
2
</field>
<field name="PhysXSDKVersionMinor">
8
</field>
<field name="PhysXSDKVersionBugFix">
5
</field>
<field name="ApexSDKVersion">
102
</field>
<field name="DensityFactor">
0.016387
</field>
<field name="SolverIterations">
30
</field>
<field name="FPS">
0
</field>
<field name="IsHwAvailable">
1
</field>
<field name="SupportMultiThread">
1
</field>
<field name="UseMultiThread">
0
</field>
<field name="CCDMotionThreshold">
5
</field>
<field name="SupportHardwareScene">
1
</field>
<field name="UseHardwareScene">
0
</field>
<field name="UseGroundPlane">
74
</field>
<field name="FOV">
0.785398
</field>
<field name="FocalDistance">
250
</field>
<field name="ViewDirection">
{-0.612372,-0.612372,0.5}
</field>
<field name="ViewPoint">
{-153.093,-153.093,125}
</field>
<field name="ViewUpDirection">
{0.353553,0.353553,0.866025}
</field>
<field name="ViewportWidth">
842
</field>
<field name="ViewportHeight">
484
</field>
<field name="OrthoWidth">
1
</field>
<field name="OrthoHeight">
1
</field>
<field name="MinZ">
0.1
</field>
<field name="MaxZ">
4000
</field>
<field name="IsPerspective">
1
</field>
<field name="GenerateShapePerElement">
1
</field>
<field name="SleepEnergyMassInvariant">
1.9685
</field>
</object>
<object name="0x49d18c30" type="ICCScene" links="0" address="0x49d18c30" >
<field name="AnimationFPS">
60
</field>
<field name="AnimationStartFrame">
0
</field>
<field name="AnimationEndFrame">
0
</field>
<field name="RootNode">
0x00000000297B81A0
</field>
<field name="WorldBounds">
<class type="ccBounds3"></class>
</field>
<field name="SubSteps">
3
</field>
<field name="SubSubSteps">
0
</field>
<field name="DistanceUnit">
5
</field>
</object>
<object name="0x49d18d00" type="ICCContactManager" links="0" address="0x49d18d00" >
<field name="IsEnabled">
1
</field>
<field name="Layers">
{{[0x0000000048904020]=0x0000000048904020}{[0x00000000489042E0]=0x00000000489042E0}{[0x0000000048904440]=0x0000000048904440}{[0x00000000489045A0]=0x00000000489045A0}{[0x0000000048904700]=0x0000000048904700}}
</field>
</object>
<object name="0x48904020" type="ICCContactLayer" links="0" address="0x48904020" >
<field name="ContactSelf">
1
</field>
<field name="LayersInteractWith">
{empty}
</field>
<field name="AgentsJoinedFull">
{empty}
</field>
<field name="AgentsJoinedPartial">
{empty}
</field>
</object>
<object name="0x489042e0" type="ICCContactLayer" links="0" address="0x489042e0" >
<field name="ContactSelf">
0
</field>
<field name="LayersInteractWith">
{empty}
</field>
<field name="AgentsJoinedFull">
{empty}
</field>
<field name="AgentsJoinedPartial">
{empty}
</field>
</object>
<object name="0x489045a0" type="ICCContactLayer" links="0" address="0x489045a0" >
<field name="ContactSelf">
1
</field>
<field name="LayersInteractWith">
{{[0x0000000048904020]=0x0000000048904020}}
</field>
<field name="AgentsJoinedFull">
{empty}
</field>
<field name="AgentsJoinedPartial">
{empty}
</field>
</object>
<object name="0x48904440" type="ICCContactLayer" links="0" address="0x48904440" >
<field name="ContactSelf">
0
</field>
<field name="LayersInteractWith">
{empty}
</field>
<field name="AgentsJoinedFull">
{empty}
</field>
<field name="AgentsJoinedPartial">
{empty}
</field>
</object>
<object name="0x48904700" type="ICCContactLayer" links="0" address="0x48904700" >
<field name="ContactSelf">
1
</field>
<field name="LayersInteractWith">
{empty}
</field>
<field name="AgentsJoinedFull">
{empty}
</field>
<field name="AgentsJoinedPartial">
{empty}
</field>
</object>
<object name="0x297b81a0" type="ICCNode" links="0" address="0x297b81a0" >
<field name="WorldMatrix">
{1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}
</field>
<field name="OffsetMatrix">
{1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}
</field>
<field name="PivotMatrix">
{1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}
</field>
<field name="PivotInverseMatrix">
{1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}
</field>
<field name="Scene">
0x0000000049D18C30
</field>
<field name="ChildActor">
0x0000000000000000
</field>
<field name="ChildGeometry">
0x0000000000000000
</field>
<field name="ChildConvexes">
{empty}
</field>
<field name="IsBone">
0
</field>
<field name="Children">
{empty}
</field>
<field name="Parent">
0x0000000000000000
</field>
<field name="NodeName">
{Scene Root}
</field>
<field name="NodeType">
0
</field>
<field name="PartIndex">
917
</field>
<field name="DCCHandle">
924
</field>
</object>
<object name="0x49d193f0" type="ICCScene" links="0" address="0x49d193f0" >
<field name="AnimationFPS">
30
</field>
<field name="AnimationStartFrame">
0
</field>
<field name="AnimationEndFrame">
100
</field>
<field name="RootNode">
0x00000000297B8640
</field>
<field name="WorldBounds">
<class type="ccBounds3"></class>
</field>
<field name="SubSteps">
3
</field>
<field name="SubSubSteps">
0
</field>
<field name="DistanceUnit">
5
</field>
</object>
<object name="0x49d194c0" type="ICCContactManager" links="0" address="0x49d194c0" >
<field name="IsEnabled">
0
</field>
<field name="Layers">
{empty}
</field>
</object>
<object name="0x297b8640" type="ICCNode" links="0" address="0x297b8640" >
<field name="WorldMatrix">
{1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}
</field>
<field name="OffsetMatrix">
{1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}
</field>
<field name="PivotMatrix">
{1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}
</field>
<field name="PivotInverseMatrix">
{1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}
</field>
<field name="Scene">
0x0000000049D193F0
</field>
<field name="ChildActor">
0x0000000000000000
</field>
<field name="ChildGeometry">
0x0000000000000000
</field>
<field name="ChildConvexes">
{empty}
</field>
<field name="IsBone">
0
</field>
<field name="Children">
{empty}
</field>
<field name="Parent">
0x0000000000000000
</field>
<field name="NodeName">
{Scene Root}
</field>
<field name="NodeType">
0
</field>
<field name="PartIndex">
0
</field>
<field name="DCCHandle">
0
</field>
</object>
</objects>
</contentcore>
|
<void>nvpx.SwitchSDKOnPanelData()
内部で使用します。
3ds Max 2013 以降で使用可能です。
ビューア
<void>nvpx.CreateViewer()
ビューアを作成します。
3ds Max 2013 以降で使用可能です。
<void>nvpx.PreCreateViewer()
ビューアの作成前に呼び出します。
3ds Max 2013 以降で使用可能です。
<void>nvpx.PostCreateViewer()
ビューアの作成後に呼び出します。
3ds Max 2013 以降で使用可能です。
<boolean>nvpx.ShouldViewerSync()
ビューアの同期状態を返します。既定値は False です。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.GetViewerCommand()
ビューアのコマンドを返します。
3ds Max 2013 以降で使用可能です。
<integer>nvpx.SetViewerCommand <integer>command
ビューアのコマンドを設定します。
3ds Max 2013 以降で使用可能です。
<void>nvpx.CheckViewerState()
ビューアの状態を更新します。
3ds Max 2013 以降で使用可能です。
<void>nvpx.UpdateViewerPlayback()
ビューアの再生を更新します。
3ds Max 2013 以降で使用可能です。
プロファイラ メソッド
メソッド:
<void>nvpx.ProfilerBegin <string>name
プロファイリングを開始します。
<void>nvpx.ProfilerEnd <string>name
プロファイリングを終了します。
<void>nvpx.ProfilerDump()
開始と終了の呼び出しの間に収集されたプロファイリング情報をダンプします。定義されているプロファイラごとに行があり、平均時間、最小時間、最大時間、合計時間と、シミュレーションの実行回数に関する情報が含まれます。
例
|
nvpx.ProfilerBegin "Test" --start profiling.
--> OK
--Perform MassFX Simulation, e.g. Bake All.
nvpx.ProfilerEnd "Test" --end profiling.
--> OK
nvpx.ProfilerDump() --Dump the collected info:
--> Test avg:37728ms min:37728 max:37728 count:1 total:37728ms
--> OK
|
マルチ スレッディングとハードウェア アクセラレーション
メソッド:
<boolean>nvpx.SupportMultiThread()
PhysX エンジンがマルチ スレッディングをサポートしている場合は true を返し、サポートしていない場合は false を返します。
<boolean>nvpx.IsMultiThreadOn()
マルチ スレッディングが有効である場合は true を返し、無効になっている場合は false を返します。既定値は false です。
<boolean>nvpx.UseMultiThread <boolean>onOff
引数が true の場合は、マルチ スレッディングを有効にします。引数が false の場合は、マルチ スレッディングを無効にします。
<boolean>nvpx.SupportHardwareScene()
ハードウェア アクセラレーションが現在サポートされている場合は true を返し、サポートされていない場合は false を返します。
<boolean>nvpx.IsHardwareSceneOn()
ハードウェア アクセラレーションが有効である場合は true を返し、無効になっている場合は false を返します。
<boolean>nvpx.UseHardwareScene <boolean>onOff
引数が true でハードウェア アクセラレーションがサポートされている場合は、ハードウェア アクセラレーションを有効にします。false の場合は、ハードウェア
アクセラレーションを無効にします。成功した場合は true を返し、ハードウェア アクセラレーションがサポートされていない場合は false を返します。
UnitTest メソッド
以下のメソッドは内部的な単位テストの実行に使用されるものなので、ユーザは呼び出さないでください。
メソッド:
<void>nvpx.UnitTest_MaterialCreate <integer>type <string>name
<boolean>nvpx.UnitTest_MaterialFind <string>name
<void>nvpx.UnitTest_MaterialDelete <string>type
<void>nvpx.UnitTest_MaterialAssign <node>node <string>name
<string>nvpx.UnitTest_MaterialPick <node>node
<void>nvpx.UnitTest_MaterialSetSelection <string>type
<string>nvpx.UnitTest_MaterialGetSelection()
破壊と破損
<node>nvpx.CreateDestruction <&node array>nodes
nodes is In and Out parameter
by-reference 配列引数でノードを使用して、破壊設定を作成します。
3ds Max 2013 以降で使用可能です。
<void>nvpx.UpdateDamageForces <float>Damage <float>Momentum <float>Radius
指定された破損、運動量、および半径を使用して破損フォースを更新します。
3ds Max 2013 以降で使用可能です。
爆破のオンとオフを切り替えます。
3ds Max 2013 以降で使用可能です。
<void>nvpx.ToggleHammer()
ハンマーのオンとオフを切り替えます。
3ds Max 2013 以降で使用可能です。