この記事では Pencil+ ラインの概要と、Pencil+ ラインの基本的な使用方法を解説します。
1 Pencil+ ラインとは?
Pencil+ ラインはオブジェクトに輪郭線を描画する機能です。オブジェクトの交差、マテリアル ID の境界、スムージングの境界など、オブジェクトの様々な情報を使用してラインを描画する場所を指定できます。
Pencil+ ラインには線の表現に関わる多くのアトリビュートが組み込まれています。目的の表現にあわせて必要なアトリビュートを設定していきます。
1-1 Pencil+ ラインはポストエフェクト
Pencil+ ラインはポストエフェクトとしてラインを描画します。
ポストエフェクトとは、後から効果を適用するという技術用語です。Pencil+ 4 ラインは Maya ソフトウェア レンダラがレンダリングした画像に対して、後からラインを合成しています。
では、今回も VRoid Studio から出力したサンプルモデルに Pencil+ ラインを適用する方法を解説していきます。
3DCGで輪郭線を表現する場合、大まかに 3 つの手法があります。
- ポリゴンを使用する手法
- シェーダを使用する手法
- ポストエフェクトを使用する手法
ラインは様々な手法で表現できます。ここでは手法の違いによるラインの特長を簡単に紹介したいと思います。
1. ポリゴンを使用する手法
オブジェクトのメッシュを同じ位置にコピーして反転し、ポリゴンを法線方向に押し出す手法です。ゲームなどリアルタイムコンテンツでは昔から使用されている手法です。レンダラによってはチューブ状のメッシュを生成してレンダリングする場合もあります。
このポリゴンを使用する手法には以下のような特長があります。
- ラインの太さをモデリングツールで編集して調整できる。
- レイ トレースによる反射屈折などレンダリングに関する制限が少ない。
- ラインがカメラのパースによる影響を受け太さが変化する。
- ラインがオブジェクトの外側に描画される。
ポリゴンを使用する方法はラインが 3D 空間上に存在するため、レンダリングに関する制限が少ないことがメリットとして上げられます。ラインを太く設定したり、カメラがラインに接近すると、オブジェクトとラインの隙間が目立つようになります。
2. シェーダを使用する手法
マテリアルのシェーダでラインを表現する手法です。Maya ではサンプラ情報ノードの対向率を使用する手法があります。
対向率はカメラから見たポリゴンの法線角度に応じた値を返す、サンプラ情報ノードのアトリビュートです。ランプノードのグラデーションの補間をなくすことでラインのように見せることができます。
サンプラ情報ノードの対向率を使用したラインは以下の特徴があります。
- レイ トレースによる反射屈折などレンダリングに関する制限が少ない。
- ラインがカメラのパースの影響を受けラインの太さが変化する。
- 形状によってラインの太さが変化するため、ラインの太さを制御するが困難。
- ラインはオブジェクト内側に描画される。
ラインの太さが法線角度に依存するため、カメラと水平に近いポリゴンではラインが細くなり、角度がなだらかなポリゴンではラインが太くなります。
3. ポストエフェクトを使用する手法
オブジェクトID、Z深度、法線角度などの情報に所定のフィルターをかけ、輪郭線を抽出する手法です。これは、Pencil+ 1 や Liquid+ のラインで採用していました。ポリゴンを使用する手法やシェーダーを使用したラインと異なり、スキャンラインレンダラーと異なるプロセスでラインを計算します。最終的にスキャンラインレンダラーがレンダリングした画像にラインを合成して1つの画像を生成します。
Pencil+ 2 以降では独自の計算方式を採用しており、ポストエフェクトは生成されたライン画像を重ねるために利用しています。
Pencil+ ラインには以下の特徴があります。
- カメラのパースの影響を受けない。
- 均一な太さでラインを描画できる。
- ラインがオブジェクト内と外両側に描画される。
- レンダリング時間が速い。
- レイ トレースによる反射屈折に対応していない。
ポストエフェクトを使用した手法はポリゴンやシェーダーを使用したラインと異なり、3D空間上の制約が少ないのが特長です。
例えば写真や CG に手描きでラインを書き足す場合、どの位置にラインを描くでしょうか?
オブジェクトの内側に描くでしょうか、それとも外側に描くでしょうか。私達はオブジェクトの境界を中心として、内と外の両側にラインを描くことが自然だと考えました。
(実際には手描きの線画の場合、絵のタッチによってはラインを外側に寄せたり、繊細に使い分けされている場合が多いと思います)
「ポリゴンを使用する手法」「シェーダーを使用する手法」では、オブジェクトの内側と外側のどちらか一方にしかラインを描画できませんでした。ポストエフェクトでは 3D 空間上の制約が少ないので、オブジェクト内と外の両側にラインを描画できます。しかし、ポストエフェクトではポリゴンやシェーダーのようにレイトレースの反射屈折に対応できません。
今回紹介した「ポリゴンを使用する手法」「シェーダーを使用する手法」「 ポストエフェクトを使用する手法」いずれの手法も技術的な特長があり、得意な表現や苦手な表現があります。これらの特長は作品の方向性によってメリットにもデメリットにもなりえます。また、技術的に苦手な問題を解決するオプションを提供してるソフトもあります。
Pencil+ ラインがポストエフェクトを選択した理由は、実現したいライン表現にポストエフェクトが適していたからです。では実現したいラインがどんな物であったかについては、次のコラム 2「Pencil+ ラインの表現力」で紹介したいと思います。
Pencil+ ラインをアニメに使用していただける理由は、ラインの美しさ、表現力の高さ、レンダリングの速さなどが上げられると思います。
ここでは Pencil+ ラインを使用すると、どのような表現が可能なのか簡単に紹介したいと思います。Pencil+ ラインは様々なアトリビュートを使用して、作品にあわせたラインを表現できます。
均一な太さのライン
近年のアニメでは均一な太さの線で作画される作品が多い傾向が見られます。線の太さを均一にする理由は絵柄の流行など様々な要因がありますが、絵の品質を一定に保つ効果があるのが理由の 1 つではないでしょうか。漫画のように入り抜きのあるラインよりも、均一な太さのラインで描いた絵の方が、絵の品質を一定に保ちやすく量産に向いています。
手描きの絵と CG を同じカット内で馴染ませたい場合、均一な太さのラインを描画できることは重要なポイントの 1 つです。
距離によって太さが変化するライン
手描きの絵では遠くにあるオブジェクトの線は感覚によって省略されますが、CG を使用すると遠くにあるオブジェクトの線も詳細に描画されます。これは CG の長所でもありますが、ノンフォトリアリスティックレンダリングでは短所になる場合があります。
線画では線の多い部分に視線が誘導されます。CG を使用して遠くにあるオブジェクトまで詳細にラインを描画すると、絵の中で本来見せたい部分よりもオブジェクトが密集した部分に視線が集まってしまいます。実写映像で例えると見せたい対象にフォーカスを合わせて周辺をぼかすように、Pencil+ はラインの太さを制御できます。
例えばカメラからの距離に応じてラインの太さを変えることができるので、遠くよりも手前にあるオブジェクトに視線を誘導できます。
指定したオブジェクトからの距離を使用できるので、線画の中で強調したい部分を制御できます。
入り抜きのあるライン
漫画やイラストでは、つけペンの柔らかさを利用して線に強弱を持たせる「入り抜き」の表現を多く見ることができます。アニメも作風によって線に強弱のある作品があります。
Pencil+ はラインの太さに変化をつけて、手描きのようなニュアンスを加えることができます。
交差したライン
オブジェクトが水に沈んだり、オブジェクト同士がぶつかった表現をしたいときは、オブジェクトが交差した部分にラインを描画できます。
はみ出したライン
ポストエフェクトでラインを描画する Pencil+ は、オブジェクトから大きくはみ出したライン、歪んだライン、ラフなラインを描画できます。
ポリゴンやシェーダを使用したラインとは異なり、オブジェクトのメッシュの細かさの影響を受けません。波線のような歪みや、破線を描画できます。
ブラシの形状を設定して毛筆のようなラインも表現できます。
高品質なアンチエイリアシング
Pencil+ ラインは表現力や自由度が高いのが特長ですが、それだけではありません。高品質なアンチエイリアシング処理されたラインを描画できます。
3DCG は群集シーンのようにオブジェクトを大量に配置することが得意ですが、カメラから遠くにあるオブジェクトは重なり合った状態になります。ポリゴンやシェーダーを使用したラインの場合、アンチエイリアシングのサンプリングを上げる必要があるためレンダリング時間が長くなります。
Pencil+ ラインはアニメーションでもフリッカー(ちらつき)のない美しいアンチエイリアシングを持ち、高速に描画できます。
簡単に Pencil+ ラインの表現力に関する機能を紹介しました。Pencil+ はノンフォトリアリスティックレンダリングで必要とされる、様々な表現を可能にします。ぜひオリジナルのライン表現に挑戦してみてください。
2 Pencil+ ライン の使い方
Pencil+ ラインを作成して、オブジェクトに割り当てる方法を解説します。
2-1 レンダラを Maya ソフトウェア レンダラに変更する
「Pencil+ マテリアルの使い方」と同様に、Pencil+ ラインを使用するには Maya ソフトウェア レンダラに変更する必要があります。
2-1-1 レンダラの変更手順
これで Pencil+ ラインを使用できるようになりました。
レンダラを選択プールダウンメニューに[Pencil+ 4 Line]が表示されてるのに気がついたかも知れません。これは Pencil+ ライン専用のレンダラで、ラインのみをレンダリングします。
Maya ソフトウェア レンダラを使用してレンダリングするとマテリアルのシェーディング計算が行われます。Pencil+ ライン レンダラを使用するとマテリアルの計算をはぶくことができるため、Maya ソフトウェア レンダラを使用してレンダリングした場合よりレンダリング時間が短くなります。
アニメーションスタジオでは 3ds Max の Render Elements を使用してマテリアルとラインを別々の画像に出力し、After Effects などのコンポジットソフトで合成して最終的な映像に仕上げます。コンポジット段階でラインの設定のみ変更したい場合が発生したときは、Pencil+ ライン レンダラを使用すると便利です。
Pencil+ はバージョン 4 からマルチプラットフォーム化するためライン機能を独立したレンダリングエンジンに変更しました。これにより Maya、Unity、After Effects、Blender で全く同じラインをレンダリングできるようになりました。
[Pencil+ 4 Line レンダラ]はライン レンダリングエンジンの副産物ですが、「ラインのみレンダリングしたい」というリクエストに応えた機能でもあります。2-2 Pencil+ ラインを作成する
Pencil+ ラインを作成してオブジェクトにラインを描画する手順を解説します。Maya では Pencil+ ラインウィンドウを開き、PencilLine ノードを追加してラインを設定します。
2-2-1 ラインを作成する手順
- Maya メニューの[Pencil+ 4]から[ラインウィンドウを開く]をクリックしてください。
- [追加]ボタンを押し、[PencilLine]ノードを追加します。
- PencilLine ノードを選択した状態で、アトリビュートエディタの[ラインセット]リストの下にある[追加]を押してラインセットを作成します。
- [マテリアル]リストの[追加]ボタンを押し、[マテリアルの追加]ダイアログでマテリアルを選択して[OK]を押します。
最初はラインを描画したモデルがどのように見えるか確認するため、Maya の既定マテリアル以外全てのマテリアルを追加します。
オブジェクトにラインを設定してレンダリングできました。モデルにラインを描画するとどのように見えるか、大まかな雰囲気が把握できるようになりました。 この時点でモデルに問題がないか、様々な角度からレンダリングして確認します。ポリゴンが同じ位置で重なっている場合や穴が開いてる場合など、メッシュに問題がある場合はラインが描画されることで気がつくことができます。
3 ラインセットとは
ラインセットはラインの色やストロークのタッチ、オブジェクトのどこにラインを描画するかを決めるグループです。ラインセットにオブジェクトまたはマテリアルを追加し、ラインを描画する対象を指定します。ラインセットは欲しい絵にあわせて複数作成する必要があります。
ラインセットの考えかたはマテリアルと同じです。オブジェクトにマテリアルを使用して色を設定する場合、色の数だけマテリアルを作成します。同じようにラインの色やタッチの種類の数だけラインセットを作成します。
3-1 ラインセットではオブジェクトとマテリアルどちらを使えばいいのか?
オブジェクトとマテリアルのどちらを使用してもレンダリング時間に差が出ることはないので、好みで選んで問題ありません。
オブジェクトとマテリアルには以下のような特長があります。
オブジェクト
オブジェクトはマテリアルより数が少なくなる傾向があるのでデータの管理が楽です。オブジェクト全体に同じタッチのラインを描画する場合は、オブジェクトを使用すると便利です。
マテリアル
マテリアルを使用すると、マテリアルごとに細かくラインを設定できます。また、オブジェクトを削除した場合でもマテリアルをシーンに残すことができます。このため別のオブジェクトにマテリアルを再適用すれば、ラインセットの設定をそのまま使用してラインを描画できます。
アニメーションスタジオではラインセットにマテリアルを使用する傾向があります。
日本のアニメ作品はラインに対するこだわりが非常に強いように感じます。手描きの作画を見ても作品ごとに線の描き方のルールが異なるのがわかるのではないでしょうか。CG でもどこにラインを描画するか、どのような質感のラインにするか、作品ごとに細かく制御する必要があるためマテリアルを使用したライン制御が好まれているようです。
今回のモデルではマテリアルを使用してラインを設定します。
3-2 マルチスレッド処理に適したデータ
Pencil+ ラインのレンダリングを速くしたい場合は、キャラクターを構成するメッシュは 1 つのオブジェクトにまとめるよりも、複数のオブジェクトに分かれている方が望ましいです。
Pencil+ ラインはマルチスレッドでラインを計算します。マルチスレッドとは複数の CPU コアを搭載している PC を使用している場合に、計算を並行して行うことでレンダリング時間を短くする技術です。Pencil+ ラインはマルチスレッド処理をオブジェクト単位で行います。ポリゴン数が多い場合は、複数のオブジェクトに分けるとラインの計算が効率的になります。
今回のキャラクターの場合、VRoid Studio から出力した状態では Body、Face、Hair の 3 つのオブジェクトで構成されていました。これを Body、Face、Hair_Front1、Hair_Front2、Hair_Back、Tops、Bottoms、Shoes のように 8 つのオブジェクトに分けました。
今回のキャラクターのようにポリゴン数がそれほど多くない場合、レンダリング時間に大きな差がでることはありませんが、ポリゴン数の多いキャラクターの場合はオブジェクトを分けた方が効率的にレンダリングできます。
4 Pencil+ ラインのノード構成
Pencil+ ラインのノード構成について解説します。
Pencil+ ラインは複数のノードで構成されています。ラインセットに Pencil+ ライン関連のノードを全て作成した場合、下の図のようなノード構成になります。一見複雑に見えるかもしれませんが全部で 5 種類のノードで構成されています。Pencil+ ラインではこれらのノードを使用してラインの質感を設定します。
4-1 PencilLine ノード
最も上位にあるのが PencilLine ノードです。PencilLine ノードにはラインのレンダリング全体に関わる設定と、ラインセットを管理するリストがあります。
4-2 LineSet ノード
ラインセットを追加するとラインセット階層が表示されます。ラインセット階層ではオブジェクトのどの部分にラインを描画するか指定します。
ラインセットには[可視線]と[隠線]タブがあり、タブを切り替えると同じアトリビュートが並んでいます。可視線はカメラから見える部分のラインに関する設定を行い、隠線はオブジェクトの裏側のラインに関する設定を行うことができます。
多くの場合は可視線を使用することになると思います。隠線は工業製品の説明書などで使われるテクニカルアートのような表現で使用できます。
ラインセット階層のアトリビュート右側にあるボタンをクリックすると[ブラシ設定][ブラシ詳細設定][減衰設定]ノードのアトリビュートを表示できます。
ラインセット階層には、[ブラシ設定]のパラメータがデフォルトのライン設定として表示されています。また、エッジの検出設定ごとに、より細かくラインを制御するために[個別のブラシ設定]を使用できます。
4-3 PencilBrushSettings ノード
PencilBrushSettings ノードではラインの色、太さ、ストレッチ量を設定します。アナログの画材に例えるとインクとペン先の設定です。
4-4 PencilBrushDetail ノード
PencilBrushDetail ノードは、より詳細なブラシの形状やストロークに関する設定を行います。アナログの画材で例えると線を引く勢いや筆圧のような、線のタッチに関する設定にあたります。
4-5 PencilReductionSettings ノード
PencilReductionSettings ノードはカメラやオブジェクトからの距離を使用して、ラインの太さや不透明度の変化を設定します。
4-6 ノードを共有
Pencil+ ラインのノードは、他のノードと設定を共有できるので便利です。
例えばラインの色を変えたいときは LineSet ノードを複数作成します。ラインの色は LineSet ごとに変えたいが、PencilBrushDetail は同じにしたい場合があります。PencilBrushDetail の[メッセージ]チャンネルを他の PencilBrushSettings ノードに接続すると、PencilBrushSettings ノードの設定を他の PencilBrushSettings ノードが参照できます。
次の記事
次の記事ではラインセットをどのように使い分ければよいか、またオブジェクトのどの部分にラインを描画するか指定するエッジの検出設定を解説します。