チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第18回:オブジェクトの基本構成~Maya内のオブジェクトはどう出来ているか
- Maya
- ゲーム
- コラム
- チュートリアル
- モデリング
- 中級者
- 学生・初心者
- 教育
- 映画・TV
前回は中間オブジェクトという、ハードコアな内容を攻めてみました。ノードの図を見ることが多いので、なんともとっつきにくい感じだと思います。そういう時はハイパーシェードを使うとよかったりします。基本的にハイパーグラフとハイパーシェードは、見た目が違うだけで同じようなものと思ってもらって問題ありません。

ハイパーシェードでシェーダーネットワークを作っているあれの一つ一つもノードなのです。多少ユーザーフレンドリーな見た目なので、とっつきやすいかもしれません。
さて今回はMayaのモデリングビューに表示されている、いわゆる「オブジェクト」というものが、どういうノード構成で表示されているのか見てみたいと思います。前回よりも概念的な部分が多いのでちょっとわかりにくいかもしれませんが、わかると3DCGのオブジェクト構成を理解できてとても面白いと思います。
1)Create > Polygon Primitives > Cubeでキューブを作ります。
2)Edit > Delete by Type > Historyでヒストリを削除して、キューブのデータをスッキリさせておきます。
3)Window > Hypergraph: Hierarchyでハイパーグラフを表示します。
前回まで使ったHypergraph: Connectionsはヒストリを表示するためのものです。今回使用するHypergraph: Hierarchyはアウトライナの詳細バージョンだと思ってください。表示されるものは基本的にアウトライナと同じですが、より詳細でグラフィカルな表示になります。
また、ハイパーグラフには様々な表示オプションがありますので、図と同じ見た目になっていないこともあります(たぶん灰色文字のノードが沢山表示されていたり)。あまり気にしないで進めてもらって大丈夫です。
4)ハイパーグラフのメニューで、Options > Display > Shape Nodesをオンにします。
オンにすると下図のような表示になります。
杏仁豆腐みたいなアイコンが表示されているpCube1というノードと、pCubeShape1というノードがでてきました。
アトリビュートエディタを開いて、それぞれのノードのタブでノードタイプを見てみると、pCube1はtransform、pCubeShape1はmeshノードであるとわかります。

ちなみにアトリビュートエディタに表示されているタブは、必ずしも選択しているノードが始めに表示されるとは限らないので注意してください。
meshノードは前回出てきました。メッシュの情報を保持しているノードです。transformノードはアトリビュートエディターで見るとTranslate・Rotate・Scaleなどの位置情報を扱っているのがわかります。
モデリングビューでオブジェクトを選択すると、下図の様にチャンネルボックスにTranslate・Rotate・ScaleとVisibilityアトリビュートが表示されますね。
赤枠内はtransformノードの情報を表示していたのです。
さておさらいです。meshノードはメッシュ情報、つまりモデルの形状を持っています。ただ、それをどこの座標に出すかは知りません。transformノードは、meshノードを表示する場所を決めています。
例えばフィギア人形の形状はmeshノードが作ります。それを置く台はtransformノードで、部屋の何処に置くか決めます。
ちなみに上のチャンネルボックスの赤枠の下、SHAPES欄にmeshノードは表示されます。
INPUTS以下はヒストリ情報です。
このようにmeshとtransformの二つのノードのタッグでオブジェクトは無事画面に表示されるのです。
どちらか一方だけでは何も表示されないのです。
Create > Empty Groupを実行すると、null1という名前のオブジェクトができます。
アトリビュートエディタで見てみるとノードタイプはtransformと書かれています。名前がnullというのでヌルっぽいですが、別にヌルでもなんでもなくtransformノードです。ヌルオブジェクトは、形を持たなくて、位置を決められて、親子構造を作れるものですので、Mayaではtransformノードでいいわけですね。
他にもEdit > Groupでオブジェクトをグループ化するとgroup1というノードができます。これもtransformノードです。
アウトライナやハイパーグラフで、杏仁豆腐みたいなアイコンを見かけたらそれはすべてtransformノードです。
ひとつのオブジェクトなのに二つもノードを使うなんて、一見すると複雑に思えるかもしれません。
しかしそのおかげである機能が上手く動くのです。その機能とはインスタンスです。次回はインスタンスの謎を紐解いて見ましょう。

ハイパーシェードでシェーダーネットワークを作っているあれの一つ一つもノードなのです。多少ユーザーフレンドリーな見た目なので、とっつきやすいかもしれません。
さて今回はMayaのモデリングビューに表示されている、いわゆる「オブジェクト」というものが、どういうノード構成で表示されているのか見てみたいと思います。前回よりも概念的な部分が多いのでちょっとわかりにくいかもしれませんが、わかると3DCGのオブジェクト構成を理解できてとても面白いと思います。
オブジェクトの基本構成
オブジェクト、いわゆるメッシュというかポリゴンというか、球やらキューブやらは一体どういったメカニズムでMaya内で処理されているのでしょうか。実際にMayaをいじって確かめてみましょう。1)Create > Polygon Primitives > Cubeでキューブを作ります。

2)Edit > Delete by Type > Historyでヒストリを削除して、キューブのデータをスッキリさせておきます。
3)Window > Hypergraph: Hierarchyでハイパーグラフを表示します。

前回まで使ったHypergraph: Connectionsはヒストリを表示するためのものです。今回使用するHypergraph: Hierarchyはアウトライナの詳細バージョンだと思ってください。表示されるものは基本的にアウトライナと同じですが、より詳細でグラフィカルな表示になります。
また、ハイパーグラフには様々な表示オプションがありますので、図と同じ見た目になっていないこともあります(たぶん灰色文字のノードが沢山表示されていたり)。あまり気にしないで進めてもらって大丈夫です。
4)ハイパーグラフのメニューで、Options > Display > Shape Nodesをオンにします。

オンにすると下図のような表示になります。

杏仁豆腐みたいなアイコンが表示されているpCube1というノードと、pCubeShape1というノードがでてきました。
アトリビュートエディタを開いて、それぞれのノードのタブでノードタイプを見てみると、pCube1はtransform、pCubeShape1はmeshノードであるとわかります。

ちなみにアトリビュートエディタに表示されているタブは、必ずしも選択しているノードが始めに表示されるとは限らないので注意してください。
meshノードは前回出てきました。メッシュの情報を保持しているノードです。transformノードはアトリビュートエディターで見るとTranslate・Rotate・Scaleなどの位置情報を扱っているのがわかります。
モデリングビューでオブジェクトを選択すると、下図の様にチャンネルボックスにTranslate・Rotate・ScaleとVisibilityアトリビュートが表示されますね。

赤枠内はtransformノードの情報を表示していたのです。
さておさらいです。meshノードはメッシュ情報、つまりモデルの形状を持っています。ただ、それをどこの座標に出すかは知りません。transformノードは、meshノードを表示する場所を決めています。
例えばフィギア人形の形状はmeshノードが作ります。それを置く台はtransformノードで、部屋の何処に置くか決めます。
ちなみに上のチャンネルボックスの赤枠の下、SHAPES欄にmeshノードは表示されます。
INPUTS以下はヒストリ情報です。
このようにmeshとtransformの二つのノードのタッグでオブジェクトは無事画面に表示されるのです。
どちらか一方だけでは何も表示されないのです。
transformノードの別の形
他の3Dツールではヌルというものがあります。なんだか実体は無いけれど、親子構造を作ったりとかするのにあると便利なオブジェクトのことです。実はそのヌル、Mayaにありません。代わりにtransformノードがヌルの役割を果たします。Create > Empty Groupを実行すると、null1という名前のオブジェクトができます。

アトリビュートエディタで見てみるとノードタイプはtransformと書かれています。名前がnullというのでヌルっぽいですが、別にヌルでもなんでもなくtransformノードです。ヌルオブジェクトは、形を持たなくて、位置を決められて、親子構造を作れるものですので、Mayaではtransformノードでいいわけですね。
他にもEdit > Groupでオブジェクトをグループ化するとgroup1というノードができます。これもtransformノードです。
アウトライナやハイパーグラフで、杏仁豆腐みたいなアイコンを見かけたらそれはすべてtransformノードです。
まとめ
今回はtransformノード、meshノードという二つの基本的なノードを見てみました。普段何気なく扱っているオブジェクトは、こういう二段階方式で表示されています。ひとつのオブジェクトなのに二つもノードを使うなんて、一見すると複雑に思えるかもしれません。
しかしそのおかげである機能が上手く動くのです。その機能とはインスタンスです。次回はインスタンスの謎を紐解いて見ましょう。