2016年8月21日日曜日

FreeStyleで描線がつながったきれいなエッジを出す設定

昨日行われたこちらのblenderユーザーのミートアップイベントに行ってきました。
で、内容はさっそくまとめが作られているようなのでこの辺りを見ていただくとして。

今回FreeStyleを実際の作品に使用されている事例についての発表があり、その中で
3Dモデルのエッジが細かく分割されすぎたり、途切れて欠けてしまうことがある。
とのお話が。

そういえば、自分も最初の頃はそんな感じで困ってたような・・・。
じゃあ、どうやって対策したんだっけ?と改めて考えてみると、普段は設定済みの
テンプレを使っているため意外と思い出せないもので。

で、いい機会なので復習ついでに手順をまとめてみました。
それでは以下から。

まずはじめに適当なシーンを用意しました。
プリセットオブジェクトのユタティーポットを追加、Subsurfモディファイヤで
細分化レベルを3にしています。こんな感じ。


で、FreeStyleを有効にして、線の太さの指定だけ絶対→相対的に変更して、
あとはデフォルト設定のままレンダしてみます。とこんな感じに。


早速注ぎ口の下側でラインが一部欠けているところがありますね。
このレンダのエッジがどのように分割されているか分かりやすくするために
線の入り・抜き設定をつけて再度レンダしてみます。


入り抜きはLineStyleの『厚さ』に『Along Stroke』モディファイヤを追加しています。
各項目の数値は画像を参照。で、この状態でレンダするとこんな感じ。


注ぎ口の形状で、上側ラインの本体につながる手前あたりの曲がった部分と、
下側ラインの先端から左下に向かって緩やかにカーブしていく部分のエッジが
描線が細かく分割されているのがわかるかと思います。
また注ぎ口の先端の開口部の稜線もかなり細かく分割されている感じです。

で、ここからが対策です。
まずはFreeStyleのオプションで『面のスムーズさ』をオンにします。


つぎにLineStyleの設定で『ジオメトリ』に『Bezier Curve』モディファイヤを追加。


最初から『Sampling』が追加されているのでその下に『Bezier Curve』がきます。
以上で対策完了。

これでレンダしてみるとこんな感じに。

最初の画像で細かく途切れていたエッジがそれっぽい感じにつながりました。
わかりやすく比較するために入り抜きの太さに加えて、色も変えてみるとこうなります。
まずは対策前のレンダ。


次に対策後のレンダ。


描線の入り側が細く赤く、抜き側が太く青くなるように設定しています。
いい感じにつながったエッジがレンダされるようになりました。

で、実際何がどう変わったのか?といえば、追加した『Bezier Curve』で
3Dデータのメッシュのエッジを直接レンダするのでなく、それらの頂点を含む
ベジェ曲線に近似した上でそのカーブをレンダする、という感じ。

3Dモデルをいじらずともお手軽にそこそこいい感じになるので良さげです。