このページでは、3ds Max 2008 の MAXScript 言語の変更と改良点について簡単にその概要を説明します。各機能の詳細については、ドキュメントの各ページのリンクをお読みください。
[MAXScript エディタ](MAXScript Editor)ウィンドウ
従来の RichEdit をベースにした MAXScript エディタの大部分は、オープン ソースの Scintilla コントロールおよび SciTE エディタをベースにした新しいタブ付きのエディタに置き換えられました。
MAXScript エディタのほか、MAXScript リスナーと、その GUI の左下隅にある MacroRecorder 領域および ミニリスナーでも Scintilla コントロールが使用されるようになり、最大 500 回の操作を元に戻すことができるようになりました。
このトピックでは、新しいエディタと主な機能および利点について紹介しています。
このトピックは、新しいエディタ、メニュー、コマンド、キーボード ショートカットの使用法とさまざまなカスタマイズ方法について説明した個別のトピックのインデックスになっています。同じリンクを以下に用意しておきます。
3ds Max 2008 には以下の新機能が追加され、MAXScript に公開されています。
このインタフェースは、シャドウおよびピクセル単位のシェーディングを含めてビューポート シェーディング システム を MAXScript に公開します。
viewport 構造体におけるこれらの新しいメソッドを使用すると、完全に書き替えられた最適表示システムのすべてのコントロールを取得および設定することができます。
インタフェース: INodeDisplayProperties
最適表示からノードを除外するときに使用する .neverDegrade プロパティにアクセスするための新しいノード インタフェースです。
新しい enableHardwareMaterial() メソッドおよび showHWTextureMap() メソッドは、[ビューポート内でマップを表示](Show Map In Viewport)アイコンの新しいフライアウト オプションを切り替える場合に使用します。
新しい viewport.setFOV() メソッドは、アクティブ ビューポートの視野を度数で設定します。
新しいメソッド viewport.getFocalDistance() および viewport.setFocalDistance() は、アクティブ ビューポートの焦点距離を取得および設定します。
新しいメソッド viewport.pan()、viewport.zoom()、 viewport.zoomPerspective() 、 viewport.rotate() を使用すると、3ds Max UI のインタラクティブ パン、ズーム、画面回転コマンドと同じスクリプト ビューポート ナビゲーション操作を実装できます。
この新しいコア インタフェースは、名前で指定されたシーン エクスプローラをオープン、クローズ、ロード、保存、配置、およびサイズ変更するためのメソッドや、スクリプト関数を使用してシーン エクスプローラに新しいプロパティ フィルタを追加するためのメソッドを含むシーン エクスプローラ 管理関数を提供します。
この新しいコア インタフェースは、作業基点機能を MAXScript に公開します。
この内部ヘルパー クラスのインスタンスは、シーン内に座標軸を表示したり、この座標軸を現在の変換システムの参照ノードとして設定したりする目的で作業基点機能によって使用されます。
新しいプロパティ .selectMode が Edit_Poly モディファイヤに追加されました。このプロパティは、新しいサブオブジェクト選択モード (Off、SubObj、Multi) を公開します。
新しいプロパティ .edgeChamferSegments が Edit_Poly モディファイヤに追加されました。このプロパティは、新しいセグメントによるエッジの面取り機能を公開します。
新しいプロパティ .selectMode が Editable_Poly 基本オブジェクトに追加されました。このプロパティは、新しいサブオブジェクト選択モード (Off、SubObj、Multi) を公開します。
新しいプロパティ .edgeChamferSegments が Editable_Poly 基本オブジェクトに追加されました。このプロパティは、新しいセグメントによるエッジの面取り機能を公開します。
Project_Mapping : ReferenceTarget
Project_Mapping モディファイヤに、投影品質に関連するいくつかの新しいプロパティが追加されました。
新しいメソッド exportCage() と importCage() が、Projection モディファイヤによって公開されている projectionModOps インタフェースに追加されました。
Point_CacheSpacewarpModifier: SpacewarpModifier
新しい .fileCount プロパティが、ポイント キャッシュ モディファイヤとスペースワープに 1 つのファイルまたは 1 フレーム当たりに 1 ファイルを保存するかどうかをコントロールするために追加されました。
LoadSaveAnimation Interface に、いくつかの新しいメソッドが追加されたほか、いくつかの既存のメソッドに stripLayers: オプションが追加されました。
オブジェクト空間オブジェクトとヘッドの LookAt Target プロパティ
Biped Vertical_Horizontal_Turn(Body):Matrix3 コントローラの .osObject プロパティおよび .headObject プロパティが変更され、undefined を有効な値として受け入れるようになりました。
mr Sky ポータル ライトは、窓やドアのような開口部へのポータルの定義とスカイライトや HDRI 環境マップからのライトの収集によって、野外のライティングを屋内のライティングに変換するのに使用することができます。
インタフェース: BakeElementProperties
すべての BakeElements によって公開されるこの新しいインタフェースを使用すると、従来はノードのインタフェースを使用しなければアクセスできなかったベイク処理要素のプロパティのいくつかに直接アクセスできます。
AutoKey の既定のキーの作成および時間をコントロールするための新しいプロパティおよびメソッドが maxOps インタフェースに追加されました。 [モーション](Motion)タブ > [軌道](Trajectory)サブオブジェクト モードをコントロールするための新しいプロパティも追加されています。
新しい maxOps.findNodes() メソッドが追加されました。このメソッドは、マテリアルおよびレイヤによるフィルタリングを含む類似したノードの検索に使用できます。
3ds Max 2008 では、MAXScript に以下の新機能が追加されました。
「 @ 」文字でプレフィックスされた逐語的文字列リテラルがサポートされるようになり、「¥t」、「¥n」、「¥r」などのエスケープ文字シーケンスを含んでいる場合でも評価時に拡張されないようになりました。
新しいオプション キーワード historyCategory: がメソッド getOpenFilename() および getSaveFilename() に追加されました。このオプション キーワードを使用すると、ファイル ダイアログ ボックスで履歴カテゴリを指定できるようになります。
既存の openBitMap() メソッドは、ビットマップをロードできなかった場合に、ランタイム エラーを生成するのではなく undefined を返すようになりました。
新しい isSpaceWarpValid() メソッドは、指定されたオブジェクトにスペース ワープを適用できる場合に true を返します。
従来の暗号化方式に加え、新しい暗号化方式が提供されるようになりました。新しい暗号化方式を使用した暗号化されたスクリプトは、旧バージョンの 3ds Max では実行できません。
Avguard DLX 拡張機能は、3ds Max 2008 に完全に組み込まれました。
シーン内のすべてのノードを使用してレイを交差させるための新しいメソッドが追加されました。
新しいメソッド setModContextTM() および setModContextBBox() が追加されました。
新しいメソッド isDeformable()、numPoints() 、 getPointPos() が追加されました。
新しいメソッド nodeGetBoundingBox() および nodeLocalBoundingBox() が追加されました。
ノードが外部参照シーン オブジェクトである場合にもノードの変換行列を返す新しいメソッド getNodeTM() が追加されました。
指定された MAXObject に従属するノードを取得する新しいメソッドが追加されました。
MAXObject のすべての従属を通知する新しいメソッドが追加されました。
disableRefMsgs() および enableRefMsgs()
参照システムを無効または有効にする新しいメソッドが追加されました。
既存の replaceInstances() メソッドが更新されました。
引数として渡された 2 つのノードがインスタンスである場合に true を返す新しいメソッド areNodesInstances() が追加されました。
レイヤのリファレンスターゲットを返すメソッド getLayerObject() が追加されました。非推奨: Avguard 拡張機能を使用しているスクリプトとの互換性を保つためには、このメソッドを使用しないでください。
2 つの新しいメソッド custAttributes.getDefClass() および custAttributes.getDefInstances() が追加されました。
コントローラがまだプロパティを割り当てられていない新しいインスタンスであることを示すフラグをクリアするための新しいメソッド clearControllerNewFlag() が追加されました。
新規に作成されたキーに対して既定のベジェおよび TCB キーの設定を公開する 2 つの新しい構造体が追加されました。
IK_ControllerMatrix3Controller : Matrix3Controller
IK コントローラの軸の設定 (イーズ、最小、最大、ダンピング、角度、スプリングなど) にアクセスするための新しい 20 個のメソッドが ik 構造体に追加されました。
既存のメソッド meshop.setVert() および meshop.moveVert() を変更して位置を配列として指定できるようになったので、同時に複数の頂点に影響を与えることが可能になりました。また、polyop.moveVert() メソッドにはソフト選択のサポートも追加されています。
既存のメソッド polyop.setVert () および polyop.moveVert() を変更して位置を配列として指定できるようになったので、同時に複数の頂点に影響を与えることが可能になりました。また、polyop.moveVert() メソッドにはソフト選択のサポートも追加されています。
新しいメソッド weldSpline()、findPathSegAndParam()、findLengthSegAndParam()、interpBezier3D()、tangetBezier3D() が追加されました。
新しいメソッド pasteBitmap() および getBitmapInfo() が追加されました。このメソッドを使用すると、ビットマップを別のビットマップに貼り付けたり、ビットマップの情報を取得できます。
文字列を大文字および小文字に変換するための toUpper() メソッドおよび toLower メソッド、ある文字列のすべてのオカレンスを別の文字列に置き換える replaceString() メソッド、ライン フィードをキャリッジ リターン/ライン フィードのテキストファイルに変換する replace_LF_with_CRLF() メソッドが新しく追加されました。
[キー入力変換](Transform Type-In)ダイアログ ボックスに表示されるものと同じオイラー値を返す新しいメソッド quatToEuler2() と、Quat の配列をオイラー角度の配列に変換する新しいメソッド quatArrayToEulerArray() が追加されました。
新しい BinStream I/O メソッド writeLongLong()、writeDouble()、writeFloatAsDouble()、readLongLong()、readDouble() 、 readDoubleAsFloat() が追加されました。
指定されたキーおよび(または)セクションが指定された INI ファイル内に存在する場合に true を返す新しいメソッド hasINIsetting() が追加されました。
ビューポート グリッドの間隔と主線を設定するための新しいメソッド setGridSpacing() および setGridMajorLines() が追加されました。
マルチパス カメラ効果プレビューなどのビューポートのデバイスに依存しないビットマップを取得するために使用する新しいメソッド viewport.getViewportDIB() が追加されました。
ビューポートにカラー付きの長方形を描画するための新しいメソッド gw.hRect() および gw.wRect() が追加されました。
ビューポートに一連の三角形を描画するために、 gw.startTriangles().gw.endTriangles() 、 gw.triangles() という新しい方法が追加されました。
ビューポートに一連の三角形を三角ストリップとして描画するための gw.triStrip() が追加されました。
MAXScript が値を返す前にビューポートを再描画する必要があることを示す内部的な MAXScript フラグを設定するための新しいメソッド setNeedsRedraw() が追加されました。
3ds Max 6 で廃止された従来のドラフト レンダラー(古いファイルにまだ存在する可能性があります)を取得、リセットするための新しいメソッド renderers.GetDraftRenderer() および renderers.ClearDraftRenderer() が追加されました。
新しいメソッド getThisScriptFilename() が追加されました。これは getSourceFileName() と同じですが、Avguard 拡張機能で長い間使用可能であり、拡張機能を使用するように作成されたスクリプトとの下位互換性のために提供されています。
Windows クリップボードとの間でテキストおよびビットマップ値を取得および設定するための新しいメソッド getClipBoardText()、setClipboardText()、getClipboardBitmap() 、 setClipboardBitmap() が追加されました。
CPU ごとの処理とシステムの親和性を取得および設定するための新しいプロパティ sysinfo.processAffinity および sysinfo.systemAffinity が追加されました。
Windows の環境変数の値を取得および設定するための新しいメソッド systemTools.getEnvVariable() および systools.setEnvVariable() が追加されました。
子ウィンドウ、3ds Max、および Windows デスクトップのウィンドウ HWND 値にアクセスするための新しい Windows 構造体が追加されました。