ON-BLOG

CGのこと、あれこれ書いてます。

XSIユーザーから観たMELスクリプトについて 其の二十一

ではここからはサイトに書いてある、
コマンドをしてみます。
以下MELコマンドの説明。

currentUnit -q -linear

長さの確認です。
センチとかミリとかですね。
SIではこの単位がSoftimage単位?
って言われ、定義は各々がすることになっていますね。
一応デフォルト状態で、グリッド一個で10センチ(ミリ、メートルなんでも可)
としてます。このグリッドの大きさはこんな感じで取得できます。

Logmessage(GetValue("Camera.camvis.disustep"));
Logmessage(GetValue("Camera.camvis.disvstep"));

今回はカメラビューのみ変更しています。

currentUnit -q -angle

角度の設定確認ですね。
デフォだとラジアンみたいです。
SIは基本というか変換噛まさない限り
ラジアンなんで設定自体はないですが、コマンドこれです。

XSIMath.RadiansToDegrees( rad );

これめちゃくちゃ使いますね。


currentUnit -q -time

時間の単位確認できますね。
デフォはフレーム。

SIではフレーム以外変更できないんですね。

about -cd            
about -ct

現在の日時取得と現在の時刻を取得できます。
これSIだとJsの関数使ってますね。

date = new Date();
year = date.getYear();
month = date.getMonth() + 1;
day = date.getDate();
hours = date.getHours();
minutes = date.getMinutes();
second = date.getSeconds();

new Date();で日時のオブジェクトを作成し、
それぞれを取得します。

currentTimeUnitToFPS

FPSを取得できます。
SIではこのフレームレート自体は取得できないんですが、
(ありますか???)
表示することで確認できます。

SetValue("Camera.camvis.vsyncinfo", true, null);

次、

commandEcho -state on

全ての操作をログに残せるみたいです。
ただこれONにするととてつもなくログが長くなるので注意が必要です。
ってかこれSIにも欲しい。
ログでないんのん多いんですよね。。

次MAYA外のファイル名を変更できるコマンド

chdir "D:\images"
for($i = 100 ; $i >= 1 ; $i--)
	{
		$old = "test.iff."+ $i;
		$new = "test.iff."+ ( $i + 30 );
		sysFile -rename $new $old;
	}	

なんでかファイル操作ですねww
こんな感じらしいです。
「 test.iff.1 から test.iff.100 までの画像ファイルを test.iff.31 から test.iff.130 に番号を付け換え」
ツール使いますよね普通w
SIというか、Javascript(Jscript)ではこんな感じですかね?

var ObjFSO = new ActiveXObject( "Scripting.FileSystemObject" );
var objFolder = ObjFSO.GetFolder( "D:\images" );
var em = new Enumerator( objFolder.Files );
var i = 31;
for( em.moveFirst(); !em.atEnd(); em.moveNext() )
	{
			var Name = em.item().Name;
			var Index = Name.lastIndexOf(".");
			var Extention = Name.substring(Index); 
    		var BaseName = ObjFSO.GetBaseName(em.item());
    		em.item().Name = BaseName + i + Extention;
    		i = i + 1;
	}
ObjFSO = null;

これなんとかいけるかも。。
ただ、これ名前と拡張の間に番号入れてるだけなんで、
一回実行した後もっかいすると、
Test31.js→Test3131.js
になってしまいますw


workspace -lfw

現在アクティブなプロジェクト名とフルパスを取得
これSIだとめちゃ使います。

Logmessage(ActiveProject2.Path);
Logmessage(ActiveProject2.Name);

こう見るとMAYAは色々コマンド少ないっすね。。。

workspace -q -act

現在のプロジェクト名のみ取得
SIだと上とほぼ一緒です。

Logmessage(ActiveProject2.Name);

次、

workspace -q -rd

フルパスを取得
これも一緒。

Logmessage(ActiveProject2.Path);

次、

file -q -shortName -sceneName
file -q -sceneName

現在のシーン名とシーンパスを取得
SIだとプロジェクトとほぼ同じです。

var Project = ActiveProject.Path;
var Scene = ActiveProject.ActiveScene.name;
Logmessage(Project+"\\scenes\\"+Scene);

すみません。
今これしか出て来ません。
なんかあったんはずなんですが。。

about -v

MAYAのバージョンを取得
これ使うのかな?
まぁSIだと

LogMessage( Application.Version() );

次、

about -os
about -nt

OSを取得
windowsかどうかを取得(Bool)
SIにはリナックスとWINのビット確認しかできません。
まぁSIにMAC版無いし。

LogMessage(Application.Platform);

次、

getenv MAYA_LOCATION

MAYAがインストされているパスを取得
SIだとこんな感じ。

Logmessage(InstallationPath(siProjectPath));

とりあえずこれだけ。
まだあるんで、続きはまた。。


では…