ペインタ インタフェースは、メッシュ上にペイントするためのツールを提供するための、3ds Max 5 で導入された汎用 API です。この API の関数とプロパティにアクセスするときは、PainterInterface と呼ばれるインタフェースを使用します。
Painter インタフェースによるカスタム ペイント ツールの定義
[ペインタ オプション](Painter Options)ダイアログ ボックスの[マウス リリース時に更新](Update on mouse up)チェックボックスの状態を取得/設定します。true に設定すると、ペインタはマウス ボタンが離れているときにだけストロークを更新します。
ヒット テストに使用するクアッド ツリーの深度を取得/設定します。値が大きくなるほど操作は速くなりますが、メモリの消費量は増え、ツリーの構築により多くの時間がかかります。
thePainterInterface.minStr : float : Read|Write|Validated by Range: 0.0 to 1e+006 thePainterInterface.maxStr : float : Read|Write|Validated by Range: 0.0 to 1e+006
最小強度と最大強度の値を取得/設定します。使用できる圧力デバイスがない場合は、最大強度だけが使用されます。
thePainterInterface.dragStrLimitMin : float : Read|Write thePainterInterface.dragStrLimitMax : float : Read|Write
この 2 つの値は、[Alt]キーと[Shift]キーを押しながらドラッグし、ビューポートで値を相互作用的に調整するときに、強度範囲を制限します。
thePainterInterface.minSize : float : Read|Write|Validated by Range: 0.0 to 1e+006 thePainterInterface.maxSize : float : Read|Write|Validated by Range: 0.0 to 1e+006
ブラシの最小および最大サイズの値を取得/設定します。使用できる圧力デバイスがない場合は、最大サイズだけが使用されます。
[加算](Additive)チェックボックスの状態を取得/設定します。true に設定すると、ペイント値は既存の値を上書きせずに既存の値に加算されます。
圧力タブレットを使用するための圧力感度を有効/無効にします。
[圧力効果](Pressure Affects)オプションを取得/設定します。
定義済みの強度圧力を有効/無効にします。 true に設定すると、タブレットの圧力または最大強度の値ではなく、ストローク内のグラフの位置に基づいて強度を決定します。グラフを設定するときは、オプションのダイアログ ボックスの「定義済みの圧力」プロパティを使用します。オプションのダイアログ ボックスは、 thePainterInterface.paintOptions() によって使用できます。
定義済みのサイズ圧力を有効/無効にします。true に設定すると、タブレットの圧力または最大サイズの値ではなく、ストローク内のグラフの位置に基づいて強度を決定します。グラフを設定するときは、オプションのダイアログ ボックスの「定義済みの圧力」プロパティを使用します。オプションのダイアログ ボックスは、 thePainterInterface.paintOptions() によって使用できます。
メッシュの外側をペイントする場合またはメッシュを使用しないでペイントする場合のヒット タイプを定義します。
0 - 最後のヒット ポイントまたは法線に基づいて平面を作成します。このタイプを使用するときは、ペイントするためのメッシュが必要です。
1 - 画面内への Z 深度。ペイント可能なビュー内に平面の X 単位が作成されます。この場合、メッシュは必要ありません。
2 - 現在のビューに位置合わせされたワールド空間内のポイント上に平面を作成します。この場合、メッシュは必要ありません。
.offMeshHitType 1 を使用する Z 深度を定義します。(前記を参照)
.offMeshHitType 2 を使用するワールド位置を定義します。(前記を参照)
ペイント用のノードを初期化します。NodeList は、ペイントするノードの配列です。Flags は現在は使用されていませんが、代わりに 0 を使用できます。
updatePointGather 引数が true の場合は、ポイント収集リストも更新されます。
[ペイント オプション](Paint Options)ダイアログ ボックスを開きます。
ペイントをコントロールするマクロ コールバック スクリプトの登録に使われます。
macroName は macroScript ソースへのパスであり、category は macroScript のカテゴリです。
ペイント モードのときは true 、ペイントがアクティブでない場合は false を返します。
インデックスで指定されたポイントがヒットしたとき、 true を返します。
thePainterInterface.getHitPointData <void> <&point3>localHit <&point3>localNormal <&point3>worldHit <&point3>worldNormal <&float>radius <&float>str <integer>tabIndex
すべてのパラメータは In および Out パラメータです。
このメソッドによって、次のストロークのヒット ポイント データを取得できます。
localHit : ヒットしたノードのローカル スペース内のヒット位置
localNormal : ヒットしたノードのローカル スペース内の、ヒットした面の法線
tabIndex : 取得するヒット ポイントのインデックス。この値が 0 の場合は、最後のヒット ポイントが返されます。
<void>thePainterInterface.getHitFaceData <&point3>bary <&integer>faceIndex <node>node <integer>tabIndex bary is In and Out parameter faceIndex is In and Out parameter
この関数によって、ストロークのヒット面のデータを取得できます。これは、スタックの最上位に存在する面データです。
tabIndex : これは、取得するヒット ポイントのインデックスです。この値が 0 の場合、最後のヒット ポイントが返されます。
<void>thePainterInterface.getHitPressureData <&boolean>shift <&boolean>ctrl <&boolean>alt <&float>pressure <integer>tabIndex shift is In and Out parameter ctrl is In and Out parameter alt is In and Out parameter pressure is In and Out parameter
これは、ストローク ポイントのキーの状態と圧力の状態を返します。
tabIndex : 取得するヒット ポイントのインデックスこの値が 0 の場合は、最後のヒット ポイントが返されます。
<void>thePainterInterface.getMirrorHitPointData <&point3>localMirrorHit <&point3>localMirrorNormal <&point3>worldMirrorHit <&point3>worldMirrorNormal <integer>tabIndex localMirrorHit is In and Out parameter localMirrorNormal is In and Out parameter worldMirrorHit is In and Out parameter worldMirrorNormal is In and Out parameter
このメソッドによって、次のストロークのミラー ヒット ポイント データを取得できます。
localMirrorHit : ヒットしたノードのローカル スペース内のヒット位置
localMirrorNormal : ヒットしたノードのローカル スペース内の、ヒットした面の法線
worldMirrorHit : ワールド空間のヒット ポイント
worldMirrorNormal : ヒット面のワールド空間の法線
tabIndex : 取得するミラー ヒット ポイントのインデックス。この値が 0 の場合は、最後のヒット ポイントが返されます。
ストローク内の、インデックスで指定されたヒット ポイントのマウス位置を返します。
ストローク内の、インデックスで指定されたヒット ポイントの時間を返します。
ストローク内の、インデックスで指定されたヒット ポイントの距離を返します。
ストローク内の、インデックスで指定されたヒット ポイントのベクトルを返します。
指定されたサンプル インデックスのヒット ノードを返します。
指定したノードの、インデックスで指定されたポイントの位置を返します。
指定したノードの、インデックスで指定されたポイントの強度を返します。
指定したノードの、インデックスで指定されたポイントの重みを返します。
指定したノードの、インデックスで指定されたポイントの法線ベクトルを返します。
<void>thePainterInterface.addToStroke <point2>pos <boolean>updatePointGather <boolean>updateViewPort
ストロークにポイントを追加します。 updatePointGather が true の場合、ポイントはリストに追加されます。 updateViewPort が true の場合、ポイントはビューポートに表示されます。
指定したポイントでヒットがある場合は true 、それ以外の場合は false を返します。
<void>thePainterInterface.getCustomHitPointData <&point3>localHit <&point3>localNormal <&point3>worldHit <&point3>worldNormal <&float>str localHit is In and Out parameter localNormal is In and Out parameter worldHit is In and Out parameter worldNormal is In and Out parameter str is In and Out parameter
このメソッドによって、次のカスタム ヒット ポイント データを取得できます。
localNormal : ローカル スペース内でヒットした面の法線
<void>thePainterInterface.getCustomHitFaceData <&point3>bary <&integer>faceIndex <node>node bary is In and Out parameter faceIndex is In and Out parameter
この関数によって、カスタム ヒット面のデータを取得できます。
指定された testPoint が pointList 座標に定義されているポリゴンの内部にある場合は、 true を返します。
<void>thePainterInterface.ScriptFunctions <value>startStroke <value>paintStroke <value>endStroke <value>cancelStroke <value>systemEnd
指定されたイベントでペインタのコールバック システムによって呼び出される MAXScript 関数を登録します。詳細は、「Painter インタフェースによるカスタム ペイント ツールの定義」を参照してください。
システムを元に戻す機能の記録を開始します。 undoAccept または undoCancel と組み合わせて使用する必要があります。通常は、ストローク機能が開始したときに呼び出されます。