MAXScript 対応 (Pencil+ 4)

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


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


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


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


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


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


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


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


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


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


getValues(メソッド)
カーブの値を取得します。
戻り値 : 引数の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)

Tips!

サンプルスクリプト

  • シーンのオブジェクトに単一のゾーンを持つPencil+ 4 マテリアルを割り当てます。
    pcl4mtl_0.ms
  • シーン上のPencil+ 4 マテリアルのゾーンをデフォルト設定に戻します。
    pcl4mtl_1.ms
  • Pencil+ 4 ラインを効果に割り当てラインセットを追加します。
    pcl4line.ms
  • Pencil+ 4 ラインのラインセットを複製します。
    pcl4lineset_copy.ms
  • レンダーエレメントにPencil+ 4 マテリアル要素を追加します。
    pcl4mtl_elem.ms
  • レンダーエレメントにPencil+ 4 ライン要素を追加します。
    pcl4line_elem.ms

Pencil+ for 3ds Max チュートリアル