チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第13回:ポリゴンモデリング効率アップ術(4/4)
- Maya
- ゲーム
- コラム
- チュートリアル
- モデリング
- 中級者
- 学生・初心者
- 教育
- 映画・TV
さてさていよいよ第4回目です。
今回もさりげないネタを取り上げます。それと、どうも使い方が分かりにくいといううわさのCleanup機能について見て行きたいと思います。使いこなせればかなり便利な機能です。
実はそういう時は以下の様にやってみるとすばやくエッジが切れます。
1)フェースを選択する。
2)Triangulate(Mesh > Triangulate)で三角形ポリゴンに変換する。(上手く狙ったようにエッジが切れない場合はSplit Polygon Toolで手動切りするしかない)
3)Quadrangulate(Mesh > Quadrangulate)で四角形ポリゴンに変換する。
ポイントは、「いきなりQuadrangulateしない」というところです。
Quadrangulateは切れ目を入れて四角形ポリゴンにしてくれそうな感じですが、実際にはエッジを「削除して」四角形にする機能なのですので、始めに三角形化する必要があるのです。
ちなみに、QuadrangulateはpolyQuadというノードです。ヘルプでこのノードの説明を見ると、”Merges triangles of a polygonal object into four-sided faces.”(ポリゴンオブジェクトの三角形をマージして四角形フェースにする)と書かれています。
よくありがちなのは以下のものですかね。
・いつのまにかDuplicate Face(Edit Mesh > Duplicate Face)を実行してしまう。(しかもSeparate duplicated facesのチェックをオフにして)
・複製したメッシュオブジェクトを、知らないうちにCombineしてしまう。
・ゲーム用の木でよくやるのですが、同じ位置に二枚ポリゴンを作り、法線を裏表にしてBackface Cullingにします。こんな感じで。
(要は、処理速度の関係上Double Sideにしたくないので、片面ポリゴンを二枚裏表に置くのです。)これをうっかりMergeしてしまうと、二枚重なります。
こういったことが原因で二重三重に重なったデータが出来上がります。こういうのを薄膜フェース(Lamina Face)といいます。
手動でこういう問題のあるフェースを見つけ出し、削除するのは大変です。代わりにCleanup(Mesh > Cleanup...)を行うことで、自動で二枚のうち片側を削除することが出来ます。
では例を見てみましょう。
1)何でもよいのでメッシュを作る。
2)メッシュを選択し、Duplicate Face(Edit Mesh > Duplicate Face)を実行。
3)続いてMerge(Edit Mesh > Merge)を実行。(オプション設定はデフォルトでOk)
これで二重ポリゴン状態になります。
次にメッシュをクリーンナップしてきれいにして見ましょう。
4)メッシュを選択し、Mesh > Cleanup...を実行してオプションウインドウを表示する。
5)以下のオプションを設定して実行する。
[Operation]
問題のコンポーネントを見つけた時にどう処理するかを決める。
・Cleanup matching polygons:コンポーネントを自動的に削除する。
・Select matching polygons:コンポーネントを選択する。
問題のコンポーネントをいきなり削除すると上手く実行されたのかどうかいまいち分かりにくいので、Select matching polygonsでまず実行して問題のコンポーネントを確認した後、改めてCleanup matching polygonsをオンにして実行すると作業しやすいです。
[Lamina Faces(faces sharing all edges)]
薄幕フェースを検出するかどうか。オンにします。
実行すると、二枚重なっていたフェースが一枚になっているのがわかります。見た目に分かりにくいので Display > Heads Up Display > Poly Count を有効にして、モデリングビューの左上にコンポーネント数の情報を表示すれば変化がわかりやすくなります。
ちなみにオプションのScopeでApply to all polygonal objectsを選べば、シーン全体のポリゴンオブジェクトにCleanupが適用されるようになります。背景など巨大なデータの時はこのオプションをオンにすると便利です。
・Extrudeしたあとに、UndoをしたつもりがうまくUndo出来ていなくて、もう一度Extrudeしてしまう
・まちがってExtrudeしたこと自体気づかない。
という風に、フェースは二重になってはないけど、エッジが同じ場所にいくつもある状態もしばしば起こります。
図でいえばこんな感じで、Extrudeしたフェースが移動していない状態です。VertsやEdgesなどの数値を見ると、コンポーネントが増えているのがわかります。
これもCleanupで処理できます。
Cleanupのオプションで、Edges with zero lengthをオンにして実行すればよいだけです。図のVerts等の数字を見ると適正な値に戻っているのがわかります。
他にもFaces with zero geometry areaという、面積のないフェース(頂点が一点に集まっているフェース)を検出して処理することも出来ます。
ちなみにこの、長さや面積が0というコンポーネントは、単純にMergeすることで修正することも出来ます。
「なんか処理が重い」→「ポリゴン数が異様に多い」→「フェースが二重になってた」
というパターンです。えぇ、そんなー!という感じもしますが、今回見てきたようにちょっとした操作ミスで起こりうる事です。
いつも左上のコンポーネント情報(Display > Heads Up Display > Poly Count)を表示し、いつも異変がないか確認することが大切です。もちろんデータを出力する際にCleanupを実行しておくことも重要ですね。
Triangulateでエッジを自動で入れる方法は、「コンポーネントを作ってから編集するほうが早い」というのに当てはまります。Flip Triangle EdgeやSpin Edge Forward/Backwardといった機能(共にEdit Meshメニューの中にあります)を使えば細かいエッジの流れも簡単に制御できます。
今回もさりげないネタを取り上げます。それと、どうも使い方が分かりにくいといううわさのCleanup機能について見て行きたいと思います。使いこなせればかなり便利な機能です。
すばやくキレイにポリゴンにエッジを入れる
Fill Hole(Mesh > Fill Hole)をした後とか、エッジを一つずつ切っていくの面倒ですよね…。前々回のコラムの時にもそういう場面がありましたね。実はそういう時は以下の様にやってみるとすばやくエッジが切れます。
1)フェースを選択する。
2)Triangulate(Mesh > Triangulate)で三角形ポリゴンに変換する。(上手く狙ったようにエッジが切れない場合はSplit Polygon Toolで手動切りするしかない)
3)Quadrangulate(Mesh > Quadrangulate)で四角形ポリゴンに変換する。
ポイントは、「いきなりQuadrangulateしない」というところです。
Quadrangulateは切れ目を入れて四角形ポリゴンにしてくれそうな感じですが、実際にはエッジを「削除して」四角形にする機能なのですので、始めに三角形化する必要があるのです。
ちなみに、QuadrangulateはpolyQuadというノードです。ヘルプでこのノードの説明を見ると、”Merges triangles of a polygonal object into four-sided faces.”(ポリゴンオブジェクトの三角形をマージして四角形フェースにする)と書かれています。
二重に重なったフェースの削除
時々エッジやフェースが同じ場所で重なったデータができることがあります。よくありがちなのは以下のものですかね。
・いつのまにかDuplicate Face(Edit Mesh > Duplicate Face)を実行してしまう。(しかもSeparate duplicated facesのチェックをオフにして)
・複製したメッシュオブジェクトを、知らないうちにCombineしてしまう。
・ゲーム用の木でよくやるのですが、同じ位置に二枚ポリゴンを作り、法線を裏表にしてBackface Cullingにします。こんな感じで。
(要は、処理速度の関係上Double Sideにしたくないので、片面ポリゴンを二枚裏表に置くのです。)これをうっかりMergeしてしまうと、二枚重なります。
こういったことが原因で二重三重に重なったデータが出来上がります。こういうのを薄膜フェース(Lamina Face)といいます。
手動でこういう問題のあるフェースを見つけ出し、削除するのは大変です。代わりにCleanup(Mesh > Cleanup...)を行うことで、自動で二枚のうち片側を削除することが出来ます。
では例を見てみましょう。
1)何でもよいのでメッシュを作る。
2)メッシュを選択し、Duplicate Face(Edit Mesh > Duplicate Face)を実行。
3)続いてMerge(Edit Mesh > Merge)を実行。(オプション設定はデフォルトでOk)
これで二重ポリゴン状態になります。
次にメッシュをクリーンナップしてきれいにして見ましょう。
4)メッシュを選択し、Mesh > Cleanup...を実行してオプションウインドウを表示する。
5)以下のオプションを設定して実行する。
[Operation]
問題のコンポーネントを見つけた時にどう処理するかを決める。
・Cleanup matching polygons:コンポーネントを自動的に削除する。
・Select matching polygons:コンポーネントを選択する。
問題のコンポーネントをいきなり削除すると上手く実行されたのかどうかいまいち分かりにくいので、Select matching polygonsでまず実行して問題のコンポーネントを確認した後、改めてCleanup matching polygonsをオンにして実行すると作業しやすいです。
[Lamina Faces(faces sharing all edges)]
薄幕フェースを検出するかどうか。オンにします。
実行すると、二枚重なっていたフェースが一枚になっているのがわかります。見た目に分かりにくいので Display > Heads Up Display > Poly Count を有効にして、モデリングビューの左上にコンポーネント数の情報を表示すれば変化がわかりやすくなります。
ちなみにオプションのScopeでApply to all polygonal objectsを選べば、シーン全体のポリゴンオブジェクトにCleanupが適用されるようになります。背景など巨大なデータの時はこのオプションをオンにすると便利です。
重なったエッジ、フェースの削除
例えば、・Extrudeしたあとに、UndoをしたつもりがうまくUndo出来ていなくて、もう一度Extrudeしてしまう
・まちがってExtrudeしたこと自体気づかない。
という風に、フェースは二重になってはないけど、エッジが同じ場所にいくつもある状態もしばしば起こります。
図でいえばこんな感じで、Extrudeしたフェースが移動していない状態です。VertsやEdgesなどの数値を見ると、コンポーネントが増えているのがわかります。
これもCleanupで処理できます。
Cleanupのオプションで、Edges with zero lengthをオンにして実行すればよいだけです。図のVerts等の数字を見ると適正な値に戻っているのがわかります。
他にもFaces with zero geometry areaという、面積のないフェース(頂点が一点に集まっているフェース)を検出して処理することも出来ます。
ちなみにこの、長さや面積が0というコンポーネントは、単純にMergeすることで修正することも出来ます。
まとめ
ゲーム製作で時々あるのが、「なんか処理が重い」→「ポリゴン数が異様に多い」→「フェースが二重になってた」
というパターンです。えぇ、そんなー!という感じもしますが、今回見てきたようにちょっとした操作ミスで起こりうる事です。
いつも左上のコンポーネント情報(Display > Heads Up Display > Poly Count)を表示し、いつも異変がないか確認することが大切です。もちろんデータを出力する際にCleanupを実行しておくことも重要ですね。
Triangulateでエッジを自動で入れる方法は、「コンポーネントを作ってから編集するほうが早い」というのに当てはまります。Flip Triangle EdgeやSpin Edge Forward/Backwardといった機能(共にEdit Meshメニューの中にあります)を使えば細かいエッジの流れも簡単に制御できます。