その他の関数

freeSceneBitmaps()      

画像ファイルのビットマップ キャッシュが使用しているメモリをすべて解放します。これは、メモリがさまざまなビットマップでフラグメント化されており、現在アクティブなものだけを再ロードしたい場合に便利です。

rescaleWorldUnits <factor> [ #selOnly ]   

このメソッドは、3ds Max の再スケール ワールド ユーティリティ プラグインと同様の機能を提供します。<factor> は、オブジェクトをスケールする係数です。#selOnly が指定されている場合は、選択されているオブジェクトのみがスケールされます。

IsNetServer() 

3ds Max がネットワーク レンダリング モードで動作している場合は true、通常のインタラクティブ モードで動作している場合は false を返します。

loadDllsFromDir <directory_path_string> <filename_wildcard_string> 

指定したディレクトリで見つかったすべてのプラグインをロードします。directory_path_string は、「¥」で区切る必要があります。

LoadDllsFromDir "f:\\maxsdk\\plugin\\" "*.dlc"
scanForNewPlugins includeUnknownSuperclasses:<boolean> 

新しいプラグイン クラスを検索し、MAXScript にこれらのクラスを公開します。通常は、loadDllsFromDir() の呼び出しの後に呼び出されます。

includeUnknownSuperclasses: が false (既定値)の場合、未知のスーパークラスを持つクラスは無視されます。

3ds Max 2008 以降で使用可能です。従来、[AVG] DLX 拡張機能として提供されていた機能です。

maxVersion() 

#(21000, 52, 0, 21, 2, 0, 2112, 2019, ".2 Update") のような つの項目を含む配列を返します。最初の 3 つの数字は 3ds Max のリリース番号、API のバージョン、および SDK のリビジョン番号です。

次の 4 つの数字は、メジャー バージョン、アップデートのバージョン、ホットフィックスの番号、およびビルド番号を表します。3ds Max 2019.1 Update 以降で使用可能です。これらは、SystemTools.GetBuildNumber() の結果、および[ヘルプ] (Help) > [オートデスク製品情報](Autodesk Product Information) > [3ds Max 情報](About 3ds Max)ダイアログに表示されるバージョンと一致します。

最後の 2 つの項目は、製品のリリース年(整数)および製品のバージョンに関する説明(文字列)を表します。3ds Max 2019.2 Update 以降で使用可能です。メイン リリースの場合、この文字列は空白になります。アップデート リリース、セキュリティ修正プログラム、修正プログラム(Hotfix)の場合は、値が入力されます。この 2 つの項目が連結されて、[ヘルプ] (Help) > [オートデスク製品情報](Autodesk Product Information) > [3ds Max 情報](About 3ds Max)ダイアログ ボックスに[製品バージョン](Product Version)として表示されます。

getMaxExtensionVersion()

3ds Max 2016 Extension 1 以降で使用可能: 3ds Max Extension のバージョンを示す整数を返します。Extension でない場合は、0 を返します。

getMAXWindowSize [ removeUIScaling:<true> ] 

3ds Max のウィンドウ サイズをピクセル単位で返します。

オプションの removeUIScaling パラメータは、高 DPI ディスプレイでスケールを削除するかどうかを示します。

getMAXWindowPos [ removeUIScaling:<true> ] 

デスクトップの左上コーナーを基準にして、3ds Max ウィンドウの位置をピクセル単位で返します。アプリケーションが最大化されている場合は[-4、-4]を返します。

オプションの removeUIScaling パラメータは、高 DPI ディスプレイでスケールを削除するかどうかを示します。

<boolean> getMaxscriptStartupState (#stdScriptsLoading | #stdScriptsLoaded | #startupScriptsLoading | #startupScriptsLoaded)

指定した起動状態が true の場合は、true を返します。3ds Max 2019.2 Update 以降で使用可能です。たとえば、標準スクリプトがロードされている間は、getMaxscriptStartupState #stdScriptsLoading のみが true を返します。標準スクリプトがロードされた後は、getMaxscriptStartupState #stdScriptsLoaded が true を返します。

<enum>getCurrentScriptSourceType()

スクリプトのソース タイプを返します。これは、[セーフ シーン スクリプトの実行](Safe Scene Script Execution)機能での処理方法を決定します。戻り値は、3ds Max 2022 以降で使用可能です

generateAPIList (<StringStream> | <FileStream> | <WindowStream>) [ caseSensitiveSort:<boolean> ] 

MAXScript キーワードのリストをソートした状態で生成します。このリストは、オートコンプリートのために スクリプト エディタで使用されるリストと同じです。3ds Max 2020.1 Update 以降で使用可能です。

caseSensitveSort 引数が true (既定)として指定されている場合は、文字列の順序に ASCII 方式が使用されるため、すべての大文字が小文字より先になります(例: ABCabc)。この引数が false の場合は、大文字と小文字の区別が無視され、キーワードは AaBbCc のようにソートされます。

このリストをファイルに保存して、外部エディタで MAXScript をサポートするために使用することができます。次の例でこのようなリストを作成することができます。

apifile = undefined
try
(
  apifile = openFile @"c:\maxscript.api" mode:"w"
  generateAPIList apifile
  close apifile
)
catch -- mainly in case file cannot be opened with write access
(
  if apifile != undefined do close apifile
) 
swap <destination> <destination> 

引数に 2 つの有効な代入(プロパティ、配列インデックス、変数)を取り、それらの値をスワップします。

swap myMaterial.diffuseMap.map1 myMaterial.diffuseMap.map2
<controller>createFloatControllerWithRandomValues <min time> <max time> <delta time> <min value> <max value>

指定期間にわたるキーが格納されている実数型コントローラを作成します。指定範囲内のランダム値が時間ステップとして使用されます。ランダム データを含む巨大なシーンが必要となるテストに便利です。

3ds Max 2019.1 Update 以降で使用可能です。

<color>ConvertKelvinToRGB <float>Kelvin <float>scale 

最初の引数で指定された温度(ケルビン)に対応する黒体放射カラーを返します。2 番目の引数はカラー出力をスケールします。3ds Max 2017 以降で使用可能です。

値が 6,500 K の場合は、白色[255,255,255]を 1.0 のスケールで出力するか、R、G、B 値がすべて等しいカラーを他の任意のスケールで出力します。

(
     global Kelvin2RGBExplorerRollout
     try(destroyDialog Kelvin2RGBExplorerRollout)catch()

     rollout Kelvin2RGBExplorerRollout "Kelvin To RGB Explorer"
     (
           local theGradient = bitmap 600 50
           local theGradient2 = bitmap 600 1
           local theColorArray = #()
           local theKelvinArray = #()

           button btn_fromPreset1 "100" width:50 across:8 align:#left
           button btn_fromPreset2 "1,000" width:50 align:#left offset:[-20,0]
           button btn_fromPreset3 "1,500" width:50 align:#left offset:[-40,0]
           button btn_fromPreset4 "2,500" width:50 align:#left offset:[-60,0]
           button btn_fromPreset5 "5,000" width:50 align:#left offset:[-80,0]
           button btn_fromPreset6 "6,500" width:50 align:#left offset:[-100,0]
           button btn_fromPreset7 "10,000" width:50 align:#left offset:[-120,0]
           spinner spn_fromKelvin "Start Temperature In Kelvin:" range:[0.01,10000000,100] fieldwidth:50 align:#right

           button btn_toPreset1 "100" width:50 across:8 align:#left
           button btn_toPreset2 "1,000" width:50 align:#left offset:[-20,0]
           button btn_toPreset3 "1,500" width:50 align:#left offset:[-40,0]
           button btn_toPreset4 "2,500" width:50 align:#left offset:[-60,0]
           button btn_toPreset5 "5,000" width:50 align:#left offset:[-80,0]
           button btn_toPreset6 "6,500" width:50 align:#left offset:[-100,0]
           button btn_toPreset7 "10,000" width:50 align:#left offset:[-120,0]
           spinner spn_toKelvin "End Temperature In Kelvin:" range:[0.01,10000000,10000] fieldwidth:50 align:#right

           progressbar prg_scale height:15 width:480 align:#left across:2 offset:[0,0] value:100.0 color:green
           spinner spn_scale "Scale:" range:[0.01,1.0,1.0] scale:0.01 fieldwidth:50 align:#right

           bitmap bmp_gradient width:600 height:50 align:#center

           edittext edt_Kvalue "Kelvin:" across:4 fieldwidth:100 align:#left
           edittext edt_Rvalue "R:"  fieldwidth:120 align:#center
           edittext edt_Gvalue "G:"  fieldwidth:120 align:#center
           edittext edt_Bvalue "B:"  fieldwidth:120 align:#right

           fn convertKelvin2RGB =
           (
                theColorArray = #()
                theKelvinArray = #()
                local theColorScale = spn_scale.value
                local currentValue = spn_fromKelvin.value
                local increment = (spn_toKelvin.value-spn_fromKelvin.value)/599.0
                for k = 1 to 600 do
                (
                     append theColorArray (ConvertKelvinToRGB currentValue theColorScale)
                     append theKelvinArray currentValue
                     currentValue+= increment
                )
                setPixels theGradient2 [0,0] theColorArray
                copy theGradient2 theGradient
                bmp_gradient.bitmap = theGradient
           )

           on spn_fromKelvin changed val do
           (
                if val > spn_toKelvin.value do spn_toKelvin.value = val
                convertKelvin2RGB()
           )
           on spn_toKelvin changed val do
           (
                if val < spn_fromKelvin.value do spn_fromKelvin.value = val
                convertKelvin2RGB()
           )

           on prg_scale clicked val do
           (
                if val < 1 do val = 1
                prg_scale.value = val
                spn_scale.changed (spn_scale.value = val/100.0)
           )

           on btn_fromPreset1 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 100))
           on btn_fromPreset2 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 1000))
           on btn_fromPreset3 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 1500))
           on btn_fromPreset4 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 2500))
           on btn_fromPreset5 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 5000))
           on btn_fromPreset6 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 6500))
           on btn_fromPreset7 pressed do ( spn_fromKelvin.changed (spn_fromKelvin.value = 10000))

           on btn_toPreset1 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 100))
           on btn_toPreset2 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 1000))
           on btn_toPreset3 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 1500))
           on btn_toPreset4 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 2500))
           on btn_toPreset5 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 5000))
           on btn_toPreset6 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 6500))
           on btn_toPreset7 pressed do ( spn_toKelvin.changed (spn_toKelvin.value = 10000))

           on spn_scale changed val do
           (
                prg_scale.value = val*100.0
                convertKelvin2RGB()
           )

           on Kelvin2RGBExplorerRollout mousemove pos do
           (
                if pos.x >= bmp_gradient.pos.x and pos.x <= bmp_gradient.pos.x+601 and pos.y >= bmp_gradient.pos.y and pos.y <= bmp_gradient.pos.y+50 do
                (
                     theSample = pos.x-10
                     if theSample < 1 do theSample = 1
                     if theSample > 600 do theSample = 600
                     edt_Kvalue.text = theKelvinArray[theSample] as string
                     edt_Rvalue.text = theColorArray[theSample].r as string
                     edt_Gvalue.text = theColorArray[theSample].g as string
                     edt_Bvalue.text = theColorArray[theSample].b as string
                )
           )

           on Kelvin2RGBExplorerRollout open do convertKelvin2RGB()
     )
     createDialog Kelvin2RGBExplorerRollout 620 160
)

このスクリプトは、次のようなロールアウトを生成します。

setNumberThreads <int>ThreadType <int>maxNumThreads <int>minElementsPerThread

3ds Max のさまざまなパーツのスレッド数を設定します。

ThreadType には、以下を指定できます。

0 - メッシュ スレッディング: 法線の構築、クリップ操作、ベクトル正規化などの一部のメッシュ操作に使用します。1 - 変形スレッディング: ベンド、スキン、スキン ラップなどのモディファイヤで使用します。2 - メッシュ作成スレッディング: DirectX ハードウェア メッシュの作成に使用されるスレッド数です。

maxNumThreads は、操作に使用するスレッドの最大数です。制限はなく、使用可能な CPU の数よりも大きくすることができます。

minElementsPerThread は、スレッドに割り当てる最小要素数を指定することで、スレッドのタイプに応じてスレッド数を制限する場合に使用します。たとえば、メッシュ作成スレッディングの場合、要素はスレッドあたりの面/頂点の数になります。この値を無視するには、0 に設定します。