From BlenderWiki

Jump to: navigation, search

Blender 2.71: Freestyle NPR レンダリング

新機能 #1: Textured strokes(テクスチャ付きストローク)

オリジナルのスタンドアロン版の Freestyle プログラムで利用可能であったテクスチャストロークの正式対応は、長らく待ち望まれていた機能の一つでした。Paolo Acampora 氏が Patch D246 で実装し、この機能を Blender 用に復活させました。

Freestyle のテクスチャストロークのサンプル(右)と、生成元の3Dモデル(左)。Paolo Acampora 氏作
Freestyle によるテクスチャ付の鉛筆マークAnother example using textured pencil marks in Freestyle (File:Teapot pencil.blend).

Blender の旧シェーディングシステム同様、Freesytle のライン描画に適用されるテクスチャは、他の物の上へのスタックや、違う座標系(グローバル(Global)、ビュー(View)、ストローク追従(Along Stroke)など)へのマッピング、別のブレンディングオプションを通じたディフューズカラーやアルファ透過へのマッピングが可能です。ストロークに追従してマッピングされる各テクスチャは、ヘッド(Head)、ボディ(Body)、テール(Tail)からなる Freestyle 特有のブラシテクスチャ、または単にプレーンな左右テクスチャを使用できます。


Freestyle GUI を通じたテクスチャの使用

Render Layer(レンダーレイヤー)プロパティ内のTexture(テクスチャ)オプション

Freestyle GUI(要はParameter Editor(パラメーター編集)モード)中、Render Layers(レンダーレイヤー)プロパティの▼Freestyle Line Style(ラインスタイル)パネル中の Texture(テクスチャ)タブからテクスチャを有効にできます。Spacing Along Stroke(ストローク方向の間隔)パラメータは、ストロークの長さに従いテクスチャがマッピングされる「ペース」を設定できます。テクスチャのオプションは Texture(テクスチャ)プロパティ内の新しい Line Style(ラインスタイル)タブ内にあります。「Go to LineStyle Textures(ラインスタイルテクスチャプロパティへ)」ボタンは、他のプロパティコンテクスト内のテクスチャ設定へのショートカットです。


Textures(テクスチャ)プロパティ内の Line style(ラインスタイル)テクスチャスロットオプション

テクスチャは通常どおり、Texture(テクスチャ)プロパティの Line Style(ラインスタイル)タブ内の、ラインスタイルのテクスチャスロットに割り当てできます。

Freestyleストロークの痕跡専用のAlong Stroke(ストローク追従)同様、ラインスタイルテクスチャに使用可能な座標系は、他のタイプのテクスチャスロットでも利用可能な一般的な3つのマッピング、Generated(生成)Global(グローバル)Window(ウィンドウ)です。

Along Stroke(ストローク追従)オプションは、テクスチャをストロークの長さにしたがってマッピングし、鉛筆やペイントブラシ、その他の芸術的表現の痕跡を可能にします。 このマッピングを有効にした場合、Use Tips(先端を使用)オプションでテクスチャ画像の下半分の左右四分の一ずつをストロークのヘッドとテールに、上半分をストロークのボディに使用できます。

Along Stroke(ストローク追従)マッピングを使用したサンプル画像

Influence(影響)セクションでは、テクスチャがディフューズカラーやストロークの透過度にどれぐらい影響するかを指定できます。Blend Type(ブレンドタイプ)オプションで、ラインスタイルのテクスチャ用のブレンディングモード(英文)を設定できます。


ノードベースのテクスチャも、ラインスタイルに使用可能です。

Freestyle ストローク上のノードテクスチャ


デニム地テクスチャのストロークによるマウススケッチ。Light BWK氏作。(CC0) (File:Mouse.Blend)


Python スクリプトによるテクスチャの使用

Freestyle Python API を元にした Style モジュールもテクスチャを使用できるようになりました。このために、二つのシェーダが API に追加されました。

  • BlenderTextureShader(mtex)。ラインスタイルテクスチャスロット mtex をストロークに割り当てます。
  • StrokeTextureStepShader(step)。ストロークに沿ったテクスチャ座標での間隔 step を指定します。

ラインスタイルテクスチャスロットは、ラインスタイル ID データブロックの一部としてのみ利用可能です。そのため、Python スタイルモジュール内からテクスチャ付きストロークを使用するには、ラインスタイルを一つ作成し、テクスチャスロットをその場で割り当てる必要があります。

Python スクリプトによる Freestyle テクスチャ付きストローク(File:Texture scripting test.blend)

新機能 #2: Sorting(ソート)

Sort(ソート)オプション

ラインスタイルにラインを重ね合わせる順序を変更する、ソート用のオプションが追加されました。これにより、アーティストがどのラインを他より上に描画すべきかの決定がコントロールしやすくなります。

ソートオプション

Sort key(ソートキー)

ソートキーは、線を重ね合わせる順序を決定するのに使用されます。二つのソートキーが利用可能です。

  • Distance from camera(カメラからの距離)。カメラから遠いラインの上に近いラインを載せます。
  • 2D length(2D長さ)。短いラインの上に長いラインを載せます。
Integration type(統合タイプ)

カメラからのラインの距離は各頂点によって変わるため、各頂点から導出された値から一つのラインのソートキーを計算するのに、Integration Type(統合タイプ)というオプションが使用されます。5つの統合タイプが利用可能です。

  • Mean(平均)。頂点群から取得した中間値をそのラインの値として計算します。
  • Min(最小)。頂点群から取得した最小値をそのラインの値として計算します。
  • Max(最大)。頂点群から取得した最大値をそのラインの値として計算します。
  • First(最初)。最初の頂点から取得した値をそのラインの値として計算します。
  • Last(最後)。最後の頂点から取得した値をそのラインの値として計算します。
Sort order(ソートの順序)

重ね合わせの順序を、Default(デフォルト)の(前述の)ソートキーの順番、または Reverse(反転) の順序のいずれかにすることができます。


サンプル

下の二つの画像は、別々の色の立方体を Freestyle でレンダリングした物です。最初の画像ではソートが無効になっています。このレンダリング画像では、手前の黄色の箱によって青い箱がさえぎられているという予想を裏切って、青ラインの一部が黄ラインの上に載っているという不自然な部分があることに注目してください。二つめのレンダリング画像では、平均ソートにより、正しく順序でラインが重ね合わせされています。これには Distance From Camera(カメラからの距離)をソートキーとして、Integration Type(統合タイプ)として Mean(平均)が使用されています。

Sorting example box 1.png Sorting example box 2.png

下の画像は別の Freestyle のラインレンダリング結果です。このシーンにはトーラスと円柱が含まれています。最初の画像はソートなしで作成されており、再びこの画像はライン順が間違って重ね合わせされているのを示しています。二つめの画像は、ラインがカメラからの距離の平均でソートされています。重ね合わせの順序は改善されていますが、まだ完全ではありません。トーラス内側のシルエットラインは手前側にある黄ラインの前と、向こう側の黄ラインの下にこなければいけませんが、内部のシルエットが一つの長いラインの場合は不可能です。この結果はソートの限界を示しています。

Sorting example torus 1.png Sorting example torus 2.png

ソート適用の限定の現実的な解決策は、分割と組み合わせて使用することです。下の3つめの画像では、ラインが100ピクセルの2D Length(2D長さ)で分割し(前掲のスクリーンキャプチャのLine Style(ラインスタイル)オプションを見てください)、カメラからの距離でソートしています。ラインの順序が正しい表示結果になりました。

Sorting example torus 3.png