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 の機能ぐらいは知っておいたほうがいいかもですが)

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

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