現在位置: ホーム / shade+OSX / ローポリからハイポリへ

ローポリからハイポリへ

ローポリなオブジェクトを、お手軽ハイポリ化してみる

過日、姪っ子の入学兼誕生日プレゼントに、とあるDVD-BOXを買い入れた。花の魔法使いマリーベルという作品だ。前世紀の古いアニメなのだが、なぜかネットでヒットする数が多いので、興味が湧いたら検索を。

さて、なんでこんな古い作品を、プレゼントに買ったかというと。

一つ目の理由:その少し前に、ファンファンファーマシィというアニメにハマッていたので、内容的に似たような作品を探していた。

二つ目の理由:古い作品が故、話数が多い割りに安上がりで済む。

そりゃあ、プリキュアを一生懸命見ていたのは知っているが。こんな新しい作品、全話揃えたら、お金がいくら掛かるかわかったもんじゃないし。

そんなこんなで、いろいろ探してみた結果が、マリーベルに落ち着いた、というわけだ。

 

で。ここからが本題。実は自分自身、元のアニメは見たことがなかったのだが。当然、プレゼントしたDVDの中身も、購入時のラッピングのまま渡しているので、見ていなかったのだが。先日、その中身を見る機会があった。そこで、登場人物の一人に、大きな衝撃を受けたのだ。どのあたりが衝撃だったかというと。とにかくシンプルなのだ。古いアニメということを割り引いたとしても、トコトンシンプルなのだ。主役級キャラの一人のくせに、矢鱈シンプルなのだ。

曰く、おかっぱ頭で飾りはヘアバンドだけ。耳すら露出していない。服は半袖のセミロングスカート、しかも単色。ヒラヒラやフリフリも一切無し。柄はおろか、図案やワンポイントすら入っていない。唯一の飾りが、襟元の超シンプルなリボン。どこかで見たような形のリボンだなあ、とか思っていたら、実践-人物編の赤ずきんちゃんで、申し訳程度につけておいた頭巾の結び紐まんまぢゃないか。その他、どのパーツをとっても、本当に主役級キャラなのかと疑いたくなるぐらいにシンプルなのだ。そりゃもう、モデリングの練習台にして下さいといわんばかりのシンプルさ

 

ここまで挑発されたら、受けて立たねばなるまい。というわけで、

正面画像

作ってみました。

 

画像をクリックすると、大きめの画像(800x600ピクセル)が見られます。

版権物に手を出す気はなかったのだが、練習台に、あまりにも都合が良いもんで、つい・・・。だが、作ってみたところ、この手のアニメ系キャラ独特の要素が、いろいろわかってラッキィだった。一番笑ったのが、腕より首の方が細いという点だ。こんな人間、現実にいたら、歩いた拍子に首の骨が折れるぞ。あまりに細いので、その上に乗っている非常識にでかい頭とも上手く接合できなかったし。というわけで、試しに接合しないで埋め込み式にしてみたところ、存外目立たない(といより、むしろ絵的に好ましい収まりになる)ということに気がついた。そんなわけで、現在コイツは、パイルダーオフも自由自在になっている。

 

さてさて。上のキャラのポリゴン分割だが、以下のようになっている。

胴体部ポリゴン情報

胴体部ポリゴン情報。

衣類ポリゴン情報

衣類ポリゴン情報。

 

分割して表示したのには、理由がある。本来、ローポリでは見えない面を削るのが鉄則なのだが、このキャラでは残しているからだ。なぜ残したかというと、このモデルが他のキャラにも流用できそうだから、だったりする。このアニメに限らず、登場人物の体型が似通っている物は数多くあるわけで、そういった他キャラへの転用が可能なように、わざとポリゴンを残してあるのだ。

そしてもう一つ、やはりローポリ化でしておくべき作業、三角ポリゴンへの統一を行っていない。といより、むしろ積極的に四角ポリゴンを多用している。これは、今回の主題、ハイポリ化の際に便がよいようにするためだ。

 

そして、作業画面が

作業画面

これ。同じく、クリックで拡大表示(約800ピクセル等倍)可能。キャラ外周にある四角形は、アタリ取り用のダミーの立方体。同じく球形と十字のラインは、位置取りのためのボールジョイントのラインだ。

 

 

サブディビジョン化によるハイポリ化

さてさてさて。外見の表示に対して、ポリゴン数が妙に少ないことにお気づきだろうか。これが、今回の主題、お手軽ハイポリ化の肝だったりする。では、順に。

もともとローポリで作成しているので、本来の表示としては、こんな感じになる。以下、特に断らないが、画像クリックで拡大画像(約800ピクセル等倍)が表示されまっス。

顔拡大#1

顔周辺を拡大表示したもの。青や白のラインは、ポリゴンの稜線だ。口や目を可動にするために、赤ずきんちゃんよりは細かめに分割しているが、それでもシェーディング(陰影づけ)を行うと表示がカクカクになる。これを滑らかにするために、より細かなポリゴン分割を行って行くのが、いわゆるところのハイポリ化なわけだが。最近の3Dソフトには、これをある程度自動で行ってくれる、とおっても便利な機能が備わっているのだ。

shadeにも、この機能がもちろんある。これを利用して、お手軽ハイポリ化を堪能してしまおうというわけだ。作業そのものは、ものすごく簡単。形状情報のウインドウにあるポリゴンメッシュ属性で、

ハイポリ化

「サブディビジョンサーフェス」の「角の丸め」に、「カトマル・クラーク法」(キャトマル・クラーク法と書くこともある)を指定するだけ。上の画面では、適用率とUV補正の項を調整してあるが、これは後述。とりあえず「初期状態の1.00/補正あり」で十分確認できる。これだけの作業で、

顔拡大#2

はい、このとおり!

目尻のラインや、頬のカクカクが消えていることがわかると思う。つまり、このあたりのカクカクした大きめのポリゴンが、内部では細かく分割された状態になっているために、シェーディングが滑らかになった、というわけだ。

どの程度細かく分割されるようになったのかは、法線を表示してみるとわかる。「サブディビジョンサーフェス」が「なし」の状態で、法線を表示させたものが、

法線表示#1

 

これ。法線が見やすいように、テクスチャの表示をOFFにしている。見ての通り、各面の中心に、赤い丸と点線で法線が表示されている。

そして、 「サブディビジョンサーフェス」に「カトマル・クラーク法」を指定したものが、

法線表示#2

これ。法線がビッシリ増殖してます。人によっては、鳥肌立つかも知れない画像だなぁ。ゴメンナサイ。

 

気を取り直して。つまり、 「サブディビジョンサーフェス」をかけると、見た目の稜線などに変化はないが、内部では、増殖した法線を取り囲むように面が構成されるようになっている、ということだ。すげー数のポリゴン数だ。これを「サブディビジョン化」という。まんまだけど。そして、前述の「形状情報ウインドウ」にあった「適用率」の数値は、この分割をどれだけ細かくするかの指定値となる。値が大きいほど、より細かく、より滑らかに分割される。

追記:2010.12.01
適用率について、上記記載は間違えでした、スミマセン。どうやら、ここでの適用率は「頂点の縮退」のみに影響する値らしい。数値を減らすと、同じポリゴン分割密度で、角度が切り立つようになる。分割数については、別の手段でコントロールできるので、本ページ後半にて追加

 

そしてさらに。この「サブディビジョンサーフェス」が指定されている状態で、メニューから[ツール]-[変換]-[ポリゴンメッシュ変換]をかけてやると、

ハイポリ変換

・・・・・・・・・・・。

うぉ、細密!

てなぐあいに、内部的に変換されていた状態のポリゴンを取り出すことが出来るのだ。にしても、細かっ。まさしくmesh。もちろん、この後、各面や頂点を修正するのも自在だ。

そして、ここで「ローポリなのに三角分割していない」理由が効いてくる。サブディビジョン化にあたっては、三角ポリゴンよりも、四角ポリゴンのままの方が、期待した結果を得やすいのだ。実際のプログラム内部の計算式はわからないが、一般的にサブディビジョン化の際は、面の細分化と同時に頂点の縮退処理も行われる。この処理は、三角形よりは四角形の方が、頂点に集合する歪みを減らせる分有利なのだから、そのアタリが理由なのだろうと推測。

 

ちなみに、この実体化については、今回は行っていない。なぜかというと、このモデルを他のキャラに流用する予定があるからだ。髪型を変えて、眦などを部分的に修正して、という作業をするのに、ローポリのままの方が明らかに都合がよいわけで。

 

 

さて、話を少し巻き戻すが、つづいてボーンによる変形がどうなるのかを見てみよう。結論から言うと、サブディビジョン化しても、ボーンアニメーションは問題なく適用される。

ボーンによる変形#1

口パク。

てなぐあいに。・・・問題ないというよりは、むしろボーンアニメーションもサブディビジョン化されている、というべきか。元のローポリ状態で的確にスキニングしておけば、滑らかなアニメーションを実現してくれるのだ。

そしてそしてそしてそして。そう、勘のいい人なら気づくはず。ポリゴンメッシュ変換で取り出した細密メッシュでも、

ボーンによる変形#2

ぱくっ♡

てなぐあいに、スキニング済みのハイポリが取り出せるのだった。つまり、

ハイポリのスキン情報

こういうことで・・・。

・・・・・・・・・・・。

頭だけで頂点数7500って。こんなもんに一個一個スキニングするのは、気が遠くなりそうだ。お手軽バンザイ(違

 

 

シェーディングの調整により誤魔化す方法

サブディビジョン化によるハイポリ化は、お手軽でよいのだが、欠点がないでもない。それは、すでに触れているが、サブディビジョン化により頂点が縮退する、という点だ。つまり、角張っていて欲しい部分でも角が取れてしまうのだ。この現象は、shadeに搭載されているサブディビジョン化のもう一つの方法、「ドゥ・サビン法」でより顕著に表れる。今回のキャラでいえば、髪の毛がそう。

髪#1

上図でいえば、赤丸で囲んだような部分については、角がとんがっていて欲しいわけだが。かといって、前髪の上部などは、あまり角張っていて欲しくない。

しかるに、髪にサブディビジョン化をしてしまうと、

髪#2

このように、角が丸まってしまうのだ。「形状情報ウインドウ」の「適用率」を下げてやれば、縮退も緩和されるのだが、それでも限界がある。実際、上の画像は、適用率を0.20まで下げた状態の画像だ。これより下げると、毛先のトンガリはだいぶ良くなるが、前髪の角張りが復活してしまい、結局意味がないのだ。

 

そこで、髪の毛に関しては、ハイポリ化をせずに、シェーディング(陰影づけ)を滑らかにすることで、ハイポリ化したような見た目にして誤魔化してしまう。

こちらも、作業自体はめちゃめちゃ簡単だ。同じく「形状情報ウインドウ」で、

限界角度調整

限界角度(初期状態で30)を大きめに変更するだけ。これで、

髪#3

ご覧のように、前髪の角張りが消え、滑らかに繋がったような見た目になるのだ。

実際にレンダリングしてみると、よりハッキリとわかる。

髪#3

限界角度30の場合。

髪#5

限界角度45の場合。

これでよし。

ちなみにこの限界角度、逆に小さくしてやると、緩い角度のポリゴンでも角張って表示されるようになる。機械製品など、面を際立たせたい場合などに有効だ。

 

 

以上で、ローポリで作成したキャラクターを、お手軽にハイポリ表示対応してやることが出来る。

そうそう、言い忘れたが、ハイポリ化した場合は、テクスチャも差し替えておく必要がある。ローポリの場合は、陰影づけをテクスチャの絵に焼き込む方法で行っていたが、ハイポリの場合は、陰影づけをシェーディングに任せるので、テクスチャ自体には影を付けていないものを使用するからだ。

 

これにて

走る

ハイポリ化キャラの完成!

 

 

追補:サブディビジョン化のポリゴン密度をコントロールする

情けないことに、早とちりで機能を間違えていた。みっともない上に、せっかく読んで下さった方々に申し訳ない。ということで、訂正がてら、追加情報上げときます。

ついでと言っちゃ何ですが、練習台にしているキャラモデルも、チョビットずつグレードアップしているので、スクリーンショットも一部入れ替えてあります。前髪を盛り上げてみたら、より元キャラの印象に近づきました。にしても、元気な前髪だねぇ。

まず、形状情報のウインドウにある適用率だが、この数値は、純粋にどのぐらい角を丸めるか、のみを決める数値のようだ。では、一枚のポリゴンが何枚に分割されるか、をコントロールする方法は、というと、これがちゃんとある。それも、目的に応じて二種類。

 

サブディビジョン表示に対応する方法

今回のキャラのように、ポリゴン自体は分割しないが、表示はサブディビジョン化したい場合。じつは、自由曲面と同じ手段が使える。つまり、ブラウザ上で表示されているアイテムの名称に、「より粗く(>>)」「より細かく(<<)」の指定文字をくっつければよい

実際の画面を見てみよう。まずは、今回のキャラのブラウザ情報がどうなっているのかというと、

ブラウザ情報#1

こんな感じ。このページで例として分割していた顔面は、ブラウザ上で選択している「頭」のオブジェクトに相当する。この名称を変更すればよいわけだ。

まずは、粗くする方から。これは、現在の名前を「」から「>>頭」にしてやればよい。すると、このようになる。

表示分割荒目

上の方にある、同様の画面と比べてもらえれば一目瞭然。変更前は縦横それぞれ四分割(16ポリゴンに分割)されていた各ポリゴン面が、二分割(つまり4ポリゴンに分割)されている。じつは、この程度の分割でも、このキャラだとそこそこみられる外見だ。シェーディングの影の付き方を比べてもらえれば、なんとなくわかるかと。

つづいて、細かく分割する方を見てみると。名前を「」から「<<頭」にしてやると、

分割表示細かめ

法線が、もはや毛皮並みの密度に。・・・って、笑うしかない画像になってしまったなあ。あっはっは。

当然のことながら、ここまで細かくしても、表示はそれほど良くなるわけではない。むしろ、レンダリング速度が落ちる等の弊害が現れてくる。細分化は、ほどほどに。

 

Convertによるハイポリ化を調節する方法

ハイポリ化したメッシュを取得する際に、どの程度に分割するのかを指定する方法については、もっと簡単。Convertで出てくるダイアログの、

変換ダイアログ

「曲面の分割」で指定できる。

こちらも、実際に見てみよう。それぞれの結果は、以下の通り。

分割粗い

粗い

分割普通

普通

分割細かい

細かい

最も細かい

最も細かい

・・・・・・・・・・・。

細かすぎっ! もはやポリゴンが認識でせきませんがな。最後のは、明らかにやり過ぎだ。

 

さて、この分割を利用すると、ローポリからハイポリモデルを作り上げる工程が、さらに簡単になる。つまり、

  1. ローポリで形状を仕上げる
  2. スキニングを調節する
  3. 「粗い」で分割
  4. 1. に戻る

の繰り返しでOK、というわけだ。いきなり細かいメッシュをいじり回してウジウジするよりは、よほど楽に作業が進む。

ハイポリ作成で挫折していた方々(含む俺)、是非お試しあれ。