3ds Max シーンには、ローカル ドライブやネットワーク共有など、さまざまな場所のアセットへの参照を含めることができます。シーンをロードまたは保存するときに、3ds Max はアセット パスが存在するかどうかを確認し、見つからないファイル パスのキャッシュを保持します。不明なファイル パスをキャッシュに追加しておくことにより、このパスに一致するそれ以降のアセット パスをファイル システムでクエリする必要がなくなるので、時間のかかる操作を省いてファイルのロードと保存の時間を最適化できます。
たとえば、ローカルとネットワーク共有に分散された 150 のアセットが含まれているシーンでテストした場合、いくつかの不明なアセットがあるとファイルの処理に 30 秒以上 (OS のファイルのキャッシュ時間)かかっていましたが、この機能によってファイルのロード時間を約 70% に、ファイルの保存時間はほぼ 80% に削減することができました。
3ds Max 2018.4 以降で使用可能です。
不明パスのキャッシュが missingPathCache インタフェースで MAXScript に公開されています。
missingPathCache.cacheEntryValidityTime : integer : Read|Write|Validated by Range: 0 to 2147483647
現在のキャッシュにエントリが存在しており、削除すべきかをテストする必要があるエントリのキャッシュをスウィープする場合、前回のテスト時間と cacheEntryValidityTime の合計が現在の時間未満の場合、エントリはテストされません。既定値は 5000 (5 秒)です。
missingPathCache.cacheEntryPurgeTime : integer : Read|Write|Validated by Range: 0 to 2147483647
キャッシュをスウィープするときに、直近の cacheEntryPurgeTime ミリ秒の間にファイルパスを存在しないものとして指定するために使用されなかったエントリは、キャッシュから削除されます。 既定値は 3600000 (1 時間)です。
missingPathCache.cacheSweepInterval : integer : Read|Write|Validated by Range: 0 to 2147483647
キャッシュのスイープ間の時間間隔。既定値は 1000 (1 秒)です。
missingPathCache.cacheEnabled : bool : Read|Write
ファイルパス存在テストにキャッシュを使用するかどうか。これをオフにすると、キャッシュはクリアされません。既定値は true です。
missingPathCache.includeFileWatchInSweep : bool : Read|Write
FileWatch が関連付けられたキャッシュ エントリの存在もキャッシュのスウィープ中にテストするかどうか。これは、FileWatch が適用されるフォルダに対してフォルダ関連の変更が発生するときに FileWatch が適切に起動しないといった、潜在的なケースを扱うために用意されています。これは、主にあいまいなファイル サーバで発生します。このようなケースは知られていません。既定は false です。
missingPathCache.existsTimeBackgroundThreshold : float : Read|Write
ファイルパスの存在がテストされ、キャッシュに含まれていない場合、そのテストを実行するのにかかった時間が計測されます。この時間が existsTimeBackgroundThreshold 未満の場合、ファイルパスはメイン スレッドのキャッシュへ追加されるように処理されます。この時間よりも長くかかる場合、ファイルパスはワーカー スレッドのキャッシュへ追加されるように処理されます。この値を 0 に設定すると、これらの処理はすべてワーカー スレッドに強制されます。この値は 10 分の 1 ミリ秒単位で設定し、既定値は 2 です。
missingPathCache.cacheCaseSensitive : bool : Read|Write
キャッシュに対するファイルパスのテストで大文字と小文字を区別するかどうか。これは通常 false に設定することができますが、一部のファイル サーバでは true にする必要があります。堅牢さを保つため、既定では true に設定されます。ファイル サーバで大文字と小文字が区別されない場合は、false に設定することをお勧めします。
missingPathCache.cacheLocalDrives : bool : Read|Write
ローカル ドライブ上の不明なフォルダをキャッシュするかどうか。ローカル ドライブのファイル存在テストは高速であるため、通常は false に設定します。既定は false です。
この設定を変更しても、既存のキャッシュ エントリには影響しないことに注意してください。
missingPathCache.clearCacheOnFileReset : bool : Read|Write
3ds Max をリセットしたときに不明なパス キャッシュをクリアするかどうか。既定は false です。
missingPathCache.clearCacheOnSceneLoad : bool : Read|Write
シーンをロードする前に不明なパス キャッシュをクリアするかどうか。既定は false です。
missingPathCache.persistSettingsOnExit : bool : Read|Write
3ds Max を終了するときに 3dsmax.ini へのキャッシュ設定を保持するかどうか。既定値は true です。
missingPathCache.useFileWatch : bool : Read|Write
可能な場合は FileWatch ハンドルを使用するかどうか。既定値は true です。
missingPathCache.numCacheEntries : INT64 : Read
パフォーマンス統計: キャッシュ エントリの数。
missingPathCache.numCacheHits : INT64 : Read
パフォーマンス統計: キャッシュ ヒットによって合格となったファイルパス存在テストの数。
missingPathCache.numCacheTests : INT64 : Read
パフォーマンス統計: キャッシュを有効にしているときのファイルパス存在テストの数。
missingPathCache.numCacheSweeps : INT64 : Read
パフォーマンス統計: 発生したキャッシュ スウィープの数。
missingPathCache.numThreadsSpawned : INT64 : Read
パフォーマンス統計: キャッシュ スウィープ中に作成されたキャッシュ エントリ存在テスト スレッドの数。
missingPathCache.numDoesExistTests : INT64 : Read
パフォーマンス統計: 発生した DoesFileExist() および DoesDirectoryExist() 呼び出しの数。
missingPathCache.cacheSweepCumTime : INT64 : Read
パフォーマンス統計: キャッシュのスウィープにかかった時間。これは独自のスレッドで発生することに注意してください。
missingPathCache.cacheSweepMaxTime : INT64 : Read
パフォーマンス統計: キャッシュのスウィープにかかった時間。これは独自のスレッドで発生することに注意してください。
missingPathCache.numFileWatchedEntries : INT64 : Read
パフォーマンス統計: FileWatch ハンドルを使用するキャッシュ エントリの最大数。
missingPathCache.numFileWatchedEntriesCum : INT64 : Read
パフォーマンス統計: FileWatch ハンドルを使用するキャッシュ エントリの累積数。
missingPathCache.numFileWatchedEntriesMax : INT64 : Read
パフォーマンス統計: FileWatch ハンドルを使用するキャッシュ エントリの最大数。
missingPathCache.isFilePathInCacheCumTime : double : Read
パフォーマンス統計: ファイルパスがキャッシュに存在するかのテストにかかった累積時間
missingPathCache.isFilePathInCacheMaxTime : double : Read
パフォーマンス統計: ファイルパスがキャッシュに存在するかのテストにかかった最大時間
missingPathCache.doesExistCumTime : double : Read
パフォーマンス統計: ファイルパス存在テストにかかった累積時間
missingPathCache.doesExistMaxTime : double : Read
パフォーマンス統計: ファイルパス存在テストにかかった最大時間
<bool>missingPathCache.IsFilePathInCache <filename>filePath
filePath の一部がキャッシュに存在する場合は true を返します。主にテストに使用されます。
<bool>missingPathCache.DoesFileExist <filename>filePath allowDirectory:<bool> allowDirectory default value: true
filePath がファイルまたはディレクトリとして存在する場合は true を返します。
allowDirectory が true の場合、メソッドは filePath がファイルとして存在する場合には true を返し、filePath がディレクトリとして存在する場合は false を返します。
<bool>missingPathCache.DoesDirectoryExist <filename>dirPath
dirPath ディレクトリに存在する場合は true を返します。
<void>missingPathCache.SeedCacheWithFilePath <filename>filePath
ワーカー スレッドで filePath のファイル存在テストを実行します。この目的は、現在ファイルは存在せず、ファイルが存在するかを確認する必要もないが、後で知る必要が生じる場合のためにキャッシュを filePath でシードすることです。キャッシュをシードすることで、ディレクトリが存在しないために filePath が存在しない場合、後で実行するファイル存在テストが高速になります。
<void>missingPathCache.Reset()
キャッシュからすべてのエントリを削除します。
<void>missingPathCache.ResetStatistics()
すべてのパフォーマンス統計変数を 0 にリセットします。
<TSTR by value array>missingPathCache.GetNotPresentPaths unusedTime:<&INT64 array> unusedTime default value: #() unusedTime is Out parameter
フォルダ名が見つからないキャッシュ エントリの配列を返します。unusedTime が指定されている場合、filepath が存在しないことを指定するためにキャッシュ内の対応するエントリが使用されてからの時間(ミリ秒単位)が Integer64 値の配列として返されます。
<bool>missingPathCache.RemoveEntry <filename>filePath
指定された filePath キャッシュ エントリが存在する場合は削除します。指定された filePath は、キャッシュ エントリに完全に一致する必要があります。エントリが削除された場合は true を返し、それ以外の場合は false を返します。
<void>LoadINISettings()
3dsmax.ini からキャッシュ設定をロードします。
<void>SaveINISettings()
3dsmax.ini にキャッシュ設定を保存します。