myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

SI | Scene 名 と ファイル名 は 違う!

普段はSoftimageのScene名はファイル名と同じですね。

しかし、Explorerとかでファイル名をリネームすると、ファイル名とScene名が異なってしまいます。
SIは自動にシーン名を更新しません。

そうすると、「別名で保存」しようとすると、古いファイル名が出てきます。
ファイル名が変わったけど、シーン名が変わっていないからです。
そして、基本的にSIはフィアル名じゃなくて、シーン名しか使いません。

これでシーン名はフィアル名と同じという前提条件で動くスクリプトやプラグイン等は上手く動かなくなるかもしれません。

因みに、シーン名はユニーク名じゃないといけません。つまり、同じ名前のモデルを作ってはいけない。
たまにこういうわけのわからん仕様が来ますね~。出来ないっつーの!

この問題はさっきメールリストに出てきて、以前のプロジェクトにもこの問題があったからチェックとリネームするスクリプトをさっき書いてみました。

こんな感じです:

// JScript

// Scene名取得:
var SceneName = Application.ActiveProject2.ActiveScene.Name
// パス込みのファイル名を取得:
var sFilenamePath = Application.ActiveProject2.ActiveScene.filename.value
// プロジェクトパスの取得:
var sProjectPath = String(Application.ActiveProject2.ActiveScene.parent)
// プロジェクトパス+「\Scenes\」の文字数(+8)と拡張子(-4)をひくと、ファイル名が分かります:
var Filename = sFilenamePath.substring(sProjectPath.length +8, sFilenamePath.length - 4)

// シーン名チェック
if (SceneName != Filename){
logmessage ("Scene名 と ファイル名 が違う!", siWarning)
Application.ActiveProject2.ActiveScene.Name = Filename

SceneName = Application.ActiveProject2.ActiveScene.Name
if (SceneName != Filename){
logmessage ("Scene名 : " + SceneName)
logmessage ("リネーム失敗!!同じ名前のモデルがあるとリネームが出来ません!", siError)
}
else{
logmessage ("Scene名はリネームされました。")
logmessage ("Scene名 : " + SceneName)
}
}
else{
logmessage ("Scene名はファイル名と同じです。")
}


SDKを探ってもファイル名の取得方法が分からなくて、色々適当にためしてみたら
Application.ActiveProject2.ActiveScene.filename.value で 出ました。

載っていないんですね。
えっ?載っていますか?どこにですか?教えてください!