このページでは、3ds Max 2008 の MAXScript 言語の変更と改良点について簡単にその概要を説明します。各機能の詳細については、ドキュメントの各ページのリンクをお読みください。
従来の RichEdit をベースにした MAXScript エディタの大部分は、オープン ソースの Scintilla コントロールおよび SciTE エディタをベースにした新しいタブ付きのエディタに置き換えられました。
MAXScript エディタのほか、MAXScript リスナーと、その GUI の左下隅にある MacroRecorder 領域および ミニリスナーでも Scintilla コントロールが使用されるようになり、最大 500 回の操作を元に戻すことができるようになりました。
このトピックでは、新しいエディタと主な機能および利点について紹介しています。
このトピックは、新しいエディタ、メニュー、コマンド、キーボード ショートカットの使用法とさまざまなカスタマイズ方法について説明した個別のトピックのインデックスになっています。同じリンクを以下に用意しておきます。
MAXScript エディタにおける正規表現を使用した検索置換
MAXScript エディタ - キーボード ショートカット
MAXScript エディタ - プロパティ ファイルの設定
MAXScript エディタ - MAXScript 固有の言語設定
MAXScript エディタ - 構文のカラー スキームのカスタマイズ
MAXScript エディタ - カスタム キーボード ショートカットの定義
MAXScript エディタ - カスタム コンテキスト メニュー項目の定義
MAXScript エディタ - カスタム ステータス バーの定義
3ds Max 2008 には以下の新機能が追加され、MAXScript に公開されています。
このインタフェースは、シャドウおよびピクセル単位のシェーディングを含めてビューポート シェーディング システム を MAXScript に公開します。
インタフェース : INodeShadingProperties
このノード インタフェースは、ビューポート シェーディング ノード プロパティを MAXScript に公開します。
viewport
構造体におけるこれらの新しいメソッドを使用すると、完全に書き替えられた最適表示システムのすべてのコントロールを取得および設定することができます。
インタフェース : INodeDisplayProperties
最適表示からノードを除外するときに使用する .neverDegrade
プロパティにアクセスするための新しいノード インタフェースです。
新しい enableHardwareMaterial()
メソッドおよび showHWTextureMap()
メソッドは、[ビューポート内でマップを表示]アイコンの新しいフライアウト オプションを切り替える場合に使用します。
新しい viewport.setFOV()
メソッドは、アクティブ ビューポートの視野を度数で設定します。
新しいメソッド viewport.getFocalDistance()
および viewport.setFocalDistance()
は、アクティブ ビューポートの焦点距離を取得および設定します。
新しいメソッド viewport.pan(), viewport.zoom(),
、viewport.zoomPerspective()
、viewport.rotate()
を使用すると、3ds Max UI のインタラクティブ パン、ズーム、画面回転コマンドと同じスクリプト ビューポート ナビゲーション操作を実装できます。
既存のコア インタフェースが拡張され、カラー補正モード、LUT ファイル名、ガンマ値などのいくつかのガンマ設定および LUT 設定が公開されました。
この新しいコア インタフェースは、名前で指定されたシーン エクスプローラをオープン、クローズ、ロード、保存、配置、およびサイズ変更するためのメソッドや、スクリプト関数を使用してシーン エクスプローラに新しいプロパティ フィルタを追加するためのメソッドを含むシーン エクスプローラ 管理関数を提供します。
インタフェース : ActionItemOverrideManager
この新しいコア インタフェースは、優先機能を有効機能を MAXScript に公開します。
この新しいコア インタフェースは、作業基点機能を MAXScript に公開します。
この内部ヘルパー クラスのインスタンスは、シーン内に座標軸を表示したり、この座標軸を現在の変換システムの参照ノードとして設定したりする目的で作業基点機能によって使用されます。
新しいプロパティ .selectMode
が Edit_Poly モディファイヤに追加されました。このプロパティは、新しいサブオブジェクト選択モード (Off、SubObj、Multi) を公開します。
新しいプロパティ .edgeChamferSegments
が Edit_Poly モディファイヤに追加されました。このプロパティは、新しいセグメントによるエッジの面取り機能を公開します。
新しいプロパティ .selectMode
が Editable_Poly 基本オブジェクトに追加されました。このプロパティは、新しいサブオブジェクト選択モード (Off、SubObj、Multi) を公開します。
新しいプロパティ .edgeChamferSegments
が Editable_Poly 基本オブジェクトに追加されました。このプロパティは、新しいセグメントによるエッジの面取り機能を公開します。
Unwrap_UVW モディファイヤによって公開される新しい unwrap6 インタフェースを使用すると、新しいプロパティにアクセスできます。
新しいプロパティ .baseMaterial_list
が Unwrap_UVW モディファイヤに追加されました。
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 を有効な値として受け入れるようになりました。
DirectX シェーダ マテリアルによって公開される関数公開インタフェースに、シェーダの技術の取得に関連するいくつかの新しいメソッドが追加されました。
この新しいコア インタフェースを使用すると、Shockwave 3D Exporter ダイアログ内のいくつかのアクションにアクセスすることができます。
3ds Max 2008 におけるプリレンダリング スクリプト評価順序の変更
プリレンダリング スクリプトおよびポストレンダリング スクリプトの評価順序が変更されました。
mr_Sky_Portal : ライト
mr Sky ポータル ライトは、窓やドアのような開口部へのポータルの定義とスカイライトや HDRI 環境マップからのライトの収集によって、野外のライティングを屋内のライティングに変換するのに使用することができます。
mr_Photographic_Exposure_Control : ToneOperator
この新しい露出コントロールにより、従来の写真撮影で使用されていた実際のワークフローを使用できます。
インタフェース: BakeElementProperties
すべての BakeElements によって公開されるこの新しいインタフェースを使用すると、従来はノードのインタフェースを使用しなければアクセスできなかったベイク処理要素のプロパティのいくつかに直接アクセスできます。
AutoKey の既定のキーの作成および時間を制御するための新しいプロパティおよびメソッドが maxOps インタフェースに追加されました。 [[モーション]タブ/モーション パス]サブオブジェクト モードを制御するための新しいプロパティも追加されています。
新しい maxOps.findNodes()
メソッドが追加されました。このメソッドは、マテリアルおよびレイヤによるフィルタリングを含む類似したノードの検索に使用できます。
新しいメソッド createMenuItemFromAction()
が menuMan インタフェースに追加されました。
新しい AnimHandle システムは、ノード、モディファイヤ、マテリアル、コントローラなどのシーン内の すべてのエンティティに、一意な ID 番号を割り当てます。
新しいノード イベント システムでは、以前のリリースの 3ds Max で使用されていた一般イベント コールバック機能よりも 優れたノード関連イベントの処理が可能です。
新しい既定値のアクション コア インタフェースを使用すると、見つからない UVW、見つからない DLL などのイベントに対する既定値のアクションにアクセスできます。
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() メソッドにはソフト選択のサポートも追加されています。
Editable_Poly メソッド
既存のメソッド polyop.setVert()
および polyop.moveVert()
を変更して位置を配列として指定できるようになったので、同時に複数の頂点に影響を与えることが可能になりました。また、polyop.moveVert() メソッドにはソフト選択のサポートも追加されています。
新しいメソッド weldSpline(), findPathSegAndParam(), findLengthSegAndParam(), interpBezier3D(), tangetBezier3D().
が追加されました。
配列に一意な値のみが含まれていることを確認するために使用する新しいメソッド appendIfUnique()
および makeUniqueArray()
が追加されました。
GlobalVars
構造体は、グローバル変数を収集、検査、管理するためのメソッドを提供します。
Persistents
構造体は、存続グローバル変数を収集、検査、管理するためのメソッドを提供します。
新しいメソッド pasteBitmap()
および getBitmapInfo()
が追加されました。このメソッドを使用すると、ビットマップを別のビットマップに貼り付けたり、ビットマップの情報を取得できます。
任意のタイプの 2 つの値をラップする新しい DataPair Value クラスが追加されました。
文字列を大文字および小文字に変換する、ある文字列のすべてのオカレンスを別の文字列に置き換える、ライン フィードをキャリッジ リターン/ライン フィードのテキストファイルに変換するための toUpper(), toLower, substituteString(), replace_LF_with_CRLF()
、および replace_CRFL_with_LF()
メソッドが新しく追加されました。
[キー入力変換]ダイアログ ボックスに表示されるものと同じオイラー値を返す新しいメソッド quatToEuler2()
と、Quat の配列をオイラー角度の配列に変換する新しいメソッド quatArrayToEulerArray()
が追加されました。
ワールド スペース モディファイヤ - Force 関連メソッド
ワールド スペース モディファイヤからのフォースを計算するために使用する新しいメソッドが追加されました。
新しい BinStream I/O メソッド writeLongLong(), writeDouble(), writeFloatAsDouble(), readLongLong(), readDouble()
および readDoubleAsFloat().
が追加されました。
指定されたキーおよび(または)セクションが指定された INI ファイル内に存在する場合に true を返す新しいメソッド hasINIsetting()
が追加されました。
引数がネットワーク パスである場合に true を返す新しいメソッド pathIsNetworkPath()
が追加されました。
新しいプラグイン クラスをスキャンして MAXScript に公開する新しいメソッド scanForNewPlugins()
が追加されました。
ビューポート グリッドの間隔と主線を設定するための新しいメソッド setGridSpacing()
および setGridMajorLines()
が追加されました。
マルチパス カメラ効果プレビューなどのビューポートのデバイスに依存しないビットマップを取得するために使用する新しいメソッド viewport.getViewportDIB()
が追加されました。
ビューポートにカラー付きの長方形を描画するための新しいメソッド gw.hRect()
および gw.wRect()
が追加されました。
ビューポートに一連の三角形を描画するための新しいメソッド gw.startTriangles(). gw.endTriangles()
および gw.triangles()
が追加されました。
ビューポートに一連の三角形を三角ストリップとして描画するための gw.triStrip()
が追加されました。
MAXScript が値を返す前にビューポートを再描画する必要があることを示す内部的な MAXScript フラグを設定するための新しいメソッド setNeedsRedraw()
が追加されました。
アニメーションが再生されている場合は true を返し、再生されていない場合は false を返す新しいメソッド isAnimPlaying()
が追加されました。
時間表示モードを取得および設定するために使用する新しいシステム グローバル変数 timeDisplayMode
が追加されました。
3ds Max 6 で廃止された従来のドラフト レンダラー(古いファイルにまだ存在する可能性があります)を取得、リセットするための新しいメソッド renderers.GetDraftRenderer()
および renderers.ClearDraftRenderer()
が追加されました。
新しい読み取り専用プロパティ mouse.inAbort
が追加されました。
新しいメソッド getThisScriptFilename()
が追加されました。これは getSourceFileName()
と同じですが、Avguard 拡張機能で長い間使用可能であり、拡張機能を使用するように作成されたスクリプトとの下位互換性のために提供されています。
隠しウィンドウ内で DOS コマンドを実行するための新しいメソッド HiddenDOSCommand()
が追加されました。
Windows クリップボードとの間でテキストおよびビットマップ値を取得および設定するための新しいメソッド getClipBoardText(), setClipboardText(), getClipboardBitmap()
、setClipboardBitmap()
が追加されました。
CPU ごとの処理とシステムの親和性を取得および設定するための新しいプロパティ sysinfo.processAffinity
および sysinfo.systemAffinity
が追加されました。
Windows の環境変数の値を取得および設定するための新しいメソッド systemTools.getEnvVariable()
および systools.setEnvVariable()
が追加されました。
子ウィンドウ、3ds Max、および Windows デスクトップのウィンドウ HWND 値にアクセスするための新しい Windows 構造体が追加されました。
Windows レジストリ キーおよびレジストリ値にアクセスするための新しい Registry 構造体が追加されました。
レジストリ キーの値を表す新しい HKey の値 クラスが追加されました。