コンテンツにスキップ

MAXScript

Pencil+ 4 の いくつかの MAXScript インターフェイスは更新されており、Pencil+ 3 よりも利便性が大きく向上しました。 MAXScript の仕様については 3dsMax の [MAXScript ヘルプ] をご覧ください。

Pencil+ 4 ライン / プロパティ・メソッド

linesets

ラインセットの取得や設定を行うための Array です。
Pencil+ 3 ではメソッドでしたが、プロパティに変更されました。

solveDuplicatedMtlsByName(メソッド)

[マテリアル リスト更新 ボタン] と同様の処理を実行します。ラインセット中のマテリアルがシーンのオブジェクトに割り当てられていない場合、 そのマテリアルと同名のマテリアルがシーンに存在するならば置換を行います。

戻り値:置換されたマテリアルの個数
引数:なし

removeUnusedMtls(メソッド)

ラインセット中のマテリアルがシーンのオブジェクトに割り当てられていない場合、 マテリアルリストから除外します。

戻り値:除外されたマテリアルの個数
引数:なし

Pencil+ 4 ラインセット / プロパティ

objects

オブジェクトの取得や設定を行うための Array です。

mtls

マテリアルの取得や設定を行うための Array です。

[Pencil+ 4 ラインセット / 各ブラシ設定へのアクセス]

- brush
- brushOutline
- brushObject
- brushIntersection
- brushSmoothingGroup
- brushMaterialID
- brushNormalAngle
- brushWire
- brushSelectedEdge
- brush_Hidden
- brushOutline_Hidden
- brushObject_Hidden
- brushIntersection_Hidden
- brushSmoothingGroup_Hidden
- brushMaterialID_Hidden
- brushNormalAngle_Hidden
- brushWire_Hidden
- brushSelectedEdge_Hidden

Pencil+ 4 マテリアル / プロパティ

zones

ゾーンの取得や設定を行うための Array です。
Pencil+ 3 ではメソッドでしたが、プロパティに変更されました。

Pencil+ 4 マテリアル / ライン関連機能 / プロパティ

maskingOffObjects

「対象の隠線を可視線として描画」のオブジェクトの取得や設定を行うための Array です。
Pencil+ 3 ではメソッドでしたが、プロパティに変更されました。

maskingOffMtls

「対象の隠線を可視線として描画」のマテリアルの取得や設定を行うための Array です。
Pencil+ 3 ではメソッドでしたが、プロパティに変更されました。

maskHiddenLinesObjects

「対象の隠線を遮へいする」のオブジェクトの取得や設定を行うための Array です。
Pencil+ 3 ではメソッドでしたが、プロパティに変更されました。

maskHiddenLinesMtls

「対象の隠線を遮へいする」のマテリアルの取得や設定を行うための Array です。
Pencil+ 3 ではメソッドでしたが、プロパティに変更されました。

カーブ値を設定・取得

カーブコントロールを操作するための Pencil_4_Curve_Control_Interface クラスを新たに定義しました。 また上記クラスを取得するためのプロパティを以下の箇所に追加しました。

  • Pencil_4_LineReduction : curveIF
  • Pencil_4_BrushDetail : sizeCurveIF
  • Pencil_4_BrushDetail : alphaCurveIF
  • Pencil_4_Stroke : sizeCurveIF
  • Pencil_4_Stroke : alphaCurveIF

例えば、効果の最初に設定されている Pencil+ 4 ラインのカーブへのアクセスは次とおりです。

ccif1 = (getEffect 1).linesets[1].sizeReduction.curveIF
ccif2 = (getEffect 1).linesets[1].brush.detail.alphaCurveIF

Pencil_4_Curve_Control_Interface のプロパティ / メソッド

curveControl New!

操作対象のカーブコントロールを設定/取得します。
Pencil_4_LineReduction.curveIF などのプロパティからインスタンスを取得した場合、カーブコントロールはあらかじめ設定されています。

controlCurveIndex New!

このインターフェイスクラスで操作するカーブのインデックスを設定/取得します。初期値は 0 です。

numPoints New!

カーブのポイント数を設定/取得します。

pointsX New!

カーブのポイントのX座標を float の Array で設定/取得します。

pointsY New!

カーブのポイントのY座標を float の Array で設定/取得します。

inTangentsX New!

カーブのポイントのイン タンジェント X 座標を float の Array で設定/取得します。

inTangentsY New!

カーブのポイントのイン タンジェント Y 座標を float の Array で設定/取得します。

outTangentsX New!

カーブのポイントのアウト タンジェント X 座標を float の Array で設定/取得します。

outTangentsY New!

カーブのポイントのアウト タンジェントY座標を float の Array で設定/取得します。

flags New!

カーブのポイントのフラグを integer の Array で設定/取得します。
フラグの詳細は 3ds Max SDK を参照してください。
https://help.autodesk.com/view/3DSMAX/2015/ENU/?guid=__cpp_ref_class_curve_point_html

getValues(メソッド)New!

カーブの値を取得します。
戻り値:引数の X 座標に対応するカーブ値の float の Array
引数:値を求める X 座標の float の Array

カーブを右肩下がりの直線に変更するサンプルスクリプト

ccif1.numPoints = 2

ccif1.pointsY = #(1.0, 0.0)

ccif1.flags[1] = ccif1.flags[1] - (bit.and ccif1.flags[1] 3) + 2  -- +1 Bezier / +2 Corner / +3 BezierCorner 

ccif1.flags[2] = ccif1.flags[2] - (bit.and ccif1.flags[2] 3) + 2



-- タンジェントを空にする

ccif1.inTangentsX= #(0.0, 0.0)

ccif1.inTangentsY= #(0.0, 0.0)

ccif1.outTangentsX= #(0.0, 0.0)

ccif1.outTangentsY= #(0.0, 0.0)



-- 値を取得

values = ccif1.getValues #(0.0, 0.25, 0.5, 0.75, 1.0)