ペインタ インタフェースは、メッシュ上にペイントするためのツールを提供するための、3ds Max 5で導入された汎用 API です。 この API の関数とプロパティにアクセスするときは、PainterInterface と呼ばれるインタフェースを使用します。
Painter インタフェースによるカスタム ペイント ツールの定義
PainterInterface インタフェース
Interface: thePainterInterfaceプロパティ:
thePainterInterface.updateOnMouseUp : boolean : Read|Write [ペインタ オプション](Painter Options)ダイアログ ボックスの[マウス リリース時に更新](Update on mouse up)チェックボックスの状態を取得/設定します。true に設定すると、ペインタはマウス ボタンが離れているときにだけストロークを更新します。
thePainterInterface.treeDepth : integer : Read|Write|Validated by Range: 2 to 10ヒット テストに使用するクアッド ツリーの深度を取得/設定します。値が大きくなるほど操作は速くなりますが、メモリの消費量は増え、ツリーの構築により多くの時間がかかります。
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[最小インク幅] (Min)の値をおよび[最大] (Max)強度の値を取得/設定します。使用できる圧力デバイスがない場合は、最大強度だけが使用されます。
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ブラシの最小および[最大] (Max)サイズの値を取得/設定します。使用できる圧力デバイスがない場合は、最大サイズだけが使用されます。
thePainterInterface.additiveMode : boolean : Read|Write[加算] (Additive)チェックボックスの状態を取得/設定します。true に設定すると、ペイント値は既存の値を上書きせずに既存の値に加算されます。
thePainterInterface.drawRing : boolean : Read|Writeブラシ リングの表示を取得/設定します。
thePainterInterface.drawNormal : boolean : Read|Writeブラシの法線ベクトルの表示を取得/設定します。
thePainterInterface.drawTrace : boolean : Read|Writeブラシのトレース ラインの表示を取得/設定します。
thePainterInterface.normalScale : float : Read|Write法線スケールの値を取得/設定します。
thePainterInterface.marker : float : Read|Writeマーカー値を取得/設定します。
thePainterInterface.markerEnable : boolean : Read|Writeマーカーを有効/無効にします。
thePainterInterface.pressureEnable : boolean : Read|Write圧力タブレットを使用するための圧力感度を有効/無効にします。
thePainterInterface.pressureAffects : integer : Read|Write|Validated by Range: 1 to 4[圧力効果](Pressure Affects)オプションを取得/設定します。
1 - なし
2 - 強度
3 - サイズ
4 - サイズと強度
thePainterInterface.predefinedStrEnable : boolean : Read|Write定義済みの強度圧力を有効/無効にします。true に設定すると、タブレットの圧力または最大強度の値ではなく、ストローク内のグラフの位置に基づいて強度を決定します。グラフを設定するときは、オプションのダイアログ ボックスの「定義済みの圧力」プロパティを使用します。オプションのダイアログ ボックスは、thePainterInterface.paintOptions() によって使用できます。
thePainterInterface.predefinedSizeEnable : boolean : Read|Write定義済みのサイズ圧力を有効/無効にします。true に設定すると、タブレットの圧力または最大サイズの値ではなく、ストローク内のグラフの位置に基づいて強度を決定します。グラフを設定するときは、オプションのダイアログ ボックスの「定義済みの圧力」プロパティを使用します。オプションのダイアログ ボックスは、thePainterInterface.paintOptions() によって使用できます。
thePainterInterface.mirrorEnable : boolean : Read|Write[ミラー] (Mirror)オプションを有効/無効にします。
thePainterInterface.mirrorAxis : integer : Read|Write|Validated by Range: 1 to 3ミラー軸を取得/設定します。
1 - X
2 - Y
3 - Z
thePainterInterface.mirrorOffset : float : Read|Write|Validated by Range: -1e+006 to 1e+006ミラーのオフセット値を取得/設定します。
thePainterInterface.mirrorGizmoSize : float : Read|Write|Validated by Range: 0.0 to 1e+006ミラー ギズモのサイズを取得/設定します。
thePainterInterface.pointGatherEnable : boolean : Read|Writeポイント収集モードを有効/無効にします。
thePainterInterface.buildNormals : boolean : Read|Write法線の構築を有効/無効にします。
thePainterInterface.offMeshHitType : integer : Read|Writeメッシュの外側をペイントする場合またはメッシュを使用しないでペイントする場合のヒット タイプを定義します。
0 - 最後のヒット ポイントまたは法線に基づいて平面を作成します。このタイプを使用するときは、ペイントするためのメッシュが必要です。
1 - 画面内への Z 深度。ペイント可能なビュー内に平面の X 単位が作成されます。この場合、メッシュは必要ありません。
2 - 現在のビューに位置合わせされたワールド スペース内のポイント上に平面を作成します。この場合、メッシュは必要ありません。
thePainterInterface.offMeshHitZDepth : float : Read|Write.offMeshHitType 1 を使用する Z 深度を定義します\。(前記を参照)
thePainterInterface.offMeshHitPos : point3 : Read|Write.offMeshHitType 2 を使用するワールド位置を定義します\。(前記を参照)
メソッド:
<void>thePainterInterface.initializeNodes <integer>flags <node array>nodeListペイント用のノードを初期化します。NodeList は、ペイントするノードの配列です。Flags は現在は使用されていませんが、代わりに 0 を使用できます。
<integer>thePainterInterface.numberNodes()登録済みのノードの数を返します。
<node>thePainterInterface.getNode <integer>indexインデックスで指定されたノードを返します。
<void>thePainterInterface.updateMeshes <boolean>updatePointGatherメッシュを更新します。
updatePointGather 引数が true の場合は、ポイント収集リストも更新されます。
<void>thePainterInterface.startPaintSession()ペイント セッションを開始します。
<void>thePainterInterface.endPaintSession()ペイント セッションを終了します。
<void>thePainterInterface.paintOptions()[ペイント オプション](Paint Options)ダイアログ ボックスを開きます。
<void>thePainterInterface.macroCallback <string>macroName <string>categoryペイントを制御するマクロ コールバック スクリプトの登録に使われます。
macroName は macroScript ソースへのパスであり、category は macroScript のカテゴリです。
<boolean>thePainterInterface.inPaintMode()ペイント モードのときは true、ペイントがアクティブでない場合は false を返します。
<boolean>thePainterInterface.getIsHit <integer>tabIndexインデックスで指定されたポイントがヒットしたとき、true を返します。
thePainterInterface.getHitPointData <void> <&point3>localHit <&point3>localNormal <&point3>worldHit <&point3>worldNormal <&float>radius <&float>str <integer>tabIndex すべてのパラメータは In および Out パラメータです。
このメソッドによって、次のストロークのヒット ポイント データを取得できます。
localHit ヒットしたノードのローカル スペース内のヒット位置
localNormal ヒットしたノードのローカル スペース内の、ヒットした面の法線
worldHit ワールド空間のヒット ポイント
worldNormal ヒット面のワールド空間の法線
radius ヒット時のブラシの半径
str ヒット時のブラシの強度
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この関数によって、ストロークのヒット面のデータを取得できます。これは、スタックの最上位に存在する面データです。
bary: ヒットした面の重心座標
faceIndex: ヒットした面のインデックス
node: ヒットしたノード
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これは、ストローク ポイントのキーの状態と圧力の状態を返します。
shift: [Shift]キーの状態
ctrl: [Ctrl]キーの状態
alt: [Alt]キーの状態
pressure: 圧力感知タブレットからの圧力
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 の場合は、最後のヒット ポイントが返されます。
<point2>thePainterInterface.getHitMousePos <integer>tabIndexストローク内の、インデックスで指定されたヒット ポイントのマウス位置を返します。
<integer>thePainterInterface.getHitTime <integer>tabIndexストローク内の、インデックスで指定されたヒット ポイントの時間を返します。
<float>thePainterInterface.getHitDist <integer>tabIndexストローク内の、インデックスで指定されたヒット ポイントの距離を返します。
<point3>thePainterInterface.getHitVec <integer>tabIndexストローク内の、インデックスで指定されたヒット ポイントのベクトルを返します。
<integer>thePainterInterface.getHitCount()ストローク内のヒットの数を返します。
<node>thePainterInterface.getHitNode <index>sampleIndex指定されたサンプル インデックスのヒット ノードを返します。
<void>thePainterInterface.loadCustomPointGather <node>node <point3 array>pointList指定したノードのカスタム ポイント リストをロードします。
<bitArray>thePainterInterface.getPointGatherHits <node>nodeヒット リストを bitArray として返します。
<point3>thePainterInterface.getPointGatherPoint <node>node <integer>index指定したノードの、インデックスで指定されたポイントの位置を返します。
<float>thePainterInterface.getPointGatherStr <node>node <integer>index指定したノードの、インデックスで指定されたポイントの強度を返します。
<float>thePainterInterface.getPointGatherWeight <node>node <integer>index指定したノードの、インデックスで指定されたポイントの重みを返します。
<point3>thePainterInterface.getPointGatherNormal <node>node <integer>index指定したノードの、インデックスで指定されたポイントの法線ベクトルを返します。
<void>thePainterInterface.clearStroke()ストロークをクリアします。
<void>thePainterInterface.addToStroke <point2>pos <boolean>updatePointGather <boolean>updateViewPortストロークにポイントを追加します。updatePointGather が true の場合、ポイントはリストに追加されます。updateViewPort が true の場合、ポイントはビューポートに表示されます。
<boolean>thePainterInterface.getRandomHitOnPoint <integer>index指定したポイント上のランダム ヒットを返します。
<boolean>thePainterInterface.getRandomHitAlongStroke <integer>index指定したストロークに沿ったランダム ヒットを返します。
<boolean>thePainterInterface.getTestHit <point2>Point指定したポイントでヒットがある場合は 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このメソッドによって、次のカスタム ヒット ポイント データを取得できます。
localHit: ローカル スペース内のヒット位置
localNormal: ローカル スペース内でヒットした面の法線
worldHit ワールド空間のヒット ポイント
worldNormal ヒット面のワールド空間の法線
str ヒット時のブラシの強度
<void>thePainterInterface.getCustomHitFaceData <&point3>bary <&integer>faceIndex <node>node
bary is In and Out parameter
faceIndex is In and Out parameterこの関数によって、カスタム ヒット面のデータを取得できます。
bary: ヒットした面の重心座標
faceIndex: ヒットした面のインデックス
node: ヒットしたノード
<boolean>thePainterInterface.isPointInside <point2>testPoint <point2 array>pointList指定された testPoint が pointList 座標に定義されているポリゴンの内部にある場合は、true を返します。
<point3>thePainterInterface.getMirrorCenter()ミラー ギズモの中心を取得します。
<void>thePainterInterface.ScriptFunctions <value>startStroke <value>paintStroke <value>endStroke <value>cancelStroke <value>systemEnd指定されたイベントでペインタのコールバック システムによって呼び出される MAXScript 関数を登録します。詳細は、「ペインタ インタフェースを使ったカスタム ペイント ツールの定義」を参照してください。
<void>thePainterInterface.undoStart()システムを元に戻す機能の記録を開始します。undoAccept または undoCancel と組み合わせて使用する必要があります。通常は、ストローク機能が開始したときに呼び出されます。
<void>thePainterInterface.undoAccept()元に戻す機能の現在の記録を確定し、やり直しスタックに格納します。通常は、ストローク機能が終了したときに呼び出されます。
<void>thePainterInterface.undoCancel()