チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第105回:Display Layerの中身をGUIで確認する方法

  • Maya
  • UI・ビューポート
  • ゲーム
  • コラム
  • スクリプト・API
  • チュートリアル
  • 初心者・学生
第105回:Display Layerの中身をGUIで確認する方法

ええ。まあ、そうですね。
最近のコラムはタイトル画像にやたらと猫が出てきているなあと、気づかれた方もいるでしょう。
猫を出せばクリックする、という浅はかな狙いに基づいてやっているわけですが、いっときの癒やしになればそれもよいかと。

アクセス数が増えたかどうかは定かではありません…。

さて、シーンにオブジェクトが増えると管理が大変になりますよね。
そこでDisplay Layerが活躍します!レイヤ分けして管理しやすくします。
でも作業が進むにつれて沢山レイヤが出来ます。レイヤ自体の管理も大変になってきます。

どこのレイヤに何が含まれているかわからなくなってきて、ときにはレイヤの中身をざっと見たい。
レイヤの中に含まれているものを確認するのに、みなさんどうしていますか?

簡単なのは、レイヤ上で右クリックメニューを出して[Select Objects]を選ぶ方法です。
レイヤに含まれるオブジェクトが全て選択されるので、とりあえず大雑把に確認できます。

Select Objects]を選ぶ

あとはHypergraphでレイヤに接続されているノードとして表示する方法もあります。

レイヤ自体を選択するのにはちょっとコツがあります。次のようにします。
1) レイヤ上で右クリックメニューを出して[Attributes]を選びます。Attribute Editorにレイヤが表示されます。
2) Attribute Editorの左下の[Select]ボタンを押します。これでレイヤを選択できます。

それから[Window > General Editors > Hypergraph: Connections]を開くと、こんな感じでレイヤに含まれるノードが表示されます。

レイヤに含まれるノードが表示されます

こういった方法以外にも、実はOutlinerの設定を変更するとレイヤの中身を確認できます。
今回はその設定方法をご紹介します。

Outlinerの設定を変更してレイヤを表示しよう!

よくよくOutlinerの設定の意味を考えて組み合わせてみれば、レイヤだけを上手く表示できるのです。
Outlinerのメニューから、次の手順で設定を変えてみましょう。

1) [Display > DAG Objects Only]をオフにします。
いつも見ているメッシュなどのオブジェクト以外にも、Display Layerノードなどあらゆる種類のノードが表示されるようになります。マテリアルとかアニメーションカーブとかも。

2) Display Layerを選択します。
どれでもいいです。上で紹介した右クリックメニューから選択する方法か、Outlinerから見つけて選択します。

3) [Show > Show Selected Type(s)]を選びます。
選択していたノードタイプのみ表示されるようになります。
つまりレイヤのみが表示されます。

レイヤのみが表示されます

レイヤの下位階層として、レイヤに含まれるものが表示されます!

別ウインドウとしてレイヤを表示するOutlinerを作る

今は普段使うOutlinerの設定を変えました。
いつもどおりのOutlinerとして使うために普通の状態に設定をもどして、またレイヤ表示にしたいときは設定しなおして…と繰り返すのはちょっと大変です。

次のようなスクリプトを実行すると、別ウインドウとしてオプション設定済みのウインドウを立ち上げられます。
Pythonスクリプトなので Script EditorでPythonとして実行します。

import maya.cmds as cmds

def displayLayerViewer():
    # ウインドウを作ります。
    cmds.window(t='Display Layer Viewer', w=250, h=400)

    # とりあえずフレームレイアウトで配置。
    cmds.frameLayout(labelVisible=False)

    # アウトライナパネルを作ります。
    panel = cmds.outlinerPanel()

    # フィルタを作ります。
    filter = cmds.itemFilter(byType='displayLayer')

    # アウトライナに諸々設定します。
    outliner = cmds.outlinerPanel(panel, q=True, outlinerEditor=True)
    cmds.outlinerEditor( outliner, e=True, filter=filter, showDagOnly=False)

    # ウインドウの表示
    cmds.showWindow()

# 関数の呼び出し。
displayLayerViewer()


下のようなウインドウが出来ます。

表示されたウインドウ

プラスアイコンを押せば、レイヤの中身を確認できます。
まあ簡易的なものですので、選択しているノードをFキーで展開して表示、というのが出来なかったり、上部についているテキスト検索を使うとフィルタ設定がリセットされて、レイヤ表示が解除されたりと、完全完璧な使い勝手というわけではありません。

追加でなにかすれば更に使いやすくなるかもしれませんし、ならないかもしれません。

独自のウインドウにOutlinerを表示しているので、なにかMayaに設定が残ることもないですし、とりあえずいろいろとカスタマイズしてみてください!

まとめ

Display Layerの中身を3つの方法で確認してみました。
Outlinerでレイヤ表示して中身を見ると結構便利です。レイヤエディタのような使い方は出来ないため、ユーザによってはフルカスタマイズして、独自にLayer Editor + Outliner を作っていたりします。
こんなふうにみなさんもMayaをどんどんカスタマイズしてみてください!

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。