コールバックを使用するときに、シーンの不必要なダーティ化を防ぐ

場合によっては、ファイル > 新規(File > New)、ファイル > 保存(File > Save)、またはファイル > ロード(File > Load)などの後でコールバックを使用すると、反復タスクの自動化や作業環境の設定に役立つことがあります。この適用例には、ノード監視ツールを設定する場合や、ファイル > 新規(File > New)を選択した後のコールバックで、ファイルから設定をロードする、またはテンプレート環境を作成する場合などがあります。ただし、これらの操作を行うと、シーンが不必要にダーティになって、シーンを保存する必要がなくても、その必要があるとユーザが勘違いすることがあります。

この問題を回避するには、「file -modified “true”|”false”」コマンドおよびフラグを使用して、シーのダーティさをリセットします。

例として、Maya インストール ディレクトリ内にある $MAYA_LOCATION/scripts/others/supportRenderers.mel ファイルを参照してください。

新しいシーンをロードするときに、Maya は、現在のレンダラが使用可能かどうかを確認します。使用可能でない場合は、現在のレンダラを推奨レンダラに設定します。この setAttr アクションを行うと、シーンがダーティになります。ファイルが単に開かれていて、他の変更が行われていない場合は、シーンをダーティにする必要はありません。

次のコード スニペットは、以下の処理を行います。

{
    int $wasModified = `file -query -modified`;
    setAttr
        "defaultRenderGlobals.currentRenderer"
        -type "string"
        $preferredRenderer;
    // If the scene wasn't dirtied prior to setting the current renderer,
    // we want to set the scene as not modified to avoid dirtying the scene.
    if (!$wasModified)
    {
        file -modified false;
    }
}