読んで触ってよくわかる!Mayaを使いこなす為のAtoZ第80回:アトリビュートの付属情報を使いこなそう!2019.10.17ツイートMayaゲームスクリプト・APIチュートリアル中級者addAttrコマンドでアトリビュートを作る時、doubleやfloat3などのアトリビュートの型を気にしながら作りますよね。実はそれ以外にも付属の情報というものがあるのにお気づきでしょうか?設定しなくてもMayaは動きますが、設定しておくとなにかと便利で、Mayaの動きに統一感が出ます。今回はそんなアトリビュートの便利な設定について見ていきます。(使用している画像が間違え探し並みに同じような画像ばかりですが、よく見るとスクリプトとアトリビュートエディタの内容が違いますので、よしなに。)うすうす気づくカラーの設定マテリアルの様にカラーのアトリビュートを作りたい時どうしていますか?とりあえずlambert1のカラーを変えてみて、スクリプトエディタに何が表示されるか見てみましょう。次のように表示されました。して値が設定されています。いうことは、カラー値はdouble3で作られているということです。次のようにaddAttrをdouble3で作成すれば、カラーのアトリビュートを作成できるはずです。Colorと表示されました。フィールドが出てきません...。-dataTypeの代わりに-attributeTypeを使って次のように実行してみます。Attributesに何も出なくなってしまいました。おかしいなあと思い、addAttrのドキュメントを見てみます。-attributeTypeでdouble3を作ると「doubleのアトリビュートを3つぶら下げられる親が出来る」だけですので、子もそれぞれ追加しないといけません。次のようにしてRed/Green/Blueをdoubleとして追加します。"myColor";はい、無事にRGBのフィールドが出ました!めでたし、めでたし。次の内容に行きましょう...と、ここで安堵しては油断大敵です!なぜかマテリアルのようなカラーの四角が出ないですよね。これは何かおかしいです。実は、アトリビュートの付属情報によって、アトリビュートエディタに表示されるUIの種類が変わるのです!addAttrには-usedAsColorというフラグがあります。このフラグを追加することで、ようやく「色のアトリビュート」として一人前になるのです。次のように、アトリビュートに-usedAsColorフラグをつけて実行してみます。//はい、エラーが出ました。spectrumRGBを使いなされ」と出ています。Lambertにカラーを設定した時に出たsetAttrのdouble3に惑わされてしまいましたが、普通はカラーにはfloatを使う場合が多いので(doubleのような精度を求めない)、次のようにfloat3にして実行しましょう。(floatはMELのキーワードなので”で囲んで文字列にします。"myColor";ああ、めでたく無事にマテリアルのようなカラーの表示がされました。このように-usedAsColorを設定すると、アトリビュートエディタの見た目もいい感じになります。カラーサンプル、リンクのボタンもあります。ファイルをつなげるなど、自前で作成するのはとても大変なので、これは楽ですね。アトリビュートを足しただけでは「なにか表示が怪しいぞ」と気付けるかどうかが運命の分かれ目です。気づくファイル名の設定Fileノードではテクスチャのパスを設定できます。同じ様にファイルパスを設定するために文字列のアトリビュートを作りたいとします。次のようにして、polyCubeにstring型のアトリビュートを作ってみましょう。Fileという名前でテキストのフィールドが表示されました。ファイルのパスを指定するためのダイアログ用ボタンが無いです。自分で作らないといけないのでしょうか。ここで「Fileノードとなにか違うなー」とか「自分でファイルダイアログのボタン作るのは妙じゃないか」と感づいたなら、きっと次の瞬間にはaddAttrのドキュメントを開いていることでしょう。アトリビュートの情報には-usedAsFilenameというのがあります。これを設定すると、アトリビュートがファイル名として扱われます。pCube1;きちんとダイアログ用のボタンが表示されました。ボタンを押せばファイルダイアログが出て、ファイルを選べばフィールドに入力されます。(ダイアログには画像ファイルのフィルタが付きます。)しかも他にも恩恵があります。「D:/test」など書いてエンターキーを押すと、自動的に見た目が「D:\test」となります。逆に「D:\test」と書くと、アトリビュート値としては「D:/test」に変換されます!こうして追加の情報を設定したアトリビュートは、後からアトリビュートを見つけるときにも便利です。listAttrでアトリビュートをリストアップする際、-usedAsFilenameフラグを使うと、ファイル名として使われているアトリビュートのみリストに出来ます。//GUIの見た目も良くなるし、情報を集める時も便利になるし、至るところで恩恵がありますので、ぜひ適切にアトリビュートの設定を行ってください。2016.5あたりから、addAttrには-proxyフラグが追加されています。これもアトリビュートの付属の情報です。普通はアトリビュートが二つあって、それぞれを接続すると、接続元だけ編集可能になります。-proxyフラグを設定すると、アトリビュートが双方向で編集出来るようになります。次のようにトランスフォームを3つ作り、master、ctrlA、ctrlBとします。それぞれにswitchというアトリビュートを作ります。ctrlA、Bにアトリビュートを作るときには-proxyフラグを使い、master.switchのプロキシとして作成します。$ctrlB;図のように3つのトランスフォームが作成され、それぞれにswitchというアトリビュートが出来ます。switchアトリビュートにコネクションが作成されています。どのswitchの値を変えてもお互いに値が変更されます。-proxyフラグを使うと何が起きるかというと、アトリビュートに「プロキシとして使うかどうか」が設定されます。次のように照会するとusedAsProxyが設定されていることがわかります。//さらに挙動の詳細をご紹介します。いずれかのswitchアトリビュートに値が設定されると、Mayaはアトリビュートの接続情報を確認します。普通であれば接続の入力・出力の関係があるので、出力側で値を設定することは出来ないのですが、usedAsProxyが設定されている場合は上流にさかのぼって値を変更します。キーフレームを打つと面白い結果が見られます。ctrlBにキーフレームを打つと、次のようにさかのぼってmaster.switchにキーが打たれます。この様に、何かあれば一番上流側のアトリビュートにさかのぼって値の変更やキーフレームの操作を行うことで、相互編集を可能にしています。switch間の接続を削除するとどうなるのでしょうか?ctrlA、Bのswitchアトリビュートには依然としてusedAsProxyが設定されているので、接続を作るとまた双方向でやり取りできる接続が作られます。ctrlB.switchとつなげると、visibilityとswitchが双方向の接続となります。ちなみに、usedAsProxyはaddAttrから後で設定できないためAPIを介して変更することになります。次のコードでは、ctrlB.switchのusedAsProxyをオフにしています。以後接続を作ると、普通の一方向の接続になります。Falseまとめ今回は「usedAsColor」「usedAsFilename」「usedAsProxy」という3つのアトリビュートの設定について見てみました。数値の方だけでなく、これらの設定をうまく使うことでより快適にMayaを使いこなせることがおわかりいただけたのではないでしょうか?しれーっと触れなかった、-attributeTypeと-dataTypeの違いについて軽くご紹介しておきましょう。-dataTypeでdouble3など子のあるデータを作っても、アトリビュートとしてはdouble3という一つのアトリビュートになります。-attributeTypeは、アトリビュートの追加の裏で色々とアレコレMayaが行っていますので、通常はユーザにとって使いやすいアトリビュートとして作成されます。今回のように、どうしてもエラーなどがでて、どちらかのタイプしか使えないということもありますので、臨機応変に使い分けしてもらうのが良いです。/月(税込)*サブスクライブする(購入)*上記価格は年間契約の場合の1ヶ月あたりのオートデスク希望小売価格(税込)です。学生向け無償版Mayaを無償でご利用できます。無償体験版Mayaを30日間無償で体験できます。/月(税込)*サブスクライブする(購入)*上記価格は年間契約の場合の1ヶ月あたりのオートデスク希望小売価格(税込)です。30日間無償で体験できます。30日間無償で体験できます。製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。