関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2016.11.22UE4UE/ Material
こんにちは!テクニカルアーティストの黒澤です。今回は一般的なDCCツールに搭載されているCatmull Clarkによるサブディビジョンサーフェイスと、UnrealEngine4のPN Trianglesの比較をしてみたいと思います。
UE4のPN Triangleですが、MaterialのDetailsのTessellationの項目で、D3D11 Tessellation ModeをPN Trianglesに変更することで適用できます。
PN Triangles以外のTessellationとして、Flat Tessellationがありますが、こちらは適用しただけではメッシュの外観は変わることはありません。メッシュの外観が変わらないことを活かして、平らな壁などに適用し、World Displacementと併用することで凹凸を与えるといった使用法になります。
PN Trianglesの分割数はMaterialのTessellation Multiplierによって決まります。(無制限に細かくはなりません)
また関連する項目として、Project SettingのRenderingのTessellationの項目にAdaptive Pixel Per Triangleの設定があります。
こちらはマテリアルのAdaptive Tessellation(カメラからの距離に応じて動的に分割数が変わる設定)が有効なときに、何ピクセル以下で分割し始めるかをプロジェクト全体で定義します。
マテリアルのAdaptive Tessellationが無効なときにはこの値に関係なく、常に指定した分割が行われます。
それでは本題に入ります。
立方体にCatmull Clarkを使用した場合、制御メッシュに内接する形でかなりきれいな球に近い形状が生成されます。
Mayaでは2キーで制御メッシュと生成されたメッシュをプレビューできます。
PN Trianglesもそれなりに球に近い形状にはなるのですが、やや角張りが目立ちます。
滑らかさ以外の大きな違いとして、Catmull Clarkは制御メッシュよりも小さくなるのに対し、PN Trianglesは法線ベクトルをみて膨らむことによりなめらかになります。
立方体のエッジ周辺にエッジループを追加し、Catmull Clarkをかけた状態です。Catmull Clarkでは適度な丸みのある角ができますが、PN Trianglesでは、法線ベクトルをみて膨らむため、細いポリゴンの部分が盛り上がってしまいます。
円柱の蓋の部分をハードエッジに設定し、Catmull Clarkをかけた状態です。Catmull Clarkではハードエッジの設定は無視されます。
PN Trianglesではハードエッジの設定は有効になりますが、膨らまないために意味はありません。三角の中心に頂点を追加していくような挙動なので、ハードエッジやポリゴンの周辺エッジは頂点は増えないのです。
最後にPN Trianglesに最適化されたポリゴン分割を考えてみたいと思います。PN Trianglesでは「ゼルダの伝説」の『トライフォース』のように三角ポリゴンを4つの三角ポリゴンへと分割していきます。そのため、Trisphereに近い形状分割(いわゆる天球体)であれば、テッセレーションの中間状態であっても非常に滑らかに分割されます。
リアルタイムでのポリゴンのテッセレーションは一時期注目されましたが、実際には殆どの場合でモデルを分割したほうが描画コストを抑えて表示できてしまいます。
そのため、ほぼ無視されてきた機能でしたが、最近ではVRで非常に有効なため(VRではノーマルマップがとても嘘っぽくみえてしまう&プレイヤーが自由に近づけるためにポリゴンの角が目立つ)、最近になって再び注目されてきました。
描画コストの高い表現には変わりないので、用量用法を守って正しく付き合いたいですね。