LoginSignup
3
0

More than 3 years have passed since last update.

MayaPlugin C++ アウトライナ 取得

Posted at

アウトライナに表示してる特定のオブジェクトくれよ!一覧でいいからくれよ!
defaultObjectSetがとりたいと仮定する。

defaltObjName.jpg

あげる。どこかで呼んでください。

test.cpp
    Printf("---- name start ----- ");

    MItDependencyNodes Itdag;
    for (; !Itdag.isDone(); Itdag.next())
    {
        MFnDependencyNode dn;
        dn.setObject(Itdag.item());
        const char *nodeName = dn.name().asChar();
        Printf("ThisName:/ %s\n", nodeName);
    }

    Printf("---- name end ----- ");

MItDependencyNodes を使えばアウトラインに出てる奴全部取得できる!

以下VisualStudioの出力結果。赤字は社内プラグインなので伏せ
list.jpg

よけいなのめっちゃでてる。なんで?アウトライナには5こぐらいしかでてなかったよ?

それはアウトライナのDisplayの表示項目のせいだよ。
Dhispy.jpg

他にもデフォでいろいろチェック入ってるから注意してね。
いや、DAG Objects Obnly状態の物が欲しい。フィルターとかかけられないの?

かけれるよ。

test.cpp
    Printf("---- name start -----\n ");

    MItDependencyNodes Itdag(MFn::Type::kSet); //単体走査タイプ指定
    for (; !Itdag.isDone(); Itdag.next())
    {
        MFnDependencyNode dn;
        dn.setObject(Itdag.item());
        const char *nodeName = dn.name().asChar();
        Printf("ThisName:/ %s\n", nodeName);
    }

    Printf("---- name end -----\n ");

初期化の時にタイプ指定するとフィルタリングできるよ。他にも複数指定とかできるけどMItType系のフィルタークラスがあるからそれにMIntArray系で指定できたはずだよ。面倒だから誰か書いて。
重要なのはここで
MItDependencyNodes Itdag(MFn::Type::kSet); //単体走査タイプ指定
MFn::Type::kSetを指定したけどなんでKSetなの?

アトリビュートをみるとobjectSet:とかいてあるよ。これらはkSetになるよ。なんでKobjectSetじゃないの?そういう所だぞAutDesk!
kSet.jpg

visual studio の表示結果

kirei.jpg

更新で呼んでるので何度も表示されるけど
だいたい合ったのでよしとする。

重要なのは MItDependencyNodes クラス

他にもMIt系はたくさんある!Itってのはイテレーターの略です。ぶん回して走査するので軽くはない。
Maya2018の公式リファレンスをみるといい。英語だから読みたくないけど。大正義の情報源はここ。
http://help.autodesk.com/view/MAYAUL/2018/JPN/?guid=__cpp_ref_class_m_graph_editor_info_html

MIt.jpg

さよなら

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0