mbとma

前サイトの記事転載

Mayaには mayaAsciiとmayaBinaryの2種類の保存形式がありますが、どちらをどう使ったらいいのかわからずに なんとなくこっち という風に、使い分けをしないでつかうケースが多々あります。
ですが、この無意識に使っている保存形式ですが、
アスキー形式・バイナリ形式の意味と利点・欠点を理解していると、無駄な時間を減らして より効率よく作業することができます。

続きを読む

FaceRobotとMayaの連携

前サイトの記事移植

Softimageにデフォルトで搭載されたフェイシャル用のRig・AnimationキットFaceRobot。

いろいろとググって調べてみたものの、Mayaとの連携についてはあまり出てことなかったので 手順を書きつつ私なりの感想を書こうと思います。
なお、私はMayaメインでsoftImageはほとんどちゃんと触ったことがないというLvなので、SoftImageユーザーからしたら ちがうwww という点もあるかと思いますが、そのへんはご了承ください。
できれば突っ込んでもらえると嬉しいです。
続きを読む

faceRobotとMaya

faceRobotとMaya記事更新。
文字のみであれな記事ですが、MayaのデータをSoftimageに持って行ってFacerobotでセットアップして戻すまで一通り流れを書いてみました。
と言っても、基本MayaユーザーなのでSoftimageはSCすらサッパリわからない私なので ちげーよwとか勘違いがあるかもしれませんがお許しを。

とりあえず触ってみての感想。

お気軽・お手軽のフェイシャルセットアップ アニメーションツール。

・フェイシャルどうしようと困っていて、Softimage買う金がある人
・ものすごい量のリップシンクをつけなきゃいけなくて困ってる人
・フェイシャルキャプチャーをやる人

にはオススメ。
主にゲーム業界向けな感じです。
逆に、デメリット

・mayaへのExportはあくまでも補助的な物 アニメーションを1からMayaで付ける とかは無理とおもっていい
 使うにしてもRigのコントローラーを増設しないと無理
・あくまでも顔のみのセットアップなので、顔以外は対策が必要
・ワークフローが複雑化する

顔はお手軽といいつつ、体に乗せるのとかもMayaメインだとしたら一工夫必要だし…楽しいには楽しいし、導入も手軽だけど…現状、楽しいね!どまりかな。

むしろ同じ会社なんだからMayaにもFaceRobot積んでください 無理だろうけど。

mayaPython __file__ とsys.argv[0]

CGのテクニカル屋志望日記っぽく、Pythonで書いてて気になったことを自分のメモをかねて記事UP

pythonで、自分自身のパスを書く場合、

__file__
または
sys.argv[0]
で、書くことができます(同じ内容が帰ってくる)が、MayaPythonの場合__file__は、ファイル自身のパスを。sys.arvg[0]は、Mayaの maya.exeのパスを返してくる という違いがあるようです。やや注意が必要。

あと、この__file__の『自分自身』のパスを というのが、実体なのか実行している.pyなのか気になったので確認したところ、
パッケージ内の関数に__file__があれば、そのパッケージの.pyのフルパス
パッケージ内のクラスの中、クラスのメンバ関数内に__file__があれば、そのクラスの.pyのフルパス
が帰ってきます。基本 __file__ が書かれている .py のパスが呼び出されるようです。

あくまでも、自分自身(.pyファイルの)パスが帰ってくるため、MayaのScriptEditorで print __file__ をやっても、「そんなもんねーよ!」と怒られます。

そんなこんなでPythonとMayaPythonで帰ってくるものが違うので気をつけましょう。

Maya Python環境をつくろう

MayaでのスクリプトはMel一択だった私ですが、Melの制限 とくに変数の自由度の無さと、関数の戻り値とかの制限の多さに いい加減嫌になってきたので、完全Python化に乗り出しました。

といっても、自社コマンドがMelだと 色々とすり合わせが出来なくて歯がゆい事になってたので
もう、いっそのこと1からPythonで作り直したほうがよくね?
にいたり、1日2時間ぐらいづつかけて ちまちまコマンド書き換えしていくことにしました。
本当は1ヶ月ぐらいそれに集中したいところではありますが、プロダクションワークやら他の書き仕事もあり 時間ができたときにまとめてやる なんぞ、永遠に来ないのはアタリマエのこと。
一応、そのまま翻訳して 一対一でコマンドつくろうかとも思ったのですが、それだとあまり意味が無いので
再設計して、整理して使えるように整備する なおかつ、プログラムにとっつきにくいひとでも手が出せるように整備する…までやろうと思います。
もともと、人が作ったものをただ使っていることに 非常にもどかしさとむず痒さがあったので それをなんとかするいいきっかけなのかなと思います。
人のつくったフレームを 自分なりに再構築するっていうのは、武者修行としては最適です。
終わる頃には、私自身のスキルの階段を 何個か登れるんじゃないかなぁとおもいますが 果たしてどうなるのやら。

珍しく、サイトのPython記事にまとめを書いてみました。
何番煎じだよwwwwな記事ですいません。はい。
http://flame-blaze.net/reincarnation/MELandPython/pythonMemo/pg204.html

個人的に思う、CGの勉強順序

専門学校だと、当たり前のように モデリング→アニメーション→エフェクトとか みたいな順序で授業が進んでいると思うけれども、
スクリプト(Mayaの内部基礎を覚えるため) → アニメーション → セットアップ(Expression) → モデリング のほうが理想の順序じゃないかなと思います。

理由は色々とあります。

特に人体モデリングをする場合の話ですが、アニメーションやジョイント配置を知らずにモデリングをすると、アニメーションさせたときに綺麗に曲げられるモデルが想像できないと思うんですよね。
もちろん、教えてもらいながらやればわかるかもですが やっぱり自分で動かしたほうがよくわかります。
なおかつ、人が作ったモデルを動かすことで メッシュの観察にもなります。
どういうふうに割られていて、どう曲がっているのか そう言うのを学ぶ意味でもアニメーションからやる意味って大きいです。

そのつぎのセットアップ。
行程的にはアニメーションの前作業で、アニメーターができたほうが良いスキルの1つではありますが
これも基本アニメーションを一度学んでからやるととっつきやすいものです。
アニメーション作業で「どう動かしたいのか」「どう動くと効率がいいのか」を知らないとセットアップはできません。
学生時代に、モデリングやった後にアニメーション前にちょっとセットアップをやったけれども 正直言って全くわかりませんでした。
動かしたこともないのに手順だけ説明されても混乱するだけです。無理です。

今まで疑問に思ったことがないけど、なんで専門学校ってモデリングからの授業になるんだろうなぁ

Scriptsを組み立てる

この間、仕事中にスクリプトをどう組み立てるのか?どう考えるのか?ということを少し説明する機会があったので
せっかくなのでそれをBlogのネタにしてみます。

といっても、私自身はまだプログラマとしてはヘボなので高度なクラス設計などはできないので
デザイナーだけど、スクリプトを勉強してみたい けど、どうやっていいのかわからない
ぐらいの人向けのメモになります。はい。

1 まずは手でやってみる
Mayaは、基本手で作れるものはすべてコマンドに書き起こすことができます。
ノードを作り、名前をつけて、値をセットして、別のノードにコネクトする…等々。
そういった、自分が「こうしたい」というものを まず1つ手でつくって 必要な要素を整理してあげます。

この時に重要なのは、この「整理」する という箇所。
ただ闇雲につくって とりあえずできたが、もう一度同じ手順をやるのは無理だ というのでは意味がありません。
「どういう順序で」 「なにをするのか」
これがとにかく大切です。

2 順序を文章で書き起こす
次に、1で手でやってみたものを どういう順序でやったのか紙なりテキストエディタに書いていきます。
例えば、
ちょっと前に書いたLightLinkerバグを解消するコマンドを書く場合

1 シーン中のLightLinkerノードをリストする
2 ノードのロックを解除して、ノードを削除する
3 2を、1でリストした分繰り返す

のような感じに(いわゆるフローチャートというやつです)

私は、簡単なものだと文章に書き起こしたりはしないのですが、面倒な物や 細かい関数を作ったほうがいいものなどは基本今でも紙に書き起こします。
書き起こすと、手でやったときの 「どういう手順で」「なにをするのか」が明確になりますし
何が頭の中で整理されていないのかがはっきりします。
私だけかもですが、この段階で整理して書き起こせないものはスクリプトで書くことは不可能です。

スクリプトは、自分がやりたいことをコンピューターにやらせるための便利な機能ですが
コンピューターは「やりたいこと」を読み取って勝手に動いてはくれません。
なので、個人的には この「文章で書き起こす」工程がスクリプトを書く上での一番重要な部分だと思っています。
理想は、難しいのでも書き起こさずに脳内で完了できればいいんですけどね。

3 実際に書いてみる

あとは↑で書いた順番をスクリプトのコマンドに置き換えていけば完了
覚えておくべきことは、

for で繰り返す
if    で、判定する
ls でリスト
select で選ぶ

ぐらいで、基本Mayaのデフォルトで備わってるコマンドは書くときに調べます
substitute と tokenize の引数の順序とか覚えていられないですし、 xformのオプションなんて覚えられません
大切なのはどうやって調べるかであって、コマンドを暗記することではないわけです。
(ls select setAttr getAttr connectAttr substitute tokenize の機能ぐらいは知っておいたほうがいいかもですが)

はじめは時間がかかるかもしれませんが、この工程を繰り返していけば
少しづつですが書くスピードもあがるし、考えるスピードも早くなります。

ことデザイナーにしてみれば、スクリプトは難しい取っ付きにくい分野になりがちなのですが
書けないにしても読める、書き換えができる ぐらいは出来たほうが良いと思うので、苦手意識を持たずに手を出してみてほしいなぁと思います。

最近知ったMayaの事

Mayaを覚えてからずいぶん立ちますが(専門時代も入れれば5年?)今更知った事。

1 Mayaのビューのレイアウトを保存できる

普段、アニメーション作業時は3面(上がレンダリングカメラ・Perspカメラ、下がグラフエディタ)
その他作業のときは4面にしてるんですが、いちいち↑の3面にするのが面倒だったのでMelでビューの切り替えコマンド書いて切り替えてました。
まぁ、コマンドでかいても結果同じですが レイアウトのコマンドって分かりにくいので手軽に登録できるのを知ったときにはかなりショックでした。
コマンド洗いだした私の努力を返せ ウワーン

2 1つのジオメトリに対して複数のコンストレインをすることができる

+  LocatorA

+  ←AとBにPointConstraintしたLocator

+  LocatorB

複数コンストレインをすると、コンストレインした間にLocatorは位置する
これも知らずに↑のように中間地点にいるLocatorを作成するとかをExpressionで全部書いたりした気がします。

他の人と話をしていると、あたりまえのように作業で使っていることでも そんなことしらねーwwwwってことが結構あるんですが、↑のはかなり衝撃でした。
まだまだ知らないこととかいっぱいあるんだろうなぁ

ノードに名前をつける つけない?

Mayaのデータを見ていて最近非常に気になるのが、シーン内の整理と名前付け。
私も面倒くさいので、ちょっと気を抜くとノードの名前付けをサボって Joint1だとかpSphere1だとかlocator1のような名前がずらーっと並び、カオスなことになってしまいます。

単純なシーンであれば、多少名前がカオスになっていても問題ないのですが、スクリプトを通したりするとなると話は別で、いろいろ不都合がでてきます。

Mayaは同じ階層には同じ名前をつけることができませんが、親子の階層が分かれていれば同じ名前をつけることができます。
その場合、ファイルパスと同じように ノードの名前は同じでも
group|node|joint1
のように スクリプト的には↑のようなパスがノード名と扱われてしまいます。
そうなると、コード的には joint1 なのに、一致しない あるいは 同じノードが複数あります といったエラーに繋がってしまうのです。

スクリプトを使わないとしても、オブジェクトが多くなれば多くなるほどどれがどのオブジェクトかわからなくなってしまうので、自分の作業をしやすくする意味でも ある程度名前づけはしておいたほうが良いです。

とりあえず、ものすごい簡単なリネームコマンド

選んでるものをまとめて引数に与えた文字列+ _数字 にリネーム

global proc selectRename(string $rename){

string $selection[] = ls -sl -fl;

int $i = 1;

for ($node in $selection) {

rename $node ($rename + “_” + $i);

}

}

あけました

さようなら2010年 こんにちわ2011年

電車の中でを年をこし、新年おきたら昼過ぎで家族全員でかけてるという まったくもって正月らしくない1日から始まった2011年
みなさまどうお過ごしでしょうか。

とりあえず、私なりの2011年の抱負

・体力つける
冗談抜きで最近体調が思わしくないのと、すぐへばってしまうので体力つける 元気になる

・Mayaのプラグインをかけるようにする
師匠にコンパイル方法やら、基本的な構造やら考え方を教えてもらったので いい加減プラグインをちゃんとかけるように勉強します。
スクリプトはほぼ問題なくかけるんだけど、プラグインかけないとできることには限度があるからね。
そろそろ基礎は終わり、これからは自分の手足となる土台を作りつつ、できるこの幅を広げる

・英語少しはできるようにする
次のシーグラフ(カナダ)に行く予定なので、それまでには多少なりとも英語への耐性をつけたい といってもリスニングとかぐらいしかできないけど。

社会人になってからの1年は、学生のときにくらべて一年後との変化はあんまりないですが
その中でも、自分なりに1つ1つ階段を上って、成長していけたらなと思います。

さて、はたしてこのなかでどれだけ目標は達成できるのかな。