マヤ道!!

 前日発売になったマンガ形態の、Autodesk Maya 解説本です。

 途中でふと値段を見ると、なんでマンガ本が二千円超えてるのか?…とか。はた、と考える事もありそうですが、あくまで解説本な上にそれをわざわざマンガ仕立てにすることを考えたら、寧ろ安いかもしれないです…(´・ω・`)

 内容は、リガー入門であると同時にモデラー向けの啓蒙本(データを綺麗にすることの真意を説いた内容)になっています。

 この本だけ読んで、すぐさま役に立つ人達というのは、実際にプロダクションに入って働きたい学生さんや既に入っている新人さん(特にリガー)ですが、それ以外の方でも、何故リガーがデータの造りに執拗にこだわる面があるのかを知るのにちょうど良い内容かと思いました。

 機会があったら、手にとってみては如何かと。

Amazonの登録は以下。
https://www.amazon.co.jp/dp/4862463290

グレーのコネクションを編集するには

HyperGraphのメニュー Show > Show Auxiliary Nodes (発音的には、オーゥグズィージュァリィー。日本語読みだとオーグジュアリ・ノード)にチェックを入れることで、編集が可能になる。
※AUXは、オーディオ機器の端子にもあるが、「補助的な」という意味合い。

ただ、GroupId や GroupParts ノードの編集で使う場合には、結果にどのような影響があるのか理解して使用しないと意図しない挙動になると思われるので、事前に理解しておく必要がありそう。

ディペンデンシー・グラフ

 DG(dependency graph : 直訳すれば、依存関係図)は、3DCGデータの設計図とも言えるデータ構造図であり、Mayaのデータ構造を表す基盤概念。ノード(データの固まり)の依存関係を表す構造図、もしくは関連を持つデータ構造そのものを指す。
 現在のシーンにどのようなデータが含まれ、どのような関連を持って、どのようにデータが処理されるかを定義できる。(ただ実のところ、IKのようにDGに関連の現れないタイプのノードも存在するので、リグを組むようになると、個々のノードにどのような関連があるのか、DGだけで読み取れない部分を読み解く能力は必要になりそう..)

 特別な構造として、DAG(directed acyclic graph : 有向非循環グラフ)がある。これは、あるノードが一つの関連図の中で繰り返し出現することを許さない構造を指す。(親子関係を持つ階層構造が、まさにDAGそのもの。)
 単なる関連を示すのではなく、論理構造を表すために特別に存在する。

 DGはデータフロー(データの処理される順序)を直感的に表してはいないので、これについては別途理解が必要。
 ハイパーグラフ(hyper graph : Connections)でDGの関連を表示すると、ノード間が矢印で接続されている事が分かる。データは矢印の方向に流れており、ハイパーグラフでは基本的に左から右に順次関連するノードが列挙される。しかし、ハイパーグラフは同じノードを繰り返し表示することはないため、既に現れたノードへの接続が発生した場合には、右から左への矢印も登場する。
 また、ハイパーグラフはあくまで関連を示すだけなので、矢印末端のノードが結果になるとは限らない。例えば、meshノードは基本的にすべてinitialShadingGroupに関連付いている。形状の変形の流れを追うためにDGを表示した際、末端にinitialShadingGroupが表示されていたとしても形状変形にはなんら関与していない。この矢印はシェーディング表示を行う際の関連を示している。

 また参考図のハイパーグラフを見ると、DAGノード(transform)としてのpCube1と、DGノード(mesh)としてのpCubeShape1が表示されている。この2つのノードには関連はあってもDGのデータフローに絡まない為、矢印では結ばれていない。DAGの関連を表示するには、ハイパーグラフの表示モードを”Hierarchy”に切り替える必要がある。

 各ノードの役割を理解しておかなければハイパーグラフの表示からデータフローやノードの関連を読み取ることが困難になるので、常日頃からノードの役割を念頭に置きつつノードの接続や関連を追う癖を付けた方が良い。

グレーのコネクション

メニュー Show > Show Auxilialy Node で、グレー表示部分を編集可能に。
グレーのコネクション_1 グレーのコネクション_2
グレーのコネクション_3
そういえば、groupId, groupPartsの編集ができるかどうかは謎のままだった。
現状この手の話は、このサイトこのサイトくらいしか知らない..全くもって別件のネタだけど。

maファイルを見る限り、groupPartsノードにフェースとかどのコンポーネントが属すのかって情報が記憶されて、groupIdはgroupPartsで定義された範囲をID管理してるって感じですかね。

groupPartsで記憶してる範囲を再選択・再登録みたいな機能はどっかにあるのかしら?

インスタンス化されたシェイプの判別方法

例えば、pSphereを1つ作成した上で duplicate specialで instanceを1つ作成する。
都合、pSphereが2つ。

この時、’pSphereShape1’はシーン上に2つ存在する。
名称は’pSphere1|pSphereShape1’。シーン上唯一であっても下記コマンド実行で’pSphereShape1’にはならない。

ちなみに、pSphereをもう1つ作成して、そのmeshを’pSphereShape1’にリネームしようとしてもできない。
transformをリネームすると’pSphereShape3’になるし、meshをリネームしても’pSphere3|pSphereShape1’になる。

したがって、シーン上に唯一のはずなのに『パス区切りが取れない、ノード名だけでは見付けられない』というノードがいる場合、インスタンスである可能性大。

但し、前述の’pSphere3|pSphereShape1’のようなものもインスタンスとみなしてしまうので、厳密なチェックが必要なら、こちらのサイトが参考になる。

ちなみに..
シーン上に唯一のはずなのに『パス区切りが取れない、ノード名だけでは見付けられない』というノードで、親が2つ以上存在する場合は、まずインスタンスであると断定できる。

以下のコマンドでも複数の親の存在確認は出来た。

pointOnPolyでfaceにコンストレインしても原点から動かない時は

結論的に書くと、map1にUVが設定されていない場合に発生する。

このような場合には..
map1にUVを設定してやると、ちゃんとface上にlocatorが移動することが確認できる。

調べた感じでは、map1以外にUV設定されていてもpointOnPolyはそこを見ていないようなので、map1にUVを設定する必要がある。
pointOnPoly_problem

deformer, tweakノードについて

Deformerノードを調査していて、いろいろ気付いたことなどをメモ。


【deformerによる変形結果の伝播イメージ】

connectionWithDeform_1


【tweakノードの存在意義】

connectionWithDeform_2


【隠れノード:groupParts, groupIdノード】
※グレーのコネクションは編集できないと思っていたが、Mayaのモードを変更すると編集可能だった。

connectionWithDeform_3


ちなみにsmoothBindを行うと bindPoseノードが別途追加される。
Mayaのヘルプにもある通り、『スキンを変形させない唯一のポーズ』を記録したノード。

ここで記録したポーズを基準として、変化があった量に応じて変形を行うのがdeformerノードの処理。