ロボットに限らないのですが、円柱をレンダリングする場合、側面は滑らかに、両端の面との境はきっちりと出すにはどうすればいいのかなーとずっと思っていました。
トラッド11とクラブタイプを作っているときの自分の答えは、
- だいたいの面を作成する
- Subsurfモディファイアを適用
- 角を出したいエッジにMean Crease=1を設定
というものでした。これはモデルをできるだけ軽く作って、レンダリングするときにSubdivisionsの値を増やして滑らかに表現するというとこでは思った通りになったと思っています。
ただ問題は、不要に面数が増えてしまうこと。ロボットの場合は、平面に近いところも多くて、そこは分割しても変わらないので、無駄になってしまいます。
そこで思っていたのが、ShadingのSmoothを使う方法。
ちょっと試してみました。オブジェクトを3つ作成しました。左よりCylinder(Vertices+32)、Cylinder(Vertices+16)、Cylinder(Vertices+16)+Subserfモディファイア(Subdivisions=2)です。Shadingは全てFlatにしています。
で、ここでおもむろに全てのShadingをSmoothにしてみます。
このように、スームスになるもの、角がはっきりせずかつ面にもなんか陰がついてます。これを角はくっきり、面は滑らかにする方法がわかっていませんでした。なのでShadingをFlatのまま、面分割の値を上げてレンダリングしてました。
少し調べてみますと、Edge Splitモディファイアというのがあるらしいです…(モディファイアについては使うもの以外全然調べてませんでした…)。
そこで左の2つのオブジェクトにEdge Splitモディファイアを適用(Shading=Smooth)し、一番右のだけShadingをFlatにしたのが以下のものです。
これが思った感じのものです。角がはっきり、面は滑らかになってます。一番右のはFlatなので、面がそのままわかってしまいますね。もっとSubdivisionsの値を上げるとわかりにくくなりますが、面数が増えてだんだん重くなってきます。
角がはっきりしすぎる、という点はあるのですが、自分がやるモデルの場合は、極端なアップにもしないので、これぐらいでもそこそこいいのでは、と思ってます。
ちなみに面数は左から、162、92、1584とさすがに分割すると倍々になってます。
レンダリングしてみますと、
さすがに18面の円柱は角が目立ってしまいますが、遠目のものではこのあらさでも十分なのでは、と思います。滑らかなボディの場合はSubsurfモディファイアを使うのがいいのかもしれません。
次回はこのやりかたで、作ってみようと考えてます。