myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

SI | TMPフォルダとトークンについて(Scripting)

久しぶりの記事ですね。最近忙しくてあまりブログ書く暇がないし、面白いネタもないです。
Mayaシリーズの続きを書こうと思っていたけど、何を書こうとしたっけ?・・・。

久々の記事だけど、ただのスクリプトメモになってしまいます。

スクリプトを書かない人にはどうでも良い情報ですけど、
スクリプトを書く人にはちょっと便利かもしれない:


TEMPフォルダの取得

XSIUtils.Environment("TEMP")



これでWindowsのTEMPフォルダではなく、SoftimageのTEMPフォルダを取得が出来ます。
Softimageを閉じる時にこのフォルダが自動的に消えます。
スクリプト内で一時的に何かを吐き出すには便利ですよ。

マニュアルには「システム環境変数に読み取り」しか載っていません。

SDK マニュアル: XSIUtils.Environment



Token の使い方
PPGにフォルダパスを入れて、プロジェクトフォルダにPicturesフォルダとか入れると
めちゃくちゃ長いパスになってしまい、PPGには入りきれないですね。

こういう時にトークンを使うと便利です。
[Project Path]
とかですね。

D:\\myara\\Projects\\TopSecret\\The_Project\\SI\\Pictures



なんかより

[Project Path]\\Pictures



の方がスッキリしますね。


同じく、[User]、[Scene] などのトークンもあるので、ユーザー名とか取得する時にも使えますね。


例えば:

// JScript
String_Path = "[project path]" + "\\Pictures"
New_Path = XSIUtils.ResolveTokenString( String_Path , 0, false)
LogMessage ( New_Path )


要するに、この ResolveTokenString は [project path] の部分をプロジェクトパスに変換してくれます。


そして、自分のTokenを作ることも出来ます。
やり方は簡単です。配列を2つ用意して、最後に配列を入れればOKです。

例:


// JScript
var tokenNames = ["c","test"]
var tokenValues = ["C:", "\\THIS IS A TEST"]
NewString = XSIUtils.ResolveTokenString( "[c]" + "[test]", 0, 0, tokenNames, tokenValues)
LogMessage (NewString)

//結果: // INFO : C:\THIS IS A TEST



SDK マニュアル:XSIUtils.ResolveTokenString

※ SDKマニュアルに [Project] は [プロジェクト] とか日本語に翻訳されているけど、Softimage様は日本語が分からないのでこのまま使うと何もでてきません。

ユーザーガイドのトークンとテンプレートにトークンリストが書いてあります。