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