PainterInterface : ReferenceTarget

ペインタ インタフェースは、メッシュ上にペイントするためのツールを提供するための、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

ストロークにポイントを追加します。updatePointGathertrue の場合、ポイントはリストに追加されます。updateViewPorttrue の場合、ポイントはビューポートに表示されます。

<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

指定された testPointpointList 座標に定義されているポリゴンの内部にある場合は、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()