2016-11-21

toonshading


ここでは、Houdini 15.0 以降での、従来よりも簡略化されたトゥーンシェーダの使用法を説明する。

使用したバージョン: 15.0.439 および 15.5.632
シーンファイルへのリンクは一番下にあり。

基本的な流れ

  1. オブジェクト読み込みと事前処理
  2. マテリアルの作成
  3. レンダリング
  4. 背景色
  5. アウトライン
  6. カラー
  7. ファイル出力
  8. まとめ

1. オブジェクト読み込みと事前処理

  1. Houdini を起動、ビューポート内にカーソルがある状態で TAB->Test Geometry から3種類のテスト形状のうち好きなものを配置。

    ここでは Squab を使用。Enter キーを押して確定、原点に配置する。

    testgeometry_squab_object1 ができた。
  2. ネットワークパネルで testgeometry_squab_object1 を選択、ダブルクリックするなり 'i' キーを押すなりして中に入る。
      testgeometry_squab1 というノードがあるはず。
  3. testgeometry_squab1 の出力に Attribute Delete ノードを追加。attribdelete1 が出来る。パラメータビューの Primitive Attributes のところで、右端の ▽ から、Material (shop_materialpath) を選択。

    表示フラグ (ノードの右端の水色のフラグ) をこのノードに移すと、マテリアルが削除されたのがわかる。

2. マテリアルの作成

Houdini 15.0 以降、Toon Color Material と Toon Outline Material が Houdini に含まれている。よって、こちらで示したような自作は不要。

  1. Material Palette を開き、左側リストで下へスクロール、Non-Photorealistic 以下の
    • Toon Color Shader
    • Toon Outline Shader
    の2つを右側の /shop パネルにドラッグ&ドロップする。
  2. ネットワークエディタで /obj/testgeometry_squab_object1 以下に戻り、
    1. TAB からMaterial ノードを2つ作成
    2. それぞれを color と outline と名称変更、
    3. 両方とも attribdelete1 の出力に接続する。
  3. TAB からMerge ノード (merge1) を作成、color と outline ノードの出力を接続、表示フラグをこのノードに移す。ここまでのネットワークが以下の通り。

    Material ノードに関する追加説明はこちら
  4. 3. で作成した color (Materialノード) を選択、Material フィールドの右にある ノード選択アイコン をクリック、表示されたウィンドウで /shop/tooncolorshader をハイライト選択。

    Accept ボタンを押して確定。
    ビューポートではオブジェクトが以下のようにシェーディングされる。
  5. 同様に、outline (Material) ノードでも Material フィールドで /shop/toonoutlineshader を選択。するとオブジェクトは真っ白になる。
  6. ネットワークエディタで merge1 を選択、Shift+R でノードの接続順を入れ替えると、ビューポートにカラーシェーディングが戻る。

3. レンダリング

  1. ビューポートでレンダリングしたい画角にカメラを合わせ、Ctrl キーを押しながら、Lights and Cameras シェルフから Camera ボタンをクリックして、カメラを配置。
  2. Render View に行き、カメラを /obj/cam1 に設定、Render ボタンをクリックしてレンダリングを実行。

    よく見るとエッジがカクカクしている。
  3. ネットワークビューで一つ上に上がり(ショートカットは U キー)、/obj に行く。testgeometry_squab_object1 (または最初に作成したノード)を選択、Render タブ以下の Render Polygons As Subdivision をクリック。

      Subdivision Style はデフォルトは Mantra Catmull-Clark だが、Open Subdiv Catmull-Clark でも、好きな方を選択。
  4. 再度レンダリングを行うと、スムーズな結果を得る。右がサブディビジョンサーフェス (OpenSubdiv)。

4. 背景色

背景色を黒から白に変えたい場合、簡単な方法はないが、やり方はある。

  1. COP を使う場合
    1. Edit->Compositing Preferences... で Image Resolution をレンダリングする解像度に変更。ここでは 1280x720。
    2. Scene View (3Dビューポート) から Compositing View に移り、ネットワークビューで /img 以下に行く。

      ここにすでに comp1 (ないし img1) という Image Network ノードがある場合、中に入る。ない場合は TAB->Managers->Image Networkで作り、中に入る。
    3. TAB->Color->Color で Color ノード を作成。color1 が出来る。デフォルトの色は白なので、そのまま使う。

      なお、この color1 までのパス、/img/comp1/color1 または /img/img1/color1 は後ほど使う。
    4. Render View に戻り、D キーを押して、Display Options ウィンドウを開く。
    5. Filename のフィールドに
      op:/img/comp1/color1 (または /img/img1/color1) 
      と入力、Apply を押すと、背景が COP で設定した結果になる。
  2. 画像ファイルを使う場合
    1. カメラの背景として画像ファイルを読み込むことも可能。Render View の Display Options でBackground を指定した場合は、一度オフにする。
    2. /img/comp1/ (または /img/img1/) に戻る。
    3. color1 の上で、RMB->Save->Image... を実行。下のパネルでファイル名を指定する。

      Houdini から .png で出力する場合、A も指定するのが無難。最後に Save をクリック。
    4. ネットワークエディタで /obj/cam1 を選択。
    5. View タブの Background Image に書き出した画像を指定。Render View は指定した画像を背景画像として読み込む。

5. アウトライン

最初にアウトラインから調整していく。

  1. ネットワークビューで /shop に行く。すると作成したシェーダ二つを確認できる。
  2. toonoutlineshader を選択。パラメータは以下の通り。
  3. Color はアウトラインの色。
  4. Thickness 以下でアウトラインの太さを決定する。
    • In World Space は3D座標系での幅。つまり、3Dオブジェクトとしての幅を決めているため、カメラが近づけばアウトラインは太く見え、遠くなれば細く見える。
    • As Image Fraction はレンダリング解像度(2D)に対する比率。カメラの距離に関係なく、幅は一定。遠くに配置されたオブジェクトに対するアウトラインは相対的に太く見えるようになる。
    • Blend は、上記二つをどの位ブレンドして使うかを設定。Blend が0の場合、「ブレンドしない」ではなく、In World Space だけを使用し、1.0 の場合は、Image Fraction のみを使う。デフォルトは0.3。
      例えば、オブジェクトをカメラから遠くに配置し、In World Space と As Image As Image Fraction をデフォルトのまま、1280x720でレンダリングを行う際に Blend の値を左から0.0, 0.5, 1.0 と変更したのが下の図 (フルスケール)。
  5. Spill In 以下でどの位アウトラインがサーフェス内に侵食するかを決める。
    • Spill In が 0 の場合、侵食は無し。1の場合、Max Object Depth で設定した値以上の厚さをもつ部分がアウトラインの色で塗りつぶされる。
    • Max Object Depth と Spill In が 1 の場合、オブジェクトはアウトラインの色ですべて塗りつぶされる。形状次第だが Ma x Object Depth の値を 0からあげていくか、1から下げていくかで面白い効果を得ることが可能。
  6. いじったパラメータ値をデフォルト値に戻したい場合は、各パラメータラベル上で、RMB-> Reverts to Defaults とする。

6. カラー

  1. tooncolorshader を選択。パラメータは以下の通り。

    ハイライト (highlight)、中間色 (Mid Color)、シャドウ(Low Color) の3色で設定し、ハイライトと中間色に関しては Amount で大きさの値が調整可能で、すべてにテクスチャをアサインすることも可能。
  2. 色分けはライティングにも影響される。ポイントライトやディレクショナルライトなどと併用するのが望ましい。

7. ファイル出力

  1. Render View での結果をファイルとして出力するには Mantra ROP を使う。ROP にアクセスするには次の二通りの方法がある。
    1. Render View の上のツールバーで赤く囲ったところをクリックする。

      この場合、別ウィンドウで開く。
    2. ネットワークビューで、/out 以下に行き、mantra ROP (mantra_ipr) ノードを選択。
  2. Mantra ROP の一番上の部分で、出力するフレーム数解像度などを決定する。
    • Valid Frame Range を Render Frame Range とすることでその下の数値で開始フレーム、終了フレーム、増分を指定可能。
    • カメラの指定は必須。/obj/cam1 とあった場合、このカメラの View タブの Resolution で指定された解像度がレンダリングが解像度となる。
    • その下の Override Camera Resolution をオンにすると、上記の解像度を 1/2, 1/4 などとしたり、別の解像度を設定することも可能。
  3. その下の Image タブ以下でファイル名を指定する。

    デフォルトのファイル名は、変数を使って記述されている。この詳細はこちら。
    変数を極力使わずに書いても構わないが、最低限 $F3 といたファイル番号の指定が無いと上書きを続けることになる。
  4. 設定を終了したら一番上の Render to Disk ボタンを押してレンダリングを開始。
    • 連番の場合は、Render to Disk
    • 一枚だけなら Render to Mplay
    が良いと思う。
  5. 連番画像を Mplay で確認するには、メインメニューの Render->Load Disk Files... で、書き出したファイルを読み込み、再生。Mplay で png などの別画像フォーマットや QuickTime に変換することも可能。
  6. Houdini の合成ツール (COP) を使って、引き続き合成作業を行なうことももちろん可能。

まとめ

0 件のコメント:

コメントを投稿