Blender線画テクニックいろいろ
Blenderでの線画表現について。
いろいろ思いついたのでメモかつ紹介みたいな。
レンダ後エッジ
今回は詳しく扱わないけどとりあえず紹介。
・ポストプロセスの辺
一番簡単なやつ。レンダープロパティ→ポストプロセッシング→辺にチェックをいれるとポストプロセス=レンダ後処理でBlenderが線画を入れてくれる。
なんかよく誤解されてるけどFreestyleとは別物。融通が効かないけど非常に処理が軽い。
必要な線は大体全部出てくれてけっこー便利ですね。でもいらん線も出てしまって修正がめんどくさかったりする。
・Freestyle
レンダープロパティ→Freestyleにチェックを入れると使えるやつ。
いろいろな調整ができて、筆圧っぽい強弱をつけたり色をつけたりできる。SVGというベクターデータとして書き出したりもできる。素だと欲しい線がちゃんとでてくれなかったりとか、ハイポリだと処理がめっちゃ重いなど弱点もあります。
で、上の2つはレンダ後に付加されるもので、作業中プレビューでみることはできないし、出力したモデルにも反映されないので最終結果の確認に手間がかかるのが結構問題になることがあります。俺は最近そういうのはリアルタイムな感じでサクッと確認したいという欲求が強い。
で以下が今回の主題です。
モデル自体につけるエッジ
マテリアルとかモディファイアを駆使してモデル自体に線画をつける方法がいろいろあります。モデル自体にエッジがあらかじめついていれば、ルックの確認にいちいちレンダする必要がなく作業が速くてよいわけです。
・裏ポリエッジ
これはポピュラーな方法で、ゲームなどでよく使われている(らしい)奴。
ゲーム等ではポリゴンの裏面が表示されないことを利用して、モデルの表面を裏ポリゴンで覆うと、中のモデルが透けて周囲にエッジができるというテクニック。
厚み(Solidify)モディファイアをつけてオプションの「法線を反転」を設定すればできる。んだけど、Blenderは裏面が「表示される」ので、一工夫加える必要がある。
・ソリッド表示での確認
そのままだと厚みモディファイアでつけられた裏面に覆われていて表示が暗い。ナビゲーションパネルのシェーディング→裏面の非表示にチェックを入れると裏面を透かすことができる。※レンダリングでは反映されないので注意。
・レンダリングに反映させる
厚みモディファイアには、生成した面のマテリアル指定をずらすオプションがある。
マテリアルインデックスオフセットの値を1にすると、元々ポリゴンに指定されてるマテリアルの1つ下のマテリアルを割り振ることができる。
裏ポリ用のマテリアルはマテリアルノードを使って裏面を透過させる。
名前の横のノード使用ボタンを押してマテリアルのノードを有効にする。
追加→入力→ジオメトリでジオメトリノードを作成し、「前後」を出力ノードの「アルファ」につなぐ。前後、というのはポリゴンの前後、というか表裏のことで、これをアルファ値として使うことで透かすわけです。
裏ポリは結構お手軽にオブジェクトにエッジをつけられるわけですが、原理上輪郭以外にエッジををつけられないという問題もあります。
どーしたもんかなーと考えあぐねていたところ以下のような方法を思いつきました。
・ベベルエッジ
辺に線画を描画したい、ということは角辺に色がついていてほしい…でも辺は面じゃないので色なんかつかない…じゃあ辺を面にすればいい?ということはベベル??
という発想で思いついたら丁度よくベベルモディファイアに生成面のマテリアル指定がついてました。
やることは簡単で、オブジェクトにベベルモディファイアをつけて、マテリアルの番号を黒いマテリアルのに割り当てるだけ。「制限方法」で角度とかの制限を加えれば、フラットな面には線をつけないというようなことができますな。
ただしこれはあくまで各辺に線がつくだけなので、輪郭はつきません。
で、どうすればいいかというとあわせ技ですな。
・裏ポリエッジ+ベベルエッジ
裏ポリエッジとベベルエッジを組み合わせれば、欲しいエッジを全部得られるわけです。
おまけ
・辺分離+厚み
辺分離モディファイアをかけたあとに厚みモディファイアをかければ、それぞれ面ごとに分離した立体が得られて、それに裏ポリがかかれば欲しいエッジが全て得られるのではないか、と思いついたやつ。厚みをかけてるのでモデルが太るという問題点があるけど、辺分離がシャープをつけた辺を分離してくれるので、手動でエッジを指定できるという利点もある。まぁでもあんまつかわないかな。のでおまけ。
いろいろ思いついたのでメモかつ紹介みたいな。
レンダ後エッジ
今回は詳しく扱わないけどとりあえず紹介。
・ポストプロセスの辺
一番簡単なやつ。レンダープロパティ→ポストプロセッシング→辺にチェックをいれるとポストプロセス=レンダ後処理でBlenderが線画を入れてくれる。
なんかよく誤解されてるけどFreestyleとは別物。融通が効かないけど非常に処理が軽い。
必要な線は大体全部出てくれてけっこー便利ですね。でもいらん線も出てしまって修正がめんどくさかったりする。
・Freestyle
レンダープロパティ→Freestyleにチェックを入れると使えるやつ。
いろいろな調整ができて、筆圧っぽい強弱をつけたり色をつけたりできる。SVGというベクターデータとして書き出したりもできる。素だと欲しい線がちゃんとでてくれなかったりとか、ハイポリだと処理がめっちゃ重いなど弱点もあります。
で、上の2つはレンダ後に付加されるもので、作業中プレビューでみることはできないし、出力したモデルにも反映されないので最終結果の確認に手間がかかるのが結構問題になることがあります。俺は最近そういうのはリアルタイムな感じでサクッと確認したいという欲求が強い。
で以下が今回の主題です。
モデル自体につけるエッジ
マテリアルとかモディファイアを駆使してモデル自体に線画をつける方法がいろいろあります。モデル自体にエッジがあらかじめついていれば、ルックの確認にいちいちレンダする必要がなく作業が速くてよいわけです。
・裏ポリエッジ
これはポピュラーな方法で、ゲームなどでよく使われている(らしい)奴。
ゲーム等ではポリゴンの裏面が表示されないことを利用して、モデルの表面を裏ポリゴンで覆うと、中のモデルが透けて周囲にエッジができるというテクニック。
厚み(Solidify)モディファイアをつけてオプションの「法線を反転」を設定すればできる。んだけど、Blenderは裏面が「表示される」ので、一工夫加える必要がある。
・ソリッド表示での確認
そのままだと厚みモディファイアでつけられた裏面に覆われていて表示が暗い。ナビゲーションパネルのシェーディング→裏面の非表示にチェックを入れると裏面を透かすことができる。※レンダリングでは反映されないので注意。
・レンダリングに反映させる
厚みモディファイアには、生成した面のマテリアル指定をずらすオプションがある。
マテリアルインデックスオフセットの値を1にすると、元々ポリゴンに指定されてるマテリアルの1つ下のマテリアルを割り振ることができる。
裏ポリ用のマテリアルはマテリアルノードを使って裏面を透過させる。
名前の横のノード使用ボタンを押してマテリアルのノードを有効にする。
追加→入力→ジオメトリでジオメトリノードを作成し、「前後」を出力ノードの「アルファ」につなぐ。前後、というのはポリゴンの前後、というか表裏のことで、これをアルファ値として使うことで透かすわけです。
裏ポリは結構お手軽にオブジェクトにエッジをつけられるわけですが、原理上輪郭以外にエッジををつけられないという問題もあります。
どーしたもんかなーと考えあぐねていたところ以下のような方法を思いつきました。
・ベベルエッジ
辺に線画を描画したい、ということは角辺に色がついていてほしい…でも辺は面じゃないので色なんかつかない…じゃあ辺を面にすればいい?ということはベベル??
という発想で思いついたら丁度よくベベルモディファイアに生成面のマテリアル指定がついてました。
やることは簡単で、オブジェクトにベベルモディファイアをつけて、マテリアルの番号を黒いマテリアルのに割り当てるだけ。「制限方法」で角度とかの制限を加えれば、フラットな面には線をつけないというようなことができますな。
ただしこれはあくまで各辺に線がつくだけなので、輪郭はつきません。
で、どうすればいいかというとあわせ技ですな。
・裏ポリエッジ+ベベルエッジ
裏ポリエッジとベベルエッジを組み合わせれば、欲しいエッジを全部得られるわけです。
おまけ
・辺分離+厚み
辺分離モディファイアをかけたあとに厚みモディファイアをかければ、それぞれ面ごとに分離した立体が得られて、それに裏ポリがかかれば欲しいエッジが全て得られるのではないか、と思いついたやつ。厚みをかけてるのでモデルが太るという問題点があるけど、辺分離がシャープをつけた辺を分離してくれるので、手動でエッジを指定できるという利点もある。まぁでもあんまつかわないかな。のでおまけ。
コメント
コメントを投稿