浅科米子(仮名)の欲張りブログ

浅科米子(仮名)の欲張りブログ

ゲーム会社デザイナーがXSI、Mayaの超初歩的スクリプト研究、html・xml研究、ドット・お絵かき研究する雑多なブログです。

その名のとおり欲張って色々な知識を深めよう!という、いつまで続くかわからない飽き性が綴るメモ帳なのです。

Amebaでブログを始めよう!
Photoshop CS2ではドキュメントの複製時に名前が指定できないのかよ!
ということで無理やり作ってみた。

1.すでにpsdとして保存されている場所にtgaを保存
2.保存されたtgaの名前をpsdと同じ命名に修正

以上。

[疑問点]
・saveするときに名前の指定はできないのか?
・activeDocumentのドキュメント名は修正できないのか?
・melでいうbasenameEXのような拡張子を除いたファイルネームが取得できるコマンドないの?
・もっときれいに書けないのか?

--------------------------------------------------------------------

oPath = activeDocument.path;
oName = activeDocument.name;

oNewName = oName.split(".");
activeDocument.duplicate();

//tga保存始めるよ
activeDocument.flatten();
oChSize = activeDocument.channels.length;

tgaSaveOptions = new TargaSaveOptions();
tgaSaveOptions.alphaChannels = 1;

if(oChSize == 3){
tgaSaveOptions.resolution = TargaBitsPerPixels.TWENTYFOUR;
}

else if(oChSize == 4){
tgaSaveOptions.resolution = TargaBitsPerPixels.THIRTYTWO;
}

activeDocument.saveAs(oPath, tgaSaveOptions, false, Extension.LOWERCASE);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);

//保存したtgaの名前から" のコピー"を取り除く
srcFilename = (oPath + "/" + oNewName[0] + " のコピー" + ".tga");
newFilename = (oNewName[0] + ".tga");
srcFileObj = new File(srcFilename);
srcFileObj.rename(newFilename);

--------------------------------------------------------------------


Maya 2009でバッチベイクのウィンドウが立ち上がらない不具合と解決方法


【不具合の発生条件】
・Maya 2008以前の日本語版ユーザープリファレンスファイルをMaya 2009に移植している
・Maya 2009で日本語版を使用している


【不具合の内容】
レンダリング > ライティング/シェーディング > バッチ ベイク(mental ray)のオプションを選択するとエラーが表示され、ウィンドウが立ち上がらない


[エラー内容]
// エラー: file: C:/Program Files/Autodesk/Maya2009/scripts/others/mrBake.mel line 927: 項目が見つかりません: 選択範囲 //


【不具合の原因】
バッチベイクオプションウィンドウ内の日本語メニュー名が変更されたため

Maya 2008以前:バッチベイクオプションウィンドウ内の「ベイク処理するオブジェクト」が「すべて」「選択範囲」
Maya 2009:バッチベイクオプションウィンドウ内の「ベイク処理するオブジェクト」が「すべて」と「選択項目」


【解決方法】
1. Maya 2009を終了させる
2. My Documents\maya\2009\ja_JP\prefs\userPrefs.melをテキストエディタで開く
3. 「選択範囲」で検索し、「選択項目」に書き換え、上書き保存する



---------------------------------------------------------------------------


なぜメニュー名を変えた・・・

勘弁してくださいorz

スペック書くのが面倒で、作業環境がまだ完成してません。

なので今回の記事を書くにあたってちょっと前提を置かせてもらいます。


・ゲーム制作なのでデータ管理に厳しい

・インタラクションモードはQWERTYツールとAltカメラナビゲーション

・家ではModTool6.01使用(レイアウトはデフォルト)


---------------------------------------------------------------------


もともと私はMaya使いなのですが、今年の3月からXSIの仕事をしています。

MayaからXSIに移行して最初に躓いたところ。


ピボットの概念が全然違う!


Mayaだとdキーを押してオブジェクトの中心軸自体を動かし、Center Pivotで真ん中に戻すという作業をしていたのですが、

XSIだと、dキーを押すとピボットがずれる。しかしオブジェクトのセンターは真ん中のまま・・・


どういうことだ!?と、Mayaから移行してきた人は思うのではないでしょうか。

そこで私なりの考えを記しておきます。(間違っていたら教えてくださいあせる


3D作成ツールには、オブジェクト自体が持つ中心軸、オブジェクトを移動、回転、スケールさせるための中心となる変換軸とがあり、


Maya→中心軸変換軸がdキーで同時に動かせる

XSI→中心軸とdキーを使う変換軸は別々の働きをする


ということなんだと思うのです。

Mayaしか触っていなかった私は、中心軸と変換軸は同じものなのかと思っていました。

なので、最初はXSIの仕様に慣れず、イライラしていました。


では、Mayaから移行してきた人がXSIでうまくピボットを使うにはどうすればいいのか!?


1, Mayaと同じようにdキーを使って変換軸のみを動かす。

変換軸を中心軸と同じ位置にもって行きたいときは

Explorerなどでオブジェクトを展開し、kinematics>Local Transformをダブルクリックしてオプションを開き、ピボットタブの中のピボットコントロール>ピボットのリセットを押します。


2, XSIの仕様にのっとって中心軸のみを動かす。

なにせ中心に戻すというコマンドが中心軸のものしかないので、もういっそ変換軸には触らない。

右上矢印ボタン横のセンターを選択し、変換の中心にしたいところへ動かすだけ。

元の位置に戻したいときは、オブジェクト選択中にTransform>センターをバウンディングボックスに移動を実行します。


ただし、1,の方法はQWERTYモードではバグがあるらしく、たまにピボットのリセットがうまくいかなくてずれてしまうことがあるらしいです。(XSI5.0だったかな。今は直っているのかも。)

私はまだその症状に出会ったことはないのですが、それを聞いてから少し怖いので2,の方法を取っています。

どちらも手数とカーソル移動が多いので、面倒ですね。

私はスクリプトを使っていますが、それがなかったら・・・と思うとぞっとします。

だって、面倒くさがりなんだもん!


1,と2,どちらの機能を選択してもラクチン1ボタンになるスクリプトを作ってみたいですね。

前回の記事ではわざわざコマンドを調べていましたが、なんともっと簡単にやる方法がありました・・・


var oSelList = GetValue("SelectionList");
var oGetParent = oSelList.parent;


logmessage(oGetParent);


なるほど、1行目で取得したオブジェクトリストに.parentをつけることで、選択したオブジェクトの一つ上にある親ノードの名前を取得できるんですね~。


昨日の記事との違いは何だろう。

明らかに今回のやり方のほうが感覚的に理解しやすいので使いやすそうですけどね~




ところで、「オブジェクトの一つ上にある親ノード」って何かいい表現あるんでしょうか?

よく、"子供の子供"のノードのことは"孫"っていいますけど・・・

じゃあ、「オブジェクトの一つ上にある親ノード」は、祖母!?



この機能はあとでスクリプトを作るときに使いますよ~!

こんなんでどうでしょうか!?

もう、ログで思い通りに行っても本当にコレであっているのかどうかもわからない状況ですw汗



var oSelList = GetValue("SelectionList");
var oGetParent = NavigateNode( oSelList, siParentNode);


logmessage(oGetParent);



とりあえず、基本はわからないことがあったらScript Editorに入力→調べたい文字をドラッグしてボタンを押すってことくらいまでは学びましたw


これも、たしかオブジェクト選択>↑キー押して親選択でログ表示される、


SelectNeighborObj("cube", 0, "NODE", false);

からSelectNeighborObjをマークしてボタンを押し、ヘルプに飛ぶ>説明の欄にソレっぽい記述があるから飛んでみる

でたどり着きました。

あってるかな!?


家だと日本語ヘルプがあるのですが、会社だと英語ヘルプしかなくて調べるのにも一苦労。

本業はモデラーなので、スクリプトはちまちま家で勉強するしかないかな~。