![]() |
アウトライナカラーは.outlinerColor では、アトリビュートエディタで行った操作のログからコマンドが推測できるか見てみましょう。 スクリプトエディタ内ヒストリ > [レ]すべてのコマンドのエコーを一時的に有効にします。(いつも有効だとウザイです) [レ]アウトライナカラーを使用を有効/無効にすると以下ログが出ます。 続いて色を変えてみたログです。
これで大体の感じはわかります。 cmds.getAttr とcmds.setAttrでアウトライナカラーの設定が有効か無効かが取得、設定ができるはずです。 で、アウトライナ色を設定しているであろうMelのAEoutlinerColorSetって何?と思う時は、 スクリプトエディタでwhatIsAEoutlinerColorSetって記述して実行し、コマンドを探します。 コマンドではなくスクリプトとして何処かのファイルに書かれている場合はそのファイルのフルパスが返って来ます。 ![]() に書かれているって返って来るのでテキストで覗いて見ます。 任意のテキストエディタで”AEoutlinerColorSet”という言葉で検索をかけると、以下の行が見つかります。
すると、なんだ、またcmds.setAttrでRGB値を設定してるだけやん、とわかります。 なのでpCone1のアウトライナ色を設定するにはたった2行です。
![]() [レ]オーバーライド有効化を有効/無効にすると以下ログが出ます。 続いて色を変えてみたログです。こちらはインデックスカラーの場合です。 試しにインデックスカラーをRGBカラーにしてみると4行目が表示されます。 (本当はもっといっぱい表示されますが、欲しい情報は以下の通りになります。他はGUIの設定等になります)
で、オーバーライド色を設定しているであろうMelのchangeObjColorとchangeObjLayerColorTypeは スクリプトエディタでwhatIsを打ってみると、実は同じファイルを見ていて、 C:/Program Files/Autodesk/Maya2017/scripts/AETemplates/AEdrawInfo.melを返します。 これは結構解くのか難しいのですが、結論を先に書きますとまたもやcmds.setAttrで設定しています。 そしてインデックスカラーの設定値は0~31の実数が有効範囲ですが、 デフォルトで表示の0はグレー色ではなく"色設定無し"という意味であって、1~31が色のある設定値です。 なのでpCone1のオーバーライド色を設定するにはたった3行です。(17番は黄色です)
![]() ここまで理解出来て、後は両方の色を同時に設定したい場合の対応ですが、 上図の通り、アウトライナ色の設定はRGBカラーがデフォルトで、オーバーレイ色はインデックスカラーがデフォルトになっています。 そこで、インデックスカラー値を指定したらコマンドではアウトライナをRGB色値に変えて設定する、にしたいと思います。 幸い、colorIndexというコマンドがあり、インデックスカラー番号を指定するとRGB値を返してくれるようになっています。 ■colorIndex http://help.autodesk.com/cloudhelp/2017/JPN/Maya-Tech-Docs/CommandsPython/colorIndex.html なのでpCone1のオーバーライド色用のインデックスカラー値からアウトライナ色を指定してみると、こうなります。 (インデックスカラー17番は黄色ですが、RGB値に変換した値をプリントすると(1.0,1.0,0.0)と黄色になっています。)
![]() |
アウトライナのウィンドウについて 既に公開しているカスタムグラフエディタやカスタムハイパーグラフと同様に、カスタムのアウトライナもWindowの中にPanelを作ってOutlinerを表示しますので、複数表示が可能になります。 コマンドを調べてみるとアウトライナは、outlinerEditorというコマンドがあり、Python例の部分を見るとばっちりサンプルが載っています。 ■outlinerEditor http://help.autodesk.com/cloudhelp/2017/JPN/Maya-Tech-Docs/CommandsPython/outlinerEditor.html
![]() Maya 2016から追加された色を変えられるオプションで、Maya 2016以前のMayaのバージョンで実行するとエラーを起こします。 なので、ツール起動時にMayaのバージョンを調べMaya 2016以前だった場合はこの行の無い方で設定し、 更に注意文を表示するようにしました。 そして、上記サンプルで注目すべき点は、アウトライナはscriptedPanelではなく、専用のoutlinerPanelを使用しているところです。 ■outlinerPanel http://help.autodesk.com/cloudhelp/2017/JPN/Maya-Tech-Docs/CommandsPython/outlinerPanel.html グラフエディタもハイパーグラフもscriptedPanelでしたので、新たなパネルです。 試しにscriptedPanelで記述してみると、、
最後の考察は、以前にも遭遇した、 複数のパネルを作成した後、Mayaビュー画面には表示していなくてもMayaシーンデータ的にはパネルがまだ残っていて、 どんどん溜まっていく~、という部分です。 ここは、getPanelのTypeで'outlinerPanel'を指定できるので、 表示していない(invisiblePanels=True)'outlinerPanel' があったら消す、にしますが、 慎重にTry文の中に記述しました。(最初からデフォルトとして存在する'outlinerPanel1'は例外扱いにします。)
|
検索表示のフラット化 V4.0 ユーザ様からの情報で....、アウトライナーの検索機能を使うとその結果が階層の表示になっていて、 目的のノード名まで展開しないと見れないようになっているのはdisplayModeが"DAG"になっているから。 で、そのdisplayModeを"List”にするとフラットな表示になる、ってことを知りました。 この変更はコマンドで outlinerEditor を編集すればよいのですが、 ボタンを設定して任意に変更出来たら便利だと思い、その機能分を更新したいと思います。 Python3 対応のスクリプトとして公開いたします。<Maya 2026で動作検証しています。> ■outlinerEditor https://help.autodesk.com/cloudhelp/2026/JPN/Maya-Tech-Docs/CommandsPython/outlinerEditor.html -displayMode(dm) Listモードでは、インデントなしのフラットなリストになります。 DAGモードでは、インデントされ、モデルの階層構造が表示されます。 ということで、まずはGUIとして下の欄に”FLAT”というボタンを追加してみます。
![]() もう一度”FLAT”ボタンを押すと元の色と元のdisplayModeに戻るようにします。
カスタムのアウトライナーは複数表示できますが、操作したFLATボタンのあるアウトライナーにだけ反応して、検索した(以下例;Right)結果をフラットに表示します。 ![]() |
CustomOutliner.pyと既知の制限・注釈 という訳で皆様のリクエストのカスタムアウトライナのツールを公開します。 (Pyファイルはシェルフにボタン登録するか、プルダウンメニューに登録して実行します。) あくまでも自己責任でお使いください。Use as your own risk.
|
次回も Mayaスクリプトの予定・・・ 乞う、ご期待!!Stay tuned..
|