チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第81回:データをきれいにするときのコツ~重なっているエッジ

  • Maya
  • ゲーム
  • コラム
  • チュートリアル
  • データ
  • モデリング
  • 学生・初心者
第81回: データをきれいにするときのコツ~重なっているエッジ

メッシュでモデルを作っていると、いつの間にか身に覚えのない変なポリゴンを作ってしまうことがあります。身に覚えがないといっても、何かやってしまっているはずなのですが…。うっかりメッシュ全体を押し出して気付かなかったり、ちょっとした操作で変なポリゴンが作られてしまいます。

最近はShiftキーを押しながらコンポーネントを動かすと「押し出し」となる便利機能が入っているので、それでいつの間にか誤作動させてしまっているというウワサも聞きますが…。

データをきれいにするときにコツがありますので、今回は重なっているエッジをキレイにする方法についてご紹介します。

例えば次の画像のように一見一本のエッジに見えるけれど実は二つ重なっている、というエッジへの対処方法です。

一見一本のエッジに見えるけれど実は二つ重なっている

そう、久しぶりのコラムなのに今日はとても地味~な話になります。ウェブで取り上げられることのない、同僚と昼を食べるときに話題に上がることもない、そんな地味な話だからこそ見落とされがちです。

知っているかどうかで作業のペースが全然違ってくるので、地味にお付き合いください。

エッジが重なっているかどうか見分ける方法

エッジがぴったり重なっていると、エッジを選択して動かすまで重なっているかどうかわかりません。
もっと簡単に見つける方法があればよいのですが…。

実はトンチを使うと簡単に見つけられます。
Mayaではいくつかの方法でフェースの中心に「点」を表示できます。エッジが重なっているところは「面積のないフェースがある」ため、フェースの中心点を表示すると、エッジの中心にも点が出てきます。

つまり「エッジに点が出ていたら、エッジが重なっている!」とわかるわけです。

(境界エッジではエッジが重なっていてもフェースが無いので点が出ませんが、そもそもエッジが重なっていてもかまわないはずですので、大丈夫です!)

メッシュの表示で設定するなら、次のようにします。
1. メッシュを選択します。
2. 「Display > Polygons > Face Centers」 を選択します。
もしくは、
Attribute Editorを開き、シェイプのタブに行きます。
「Mesh Component Display > Display Center」をオンにします。
(どちらもメッシュのdisplayCenterアトリビュートをオン/オフします。メッシュごとに表示が設定されるということです。)

「Mesh Component Display > Display Center」をオンにします。

または、プリファレンスで「Settings > Selection > Polygon Selection > Select faces with:」をCenterにすれば、フェース選択の時に中心点が出ますので、そちらでも確認できるようになります。

プリファレンスで「Settings > Selection > Polygon Selection > Select faces with:」をCenterにする

フェースの中心点を出すことで、エッジが重なっていることを確認できました!
次はエッジを削除してきましょう。

エッジを削除するには、二つのアプローチがあります。
• エッジを削除する
• エッジの頂点同士をマージする

エッジを削除する方法と問題点

エッジを削除するとき、エッジを選択してDeleteキーを押すと次のようになります。

Deleteキーでエッジを削除すると、両端の頂点はそのまま残ります

Deleteキーでエッジを削除すると、両端の頂点はそのまま残ります。重なっているエッジを削除するときこうなると、エッジは消えたものの、頂点は残って重なってしまいますし、ポリゴンは減らないしで、意図しない動作となってしまいます。

エッジを選択してCtrl+Deleteキーを押すと、次のようになります。

ホットキーで削除すると、エッジと両端の頂点が削除されます。

Ctrl+Deleteは「Edit Mesh > Delete Edge/Vertex」のホットキーです。
(エッジを選択してShift+右マウスボタンでマーキングメニューを出すと、左下にDelete Edgeが表示されます。これも同じ機能です。)

これらのメニュー、ホットキーで削除すると、エッジと両端の頂点が削除されます。

めでたしめでたし。

といきたいところですが、これ一見よさそうなのですが、問題が起きることが多いです。
例えば次の図のようにUVがあるとします。エッジを削除すると、UVが偏ってしまいます。

エッジを削除すると、UVが偏ってしまいます。

重なったエッジと頂点を削除するということは、もう一つの方のエッジはそのまま残るということです。3D上の形状は問題ないのですが、UVは残ったエッジのUVに偏ります。結果としてテクスチャがゆがんでしまいます。

エッジ同士で、UVが同じ場所にあれば全然問題ないですが、エッジを削除するときにわざわざUVが重なっているかどうか確認するのも大変な手間です。

で、どうするかというと、頂点同士をマージすればよいのです。
お互いの頂点が補完されるのでよりきれいにエッジを削除できます。

エッジの削除(頂点同士をマージする方法)

重なっているエッジ同士の両端の頂点をマージすると、自動的にエッジもまとまります。
方法も簡単で、もしメッシュ内で頂点を意図的に重ねておく必要が無ければ、「Edit Mesh > Merge」ですべての頂点をマージしてしまいます。これでエッジもなくなります。

「Edit Mesh > Merge」ですべての頂点をマージするとエッジもなくなります

もちろん重なっているエッジの頂点だけを選択して頂点マージしていっても大丈夫です。選択、頂点マージを繰り返すときは、始めの一度だけ「Edit Mesh > Merge」でマージを行い、以後Gキーを押して再実行するようにすると、とても早く作業ができます。

マージが正しくできたかはビューの左上に出るVertsとEdgesの数などを見て確認します。(表示されていなければ「Display > Heads Up Display > Poly Count」をオンにします)

より安全にエッジと付き合うには

そんな感じで、エッジが重なっているかどうか判別しながらデータをキレイにできるようになりました。

エッジを編集するときには、他にも設定しておくと安全&早く作業ができることがありますので、ポツポツご紹介します。

【境界エッジを表示する】

メッシュを選択して「Display > Polygons > Border EdgesとTexture Border Edges」を実行して境界エッジを表示します。

メッシュを選択して「Display > Polygons > Border EdgesとTexture Border Edges」を実行して境界エッジを表示します。

境界エッジは、ポリゴンやUVシェルの端っこになっているエッジです。
意図的に重ねてあって、くっつけていないということもあります(ゲームのデータで良くありますね。)。
この表示にすることで頂点をマージしていいのかどうか判別できるようになります。

上の図では、太い線で表示されている部分が境界です。例えばプレーンの中心のエッジが二つ重なっているとします。もし意図的に頂点・エッジを別々にして重ねておく必要が無ければマージすることができます。

左のプレーンと右のプレーンで、選択を簡単にするためにあえて分けてあるなど、何かしら理由があるならそのままそっとしておきます。

いずれの場合も「データの状況を見て判断できている」ということが重要です。重なっているエッジがあるかどうかもわからないし、いつの間にかマージしても気づかない、というデータの扱いが問題を起こします。そういう状況を避けるためにも、なるべくデータの状況を把握しておくとよいです。

【移動ツールで作業する】

意図しない頂点を選択してマージしてしまわないよう、選択ツールではなく、移動ツールにしておきます。

これは一般的なテクニックで、移動ツールにしていると、選択したコンポーネントの平均位置にマニピュレーターが出ますので、変な位置にマニピュレーターが出れば、意図しない頂点が選択されていると分かります。

頂点をクリック選択するときは隠れている頂点を選択することはないですが、今回のように重なっている頂点を選択するときは、どうしても矩形選択する必要があります。矩形選択では隠れた頂点を選択しがちです。

例えば次の頂点を選択するとします。

頂点を選択

矩形選択すると、こんな感じになります。

矩形選択する

なんか、頂点とマニピュレーターの位置がずれてますよね…。
ワイヤーフレームで後ろを見てみると、こんなふうに余分な頂点が選択されていました。

ワイヤーフレームで後ろを見てみると、こんなふうに余分な頂点が選択される

マニピュレーターのずれで気づきましたが、何も気づかずにマージしていたら!…こういうちょっとしたことで、変なデータができるわけです。

後ろの頂点を選択してしまった場合は、Ctrlを押しながら余分な頂点を矩形選択して、選択から外します。

【表示の分離をいっぱい使う】

その他細々として設定としては、ビューやメッシュのバックフェースカリングを有効にして、裏面を選択しないようにしておくこともあります。

また、シーン内のオブジェクトが多いなら、面倒でも表示をIsolateします。メッシュを選択してShift+Iをすると、選択したものだけ表示できますので(ビューの「Show > Isolate Select > View Selected」のホットキー)、実はすぐにIsolate表示できます。

ビューの「Show > Isolate Select > View Selected」のホットキー

もとに戻すときは、何も選択しないでShift+Iを押します。すべてのオブジェクトが表示されます。

口の中のモデルなど、本当に入り組んでいてポリゴン数が多いなら、作業する部分だけ表示します。フェースを選択してShift+Iを押せば、その部分だけ表示できます。

場合によっては、フェースを選択してそこだけExtractしてまったく別のメッシュにしてから作業を行い、再度元のメッシュとくっつける、ということもあります。

まとめ

というわけで、重なったエッジの見つけ方、削除の仕方などなど見てきました。

・ フェースの中心点を表示すると不用意に重なってしまったエッジを見つけやすい。(面積ゼロのフェースがあるエッジ)
・ 重なったエッジの端の頂点をマージすることで、エッジを削除する。

のところが主なポイントでした。

ちなみに、機械的にドバっと面積ゼロのフェースを削除するなら、Cleanup機能もありますので忘れずに!
「Mesh > Cleanup…」でウインドウを開いて「Remove Geometry > Face with zero geometry area」をオンにすると、面積のないフェースを対象にできます。「Cleanup Effect > Operation」の設定が「選択」なら該当のフェースを選択しますし、「クリーンナップ」なら削除します。

Cleanup機能

このCleanupを使う時でも、フェース中心を表示しておけば、効き目がどうだったかわかりやすいので表示をおススメします。

Mayaのちょっとした使い方の違いで、ずいぶんと作業効率が変わる良い例ですので、普段の作業で活用してもらえればうれしいです。

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。