3ds Max 2022 および Update の MAXScript の新機能
このトピックでは、3ds Max 2022 および更新に含まれる MAXScript 言語の変更および改善点についての概要を簡単に説明します。各機能の詳細については、ドキュメントの各ページのリンクをお読みください。
注:
MAXScript リファレンスでは、3ds Max 2022 の MAXScript に追加されたすべての新機能に、3ds Max 2022 の 新機能: というマークが付いています。新機能という用語は、このページにリンクしています。
3ds Max 2022.3 Update の MAXScript の新機能
エラー ダイアログの改善 | 自動ロードされたスタートアップ スクリプトにエラーが含まれている場合に、エラー ダイアログ自体にスクリプトのフル パスと名前が表示されるようになりました。以前は、がタイトル バーに表示されていたため、切り捨てられることがありました。行番号も表示されるようになりました。 |
新しい[UVW アンラップ](Unwrap UVW)パック オプション | Unwrap_UVW.pack() メソッドの method 引数に、Unfold3d アルゴリズムを指定する新しいオプションが追加されました。 |
スタートアップ スクリプトと非表示ディレクトリ | 旧バージョンでは、ディレクトリ ツリー内のいずれかのディレクトリが非表示になっている場合、このツリー内のスタートアップ スクリプトはロードされませんでした。つまり、3ds Max のインストール ディレクトリまたはその上のディレクトリを非表示に設定することはできませんでした。3ds Max のインストール ディレクトリまたはその上のディレクトリを非表示に設定しても、その中に含まれるスタートアップ スクリプトがロードされるようになりました。 |
LookAt_Constraint の既定値 | 2 つの LookAt_Constraint プロパティの既定値が変更されました。.lookat_vector_length プロパティの既定値は 0.0 に、.viewline_length_abs の既定値は false になりました。 |
これまでドキュメント化されていなかった項目 | SceneExplorerInterface の .AutoExpand プロパティがドキュメント化されました。MultiOutputChannelTexmapToTexmap クラスがドキュメント化されました。 INodeExposureR.isExposed() の「Updates」フラグがドキュメント化されました。 |
3ds Max 2022.2 Update の MAXScript の新機能
ハイパーリンク コントロール | 埋め込まれたシーン スクリプト内のハイパーリンク コントロールをクリックすると、リンク先の Web サイトを信頼できるかどうかを確認するセキュリティの警告ダイアログが表示されます。 |
INI の既定値 | getINISetting() 関数にオプションの defaultValue キーワード パラメータが追加され、指定されたキーが見つからないときに返す値を定義することができるようになりました。 |
テキスト ファイルのエンコーディング | 新しい getEncoding() 関数は、指定されたテキスト ファイルの文字エンコーディングを返します。 |
Bitmaptexture 出力 | 以前は公開されていなかった UI コントロール、.enableColorMap および .useRGBColorMap を公開するために、これら 2 つの新しいプロパティが TexOutputClass クラスに追加されました。 |
自動バックアップ | autosave インタフェースに、secondsUntilNextAttempt() 、canProceed() 、および isRequired() という新しいメソッドが追加されました。 |
マウス ウィンドウ キャプチャ | windows 構造体に、マウス入力をキャプチャしているウィンドウの HWND を返す新しい関数 getCapture() が追加されました。 |
3ds Max 2022.1 Update の MAXScript の新機能
セーフ スクリプトの実行 | safeExecute() 関数は execute() の新しいバージョンで、常に[セーフ シーン スクリプトの実行](Safe Scene Script Execution)が有効であるかのように文字列式を評価します。.end() RolloutCreator 関数には、safeExecute() を使用してロールアウト定義を評価するかどうかを指定するオプションの executeDefinition:<bool> があります。safeReadValue() と safeReadExpr() 関数は、readValue() と readExpr() の新しいバージョンで、常に[セーフ シーン スクリプトの実行](Safe Scene Script Execution)が有効であるかのように値または式を評価します。 |
スクリプトの挿入の緩和 | スクリプトの挿入のリスクを軽減するために、3ds Maxでスクリプトを検索およびロードする方法が変更されました。検索されるディレクトリのリストは、現在実行中のスクリプト ディレクトリ(該当する場合)、ユーザ スクリプト ディレクトリ、および 3ds Max システム スクリプト ディレクトリに絞り込まれます。Windows システム ディレクトリと PATH 内のディレクトリは検索されなくなりました。この変更は、fileIn() 、callbacks.addScript() 、mzip ユーティリティ、およびパーティクル フロー スクリプト オペレータなど、修飾されていないスクリプト名を取ることができる関数すべてに影響します。この変更は、startup.ms の検索方法にも影響します。 |
文字列から点への変換 | as 演算子を使用して、文字列値を point2、point3、または point4 値に強制的に変換できるようになりました。 |
ダイナミック スクリプト タイプ | getCurrentScriptSourceType() 関数に、新しい有効な戻り値のタイプ #dynamicScript が追加されました。 |
ビューポート設定 | 現在のビューポート設定を表す ViewportViewSettingImpl オブジェクトに新しい AmbientOcclusionSamples プロパティが追加されました。 |
環境変数 | systemTools 構造体に、現在定義されているすべての環境変数の配列を返す、新しい getEnvVariables() 関数が追加されました。 |
3ds Max 2022 の MAXScript の新機能
セーフ シーンの読み込み | 新しいgetCurrentScriptSourceType() 関数は、現在のスクリプトに[セーフ シーン スクリプトの実行](Safe Scene Script Execution)のセキュリティ ポリシーが適用されているかどうかを返します。新しい SceneScriptSecurityManager インタフェースにより、[セーフ シーン スクリプトの実行](Safe Scene Script Execution)の状態に関する情報を取得できます。 |
Box2 と Box3 | 新しいメソッドと演算子が追加されました。Box2 の場合は Operator +、enlargeBy()、および expandToInclude()、Box3 の場合は Operator + |
バウンディング ボックス プロパティ | これらの値のタイプには、含まれているノードのバウンディング ボックスを表す Box3 値を返す新しい .boundingBox プロパティがあります: node, NodeChildrenArray、pathname、SelectionSetArray、および ObjectSet |
バウンディング ボックス メソッド | ノードのバウンディング ボックス メソッド nodeGetBoundingBox() と nodeLocalBoundingBox() はオプションの asBox3:<bool> 引数を取るようになりました。この引数が true の場合、メソッドはバウンディング ボックスを Box3 値として返します。 |
スピナーとスライダ コントロール | Spinner UI コントロールと Slider UI コントロールの両方の .value プロパティと on changed イベントによって返される値のタイプは、作成時に指定されたコントロールのタイプ(#float または #integer)と一致するようになりました。 |
カスタム アトリビュート配列 | カスタム アトリビュート仮想配列クラス MAXCustAttribArray が、標準の比較演算子 == および != と共に isDeleted() メソッドをサポートするようになりました。 |
ローカライズされていない名前へのアクセス | スクリプト プラグイン パラメータは、 スクリプトでアクセスされた場合に、パラメータ名を定義する新しい nonLocalizedName:<string> を取得するようになりました。maxclass の値には、クラスのローカライズされていない名前が含まれた、読み取り専用の新しい nonLocalizedName プロパティがあります。 |
ATSOps | ATSOps メソッド GetDependencyFileList() および SelectFiles() に、ファイルの再パス設定および比較方法をコントロールする新しいキーワード引数が追加されました。 |
ローカライズされた名前へのアクセス | いくつかのメソッドには、ターゲット オブジェクトのローカライズされた名前とローカライズされていない名前のどちらを返すかをコントロールする localizedName:<bool> パラメータ(または配列が返す場合は localizedNames:<bool> )が含まれるようになりました。getObjectName() getSubAnimName() getSubMtlSlotName() getSubTexmapSlotName() getClassName() WM3_MC_GetName() WM3_MC_SetName() getSubAnimNames() |
これまでドキュメント化されていなかった項目 | Box2 メソッド: <bool>intersects() 、<box2>copy() Box3 メソッド: <box3>copy() 、<box3>rectify() pathConfig struct メソッド: doSetProjectFolderSteps() および doSetProjectFolderStepsUsingDirectory() <ViewportViewSettingImpl>.ProgressiveRenderingEnabled |
廃止予定となった項目 | Airflow_Node および Airflow_Spline が廃止予定となりました |
包括語の変更
MAXScript の 3ds Max ユーザ インタフェース、クラス、およびメソッド名のいくつかの用語は、多様性およびインクルージョンというオートデスクの価値に反するものであったため、変更または削除されました。3ds Max を使用するときに、エンド ユーザやツール開発者の誰もが受け入れられていると感じることができるようにしたいと考えています。
したがって、「master」や「slave」などの語を含むいくつかの MAXScript API の名前は、それぞれ「driver」と「driven」という用語を使用するように変更されています。MAXScript の下位互換性を可能な限り維持しようとしましたが、スクリプトが中断される場合があります。
以下に、更新されたすべての MAXScript API 名とそれに対応する新しい名前のリストを示します。
BipSlave_Control -> BipDriven_Control
GetMasterController -> GetPointControllerContainer
NewDefaultMasterPointController -> NewDefaultPointControllerContainer
Master_Controller_plugin_not_found -> Driver_Block_Control_plugin_not_found
Master_Point_Controller -> Point_Controller_Container
MasterPointController -> PointControllerContainer
RetimerMasterCtrl -> RetimerDriverCtrl
Slave_Control -> Driven_Control
Slave_Point3 -> Driven_Point3
SlaveFloat -> DrivenFloat
SlaveMatrix3 -> DrivenMatrix3
SlavePoint3 -> DrivenPoint3
SlavePoint4 -> DrivenPoint4
SlavePos -> DrivenPos
SlaveRotation -> DrivenRotation
SlaveScale -> DrivenScale
Daylight_Slave_Controller -> Daylight_Driven_Controller
Daylight_Slave_Intensity_Controller -> Daylight_Driven_Intensity_Controller
Sunlight_Daylight_Slave_Controller -> Sunlight_Daylight_Driven_Controller
Sunlight_Daylight_Slave_ControllerMatrix3Controller -> Sunlight_Daylight_Driven_ControllerMatrix3Controller
Sunlight_Daylight_Slave_Intensity_Controller -> Sunlight_Daylight_Driven_Intensity_Controller
Sunlight_Daylight_Slave_Intensity_ControllerFloatController -> Sunlight_Daylight_Driven_Intensity_ControllerFloatController
Sunlight_Slave_Controller -> Sunlight_Driven_Controller
Sunlight_Slave_Intensity_Controller -> Sunlight_Driven_Intensity_Controller
MasterBlock -> DriverBlock
MasterBlockController -> DriverBlockController
MasterList -> BlockControl
Master_Layer -> Main_Layer
MasterLayer -> MainLayer
MasterLayerControlManager -> MainLayerControlManager
Master_Motion_Clip -> Driver_Motion_Clip
MasterClip -> DriverClip
Max_Master_Clip -> Max_Driver_Clip
MaxMotionClipMaster -> MaxMotionClipDriver
Motion_Clip_SlaveFloat -> Motion_Clip_DrivenFloat
Motion_Clip_SlavePoint3 -> Motion_Clip_DrivenPoint3
Motion_Clip_SlavePos -> Motion_Clip_DrivenPos
Motion_Clip_SlaveRotation -> Motion_Clip_DrivenRotation
Motion_Clip_SlaveScale -> Motion_Clip_DrivenScale
Reaction_Master -> Reaction_Driver
ReactionMaster -> ReactionDriver
SprayMaster -> SprayDriver
StereoCameraSlave -> StereoCameraDriven
MAXScript properties
<ClipAssigner>.masterblocks -> driverblocks
<MassFX_RBody>.GetRBMeshOverrideMasterMat -> GetRBMeshOverrideDriverMat
<MassFX_RBody>.SetRBMeshOverrideMasterMat -> SetRBMeshOverrideDriverMat
<nvpx>.GetRBMeshOverrideMasterMat -> GetRBMeshOverrideDriverMat
<nvpx>.SetRBMeshOverrideMasterMat -> SetRBMeshOverrideDriverMat
<MaxLiquidSolver>.masterVoxelSize -> baseVoxelSize
<Point_Cache>.loadTypeSlave -> loadTypeNetwork
<Point_CacheSpacewarpModifier>.loadTypeSlave -> loadTypeNetwork
<Select_the_Biped_for_use_as_a_retargeting_reference>.masterMaxClip -> driverMaxClip
<Float_Wire>.isMaster -> isDriver
<Float_Wire>.isSlave -> isDriven
<Float_Wire>.slaveAnimation -> drivenAnimation
<Point3_Wire>.isMaster -> isDriver
<Point3_Wire>.isSlave -> isDriven
<Point3_Wire>.slaveAnimation -> drivenAnimation
<Point4_Wire>.isMaster -> isDriver
<Point4_Wire>.isSlave -> isDriven
<Point4_Wire>.slaveAnimation -> drivenAnimation
<Position_Wire>.isMaster -> isDriver
<Position_Wire>.isSlave -> isDriven
<Position_Wire>.slaveAnimation -> drivenAnimation
<Rotation_Wire>.isMaster -> isDriver
<Rotation_Wire>.isSlave -> isDriven
<Rotation_Wire>.slaveAnimation -> drivenAnimation
<Scale_Wire>.isMaster -> isDriver
<Scale_Wire>.isSlave -> isDriven
<Scale_Wire>.slaveAnimation -> drivenAnimation
MAXScript Enums
<SchematicView>.testIncludeFilter: #masterPoint -> #pointControllerContainers
<SchematicView>.setIncludeFilter: same
<SchematicView>.clearIncludeFilter: same
MAXScript interfaces
Interface: IRingArrayMaster -> IRingArrayDriver
MAXScript SubAnim Names
#Master_Point_Controller -> #Point_Controller_Container
#Master -> #Point_Controller_Container
#Master_CV_Control -> #CV_Controller_Container
Others
gxmlio.wireparams: #(..., #isMaster, #isSlave, #slaveAnimation,...) -> #(..., #isDriver, #isDriven, #drivenAnimation,...)