【maya python】 select をかんたん解説!

select コマンド解説
セミナーのお知らせ

10/2(水)のセミナーは終了しました。
受講いただいた皆様、ありがとうございました。次回のセミナーもお楽しみに!

CGWORLD +ONE Knowledge
【クリエイティブ時間を最大化】できる!はじめてのmayaPython②

https://tutorials.cgworld.jp/con/1997?from_category_id=48

こんにちは!ビーバー@ゲーム業界歴約20年python勉強中です。

初心者のための「かんたん解説」シリーズ!今回は「select」コマンドをカンタンに解説します。maya の pythonリファレンス、、実際に実行してみないと使い方わからないですよね(泣)

皆さんのために、私がかわりにお調べしておきました!こちらのサイトでは、pythonコマンドとそのフラグの動作を画像をつかって、デザイナ観点でわかりやすくまとめていきます。

専門用語は解説付きで説明しているので、サクッと読めますよ(約3分)それではどうぞ~!

>> Pythonの勉強方法を知りたい方はこちらをどうぞ

※当サイトで紹介する商品は、アフィリエイトプログラムを利用しています。

selectとは?

シーンのノードを選択するコマンドです。

ハムちゃん
ハムちゃん

ジオメトリだけじゃなくて、inputノードやセットなんかも選択できちゃうよ!

かんたんな使い方

cmds.select( "なんちゃら" )

「なんちゃら」に、ノードの名前を入れると、そのノードを選択できます。
例えば、pCube1 を選択するなら、、、

cmds.select( "pCube1" )
ピヨちゃん
ピヨちゃん

ボックス選択、完了ッ!

セットの選択

オブジェクトいくつかをまとめた「セット」を、selectコマンドで選択すると、
中身のオブジェクトが選択されます。

set1 を作ったところ
cmds.select( "set1" )

を、実行。

ピヨちゃん
ピヨちゃん

わお!「set1」自体は選択できないんだね。

ハムちゃん
ハムちゃん

そうなんだ。set自体選択したい場合は、フラグを使うんだよ。

この後、紹介していくね。

フラグを紹介!

flags


フラグを使うと、いろんな選択のしかたを指定することができます!

今回、containerCentric(cc)フラグの動作は確認できなかったので、
割愛させていただきます。

add

今選択しているものはそのままに、さらに追加選択するフラグです。

ハムちゃん
ハムちゃん

たとえば、ボックスを選択した状態のまま、球を追加で選択したいなら、、

cmds.select( "pSphere1", add=True )
ピヨちゃん
ピヨちゃん

おお!ボックスの選択解除せずに、球も選択できたね!

addFirst

このフラグを使って選択したものを、最初に選択したことにできます。

ハムちゃん
ハムちゃん

ボックスが選択してあるけど、addFirstフラグで球を先に選択したことにするよ!

cmds.select( "pSphere1", addFirst=True )
ピヨちゃん
ピヨちゃん

最後に選択されたものが緑色でハイライトされるから、、、
おお!球が先に選択されたことになってるー!

all

シーン内で、階層のトップになっているDAGオブジェクトと、
DGノード(削除可能なもののみ)が選択できます。

↓図は、メッシュとカーブがあるシーンで、コマンドを実行したところです。

cmds.select( all=True )
階層トップのDAGノードとDGノードが選択されました。
ピヨちゃん
ピヨちゃん

DAG と DG って何??

ハムちゃん
ハムちゃん

DAG(ダグ)は、シーンを構成するノードだよ。
たとえば、transform や ShapeノードはDAGで、親子関係でジオメトリをつくるんだ。
普段アウトライナで見えているノードはたいていDAGだよ。

アウトライナはデフォルトで DAGオブジェクトのみ表示の設定になっています
ピヨちゃん
ピヨちゃん

ふむふむ、、でぃーじー の方も教えて~

ハムちゃん
ハムちゃん

DGは、「ディペンデンシーグラフ」っていうよ。
こっちもシーンを構成するんだけど、ノード間でデータをいったりきたりできるのが特徴だ!
例えばポリゴンのinputノードがそうなんだ。

ポリゴンのInputノード「polySphere1」
ピヨちゃん
ピヨちゃん

↑オレンジ色のアイコンで表示されているものは、メッシュ関連のDGノードなんだね!

allDagObjects

シーン内で、階層のトップになっているDAGオブジェクトだけを選択します。

cmds.select( allDagObjects=True )
ピヨちゃん
ピヨちゃん

階層のトップだけ選択するから、子ども階層は選択しないんだね。
下の矢印が示しているDG( polyCone1, polyCube1, polySphere1 )も選択しないね。

allDependencyNodes

削除可能なDGノードを選択します。
例えば、↓このようなシーンで実行すると、、

3つのメッシュとカーブがあるシーンです
cmds.select( allDependencyNodes=True )
ハムちゃん
ハムちゃん

DGノードの polyCone1, polyCube1, polySphere1 が選択されたよ。
これは普段よく見るtransformやmeshではないことに注意だ。

clear

選択を解除します。(セットの選択も解除)

ハムちゃん
ハムちゃん

「set」自体の選択も解除できるのがポイントだよ!

cmds.select( clear=True )

deselect

選択を解除します。(セットの選択状態は解除できない)

ハムちゃん
ハムちゃん

複数のオブジェクトを選択した状態から、
ctrl + クリックして選択を外す操作のイメージだよ

例えば、複数選択状態から、ボックスだけをdeselectするときは、、、

cmds.select( "pCube1", deselect=True )
ピヨちゃん
ピヨちゃん

ボックスだけ選択解除されたね!
セットの選択状態は解除できない、っていうのは何?

ハムちゃん
ハムちゃん

セット自体が選択されている場合、deselectフラグを使っても選択解除できないんだ。

set1 を指定してdeselectしようとしたところ。選択が解除されない
ハムちゃん
ハムちゃん

セットは、noExpandを合わせて使うと選択解除できるよ!

cmds.select( deselect=True, noExpand=True )
set1 を選択解除できました

hierarchy

指定したDAGオブジェクトの階層下全部を選択します。
例えば、groupノードを指定すると、その下全部が選択されます。

cmds.select( "group1", hierarchy=True )

noExpand

セットだけを選択できます。

ハムちゃん
ハムちゃん

例えば、「set1」を選択したいなら、こう書くよ!

cmds.select( "set1", noExpand=True )

replace

指定したオブジェクトに選択を置き換えます。
例えば、複数オブジェクトを選択した状態で、ボックスのみ選択に置き換えたいなら、、

この状態で、ボックス選択のみに置き換えたい
cmds.select( "pCube1", replace=True )
ピヨちゃん
ピヨちゃん

置き換わったね!

GUIからボックスをクリックしたときと同じ動きなんだね。

symmetry

シンメトリ設定しているオブジェクトで、コンポーネントをシンメトリに選択できます。

ハムちゃん
ハムちゃん

オブジェクトの片側の頂点を指名すれば、両サイド選択できるすぐれものだよ!

例えば、↓図のようなシンメトリモデルがあるとして、(猫ちゃん?)
猫ちゃんの 向かって左耳の先端頂点 vtx[272] を
symmetryフラグで指定して選択すると、反対側の耳の頂点も選択できます。

cmds.select( "pSphere1.vtx[272]", symmetry=True )
ピヨちゃん
ピヨちゃん

おお、両耳の先が選択されたッ!

symmetrySide

シンメトリ設定しているオブジェクトの「片サイド、継ぎ目、非対称な部分」を
選択することができます。

またまた猫ちゃん登場。今度は非対称部分をちょっと入れてみました。

向かって右側の耳部分に、ポリゴンの分割をふやしています。

猫ちゃんの非対称な部分だけを選択する場合は、

cmds.select( "pSphere1", symmetrySide=-1 )

猫ちゃんの継ぎ目を選択するには、

cmds.select( "pSphere1", symmetrySide=0 )

猫ちゃんのサイド1部分を選択するには、

cmds.select( "pSphere1", symmetrySide=1 )


猫ちゃんのサイド2部分を選択するには、

cmds.select( "pSphere1", symmetrySide=2 )
ハムちゃん
ハムちゃん

このフラグはトポロジのシンメトリモデリングを設定しているオブジェクトにつかえるよ!

toggle

トグル選択ができます。

名前を指定したものが選択されていたら選択を外すし、
選択されていなかったら選択する、という動きになります。

例えば、メッシュ3つを選択した状態で、球と円カーブをトグル選択すると、、

cmds.select( "pSphere1","nurbsCircle1", toggle=True )
ピヨちゃん
ピヨちゃん

球は選択が外れて、円カーブは選択されたね!ボックスとコーンはそのままなんだね~。

visible

表示されているものだけを選択します。
名前指定したオブジェクトが非表示だった場合は選択されません。

例えば、ボックスが表示されている&球が非表示になっているシーンで、
両方をvisibleフラグありで選択すると、ボックスだけが選択できます。

cmds.select( "pSphere1", "pCube1", visible=True )
ピヨちゃん
ピヨちゃん

非表示の球は選択されていないよ!

まとめ

selectとは?
シーンのノードを選択するコマンドです。

かんたんな使い方
  • cmds.select( “なんちゃら” )
    でシーン内の「なんちゃら」を選択します
  • 「セット」をselectコマンドで選択すると、中身のオブジェクトが選択されます。
フラグを紹介!
  • add
    今選択しているものはそのままに、さらに追加選択する
  • addFirst
    このフラグを使って選択したものを、最初に選択したことにできます
  • all
    階層のトップになっているDAGオブジェクトと、
    DGノード(削除可能なもののみ)が選択できます。
  • allDagObjects
    階層のトップになっているDAGオブジェクトだけを選択します
  • allDependencyNodes
    削除可能なDGノードを選択します
  • clear
    選択を解除します。(セットの選択も解除)
  • deselect
    選択を解除します。(セットの選択状態は解除できない)
  • hierarchy
    指定したDAGオブジェクトの階層下全部を選択します。
  • noExpand
    セットだけを選択できます
  • replace
    指定したオブジェクトに選択を置き換えます
  • symmetry
    シンメトリ設定しているオブジェクトで、コンポーネントをシンメトリに選択できます
  • symmetrySide
    シンメトリ設定しているオブジェクトの「片サイド、継ぎ目、非対称な部分」を
    選択することができます
  • toggle
    トグル選択ができます
  • visible
    表示されているものだけを選択します
    名前指定したオブジェクトが非表示だった場合は選択されません
ハムちゃん
ハムちゃん

OK!これで select はバッチリだ!また読みにきてくれたまえい~☆

はじめてpython学習するなら!

はじめてプログラミングを勉強するとき、エラーはつきものですよね。
何時間もスクリプトが動かないこともしばしば。。
そんな時、くわしい人に教えてもらいたい、と思うことはありませんか?

侍テラコヤは、はじめてpythonを学習する方にピッタリのサービスです。
サブスク型オンラインスクールで、月¥2980~の良心的なお値段!

現役エンジニアのサポートが充実しており、
オンラインのマンツーマンレッスンとQ&A掲示板で即座に悩みを解決することができます

maya python基礎

本サイトの【まとめ】 maya python 基礎 入門!では、
10回シリーズでmaya pythonの基礎が習得できるコンテンツを発信しています。

  • ちまたのスクリプトを読んで、内容を理解したい
  • mayaのスクリプトリファレンスの読み方を習得したい
  • 自分で簡単なツールを書きたい
  • 基礎的なmayaコマンドをpythonで使えるようになりたい

など、mayaでpython基礎を身に着けたい方は、ぜひご活用ください♪

コメント

タイトルとURLをコピーしました