チュートリアル - Dalmatian TextureMap プラグインの作成

チュートリアル > Dalmatian TextureMap プラグインの作成

以下の例で、既存のテクスチャ マップ プラグインの拡張方法を示します。 表示される UI 要素の数を減らし、新しい外見を作るために論理的な方法でそれらの UI 要素のいくつかを一緒にリンクさせることができます。

適切な設定で通常の Cellular 手順マップを使用することによって同じ効果を簡単に得ることができますが、新しいインタフェースによってエンド ユーザの作業が飛躍的に単純になります。

関連トピック:

スクリプト化されたプラグイン

スクリプト TextureMap プラグイン

イベント ハンドラ

全体の流れ:

既存の Cellular マップを使用します。

既存の UI を単純化された UI に置き換えます。

パラメータ ブロックを作成して、新しい UI 値を保持します。

ハンドラを作成して、論理的に値をリンクさせます。

2 つのカラーと 3 つのスピナーを持つ、パラメータ ブロックにリンクされた新しいロールアウトを作成します。

MAXScript

plugin textureMap Dalmatian
name:"Dalmatian"
classID:#(0x7f14579d, 0x5caf6eb8)
extends:Cellular
replaceUI:true
(
parameters main rollout:params
(
 DColor1 type:#color default:(color 255 255 255) ui:color1
 DColor2 type:#color default:(color 0 0 0) ui:color2
 Dsize type:#float default:30.0 ui:dot_size
 Dspread type:#float default:10.0 ui:dot_spread
 Dsmooth type:#float default:20.0 ui:dot_smooth
 on DColor1 set val do delegate.divColor1 = delegate.divColor2 = val
 on DColor2 set val do delegate.cellColor = val
 on DSize set val do delegate.size = val
 on DSpread set val do delegate.spread = val/100.0
 on DSmooth set val do
 (
  delegate.lowthresh = 1.0-(val/50.0)
  delegate.midthresh = 1.0-(val/100.0)
  delegate.highthresh = 1.0
 )
)--end params
rollout params "Dalmatian Map Parameters"
(
 colorpicker color1 "Base Color" align:#right fieldwidth:48
 colorpicker color2 "Dots Color" align:#right fieldwidth:48
 spinner dot_smooth "Smoothing" range:[0,100,20] \
  align:#left fieldwidth:40 across:3
 spinner dot_spread "Spread" range:[0,100,10] align:#center fieldwidth:40
 spinner dot_size "Dot Size" range:[0,100,30] align:#right fieldwidth:40
)--end rollout
)--end plugin

ステップごとの解説

plugin textureMap Dalmatian
name:"Dalmatian"

スクリプト プラグインは、コンストラクタの plugin で始まり、その後にスクリプト プラグインのスーパークラス( textureMap )、プラグインの新しいクラス名( Dalmatian )が続きます。さらに、マップ ブラウザ内で表示される name を指定する必要があります。

スクリプト化されたプラグイン

スクリプト TextureMap プラグイン

classID:#(0x7f14579d, 0x5caf6eb8)

シーンをロードするときにプラグインを識別するために、 classID 3ds Max によって使用されます。新しい固有の ID を生成するには、リスナー内で GenclassID() メソッドを使用し、結果をスクリプト内にコピーすることができます。

このプラグインのすべてのバージョンが常に互換性を保つようにするには、この classID をコピーすることをお勧めします。

classID

extends:Cellular

既存のテクスチャ マップを拡張するので、元のプラグインのクラスを供給する必要があります。この例では Cellular です。

replaceUI:true
(

最後に、UI の置き換えを要求します。Cellular マップの元の UI は表示されません。代わりに、新しいテクスチャをコントロールするのに必要なコントロールのみを含んだ独自の UI ロールアウトを作成できます。

parameters main rollout:params
(

このスクリプト プラグインは、パラメータ ブロックにそのパラメータを格納します。ParamBlock2 形式は 3ds Max 3 で導入されており、プロパティとトラックの簡単な管理、UI での自動アニメーション ブラケットなどができるようになっています。この例では、いくつかのユーザ パラメータ(ドットとバックグラウンドのカラー、ドット サイズなど)を格納できます。

ブロック内のすべてのパラメータには、UI のプラグイン ロールアウトに対応するものがあります。ロールアウト名を提供することで、ParamBlock が内部的な値と UI 要素との間に自動接続を確立できるようにします。

Parameter Block 2

DColor1 type:#color default:(color 255 255 255) ui:color1

このパラメータで、基本(バックグラウンド)カラーをコントロールします。これは #color タイプであり、既定値は白です。このパラメータは、UI スピナーの color1 にリンクされます。後で、ホストの Cellular マップの 2 つの境界線カラーをこの値でコントロールします。

DColor2 type:#color default:(color 0 0 0) ui:color2

このパラメータでドット カラーをコントロールします。これは #color タイプであり、既定値は黒です。このパラメータは、UI スピナーの color2 にリンクされます。後で、ホストの Cellular マップのセル カラーをこの値でコントロールできます。

Dsize type:#float default:30.0 ui:dot_size

このパラメータで、ドットのサイズをコントロールします。タイプは #float (浮動小数点値) であり、既定値は 30.0 です。このパラメータは、UI スピナーの dot_size にリンクされ、ホストの Cellular マップの Size プロパティをコントロールします。

Dspread type:#float default:10.0 ui:dot_spread

このパラメータで、ドットの広がりをコントロールします。タイプは #float (浮動小数点値) であり、既定値は 10.0 です。このパラメータは、UI スピナーの dot_spread にリンクされます。後で、このパラメータを使用してホストの Cellular マップ独自の Spread プロパティをコントロールできます。

Dsmooth type:#float default:20.0 ui:dot_smooth

このパラメータで、ドットの滑らかさをコントロールします。タイプは #float (浮動小数点値) であり、既定値は 20.0 です。このパラメータは、UI スピナーの dot_smooth にリンクされます。後で、ホストの Cellular マップの低、中、高のしきい値をこの値でコントロールできます。

on DColor1 set val do delegate.divColor1 = delegate.divColor2 = val

これは、パラメータ DColor1 の値が変更されるたびに実行される変更ハンドラです(通常は、これにリンクされている UI 要素の値をユーザが変更するためです)。変数の val には、新しい値が含まれます。その値が変更されたら、その値を Cellular マップの divcolor1 および divcolor2 パラメータに代入できます。デレゲートがホスト マップの代わりをします。Cellular マップの利用可能なすべてのパラメータは、次のようにして表示することができます。

showProperties (cellular())
.cellColor (Cell_Color) : RGB color
.divColor1 (Division_Color1) : RGB color
.divColor2 (Division_Color2) : RGB color
.cellMap : texmap
.divMap1 (DivisionMap1) : texmap
.divMap2 (DivisionMap2) : texmap
.map1Enabled (Map1_On) : boolean
.map2Enabled (Map2_On) : boolean
.map3Enabled (Map3_On) : boolean
.variation : float
.size : float
.spread : float
.lowThresh (Low) : float
.midThresh (Mid) : float
.highThresh (High) : float
.type : integer
.fractal : boolean
.iteration (Iterations) : float
.roughness : float
.smooth (Bump_smoothing) : float
.adaptive : boolean
.coords : max object
.output : max object
on DColor2 set val do delegate.cellColor = val

これは、パラメータ Dcolor2 の値が変更されるたびに実行される変更ハンドラです。変数 val には、新しい値が含まれます。その値が変更されたら、その値を Cellular マップの . cellColor パラメータに代入できます。

on DSize set val do delegate.size = val

これは、パラメータ Dsize の値が変更されるたびに実行される変更ハンドラです。変数 val には、新しい値が含まれます。その値が変更されたら、その値を Cellular マップの . Size パラメータに代入できます。

on DSpread set val do delegate.spread = val/100.0

これは、パラメータ DSpread の値が変更されるたびに実行される変更ハンドラです。変数 val には、新しい値が含まれます。その値が変更されたら、100.0 で除算した値を Cellular マップの . Spread パラメータに代入できます。このようにすると、UI 内では 100.0 パーセントの Spread 値を持つことができ、一方で、ホストの Cellular マップ内では 0.0 から 1.0 の範囲で値を使用することができます。したがって、エンド ユーザにとっては値の扱いが簡単になります。

on DSmooth set val do
(
delegate.lowthresh = 1.0-(val/50.0)
delegate.midthresh = 1.0-(val/100.0)
delegate.highthresh = 1.0
)

最後に、パラメータ Dsmooth の変更ハンドラを定義できます。変数 val には、新しい値が含まれます。その値が変化したら、その値を異なる比率で低および中しきい値に、1.0 を高しきい値に代入できます。

)--end params
rollout params "Dalmatian Map Parameters"
(

これは、元の Cellular マップの UI に置き換わる新しい UI ロールアウトです。

ロールアウト句

colorpicker color1 "Base Color" align:#right fieldwidth:48
colorpicker color2 "Dots Color" align:#right fieldwidth:48

これらの 2 つのカラー ピッカーは、ParameterBlock2 内の対応するカラー パラメータにリンクされます。ここで既定のカラーを代入する必要はありません。ParameterBlock2 内に格納されている既定値は、パラメータと UI 要素間の内部的な双方向の接続によって自動的に表示されます。

カラー ピッカー

spinner dot_smooth "Smoothing" range:[0,100,20] \
align:#left fieldwidth:40 across:3
spinner dot_spread "Spread" range:[0,100,10] align:#center fieldwidth:40
spinner dot_size "Dot Size" range:[0,100,30] align:#right fieldwidth:40

これらの 3 つのスピナーも、ParameterBlock2 内の対応する浮動小数点パラメータにリンクされます。ここで既定値を代入する必要はありませんが、この UI に許容される値の範囲を指定する必要があります。ただし、3ds Max 内のほとんどの内部的な値と同様に、ParameterBlock2 パラメータの値の範囲には制限がありません。

across:3 キーワードを使用して、3 つのスピナーが単一の水平な行に置かれるように UI に指示できます。

編集ボックス

)--end rollout
)--end plugin

スクリプトの使い方

スクリプトを評価します。新しい Dalmatian マップがマテリアル/マップ ブラウザ内に表示されます。このマップは、通常のテクスチャ マップが使用される場所ならどこででも使用できます。既定の外見は、典型的なダルメシアン犬の皮膚に似ています。

戻る

「チュートリアル」のインデックス ページ