トップ  >  1. Blenderリリースノート翻訳  >  Blender機能別  >  Blender2.32 Displacement_mapping
元記事:Displacement_mapping

ディスプレイスメントマッピング



by Robert Wenzlaff氏




機能の解説と用途


ディスプレイスメントマッピングはプロシージャル・画像問わず、Textureの入力をレンダリングされる面の位置の操作に使用できるパワフルなテクニックです。
Normalもしくはバンプマッピングのような、法線を曲げて幻の凹凸を与えるものではなく、
これは実際に凹凸を作るものなのです。これらは影を投影し、他のObjectを隠し、実際の形状でできることをすべて行うのです。


シェーダ・シャドウバッファ・レイトレーサにはどうやってあなたがモデリングしたかは判りません。

ディスプレイスメントマッピングはテクスチャチャネルとして振舞うよう設定されますが、ひとつ重要な大きな違いがあります。

レンダリングするFaceの移動をスムーズにするためには、面を非常に小さくしなければなりません(1)。これにはメモリとCPUの時間を食います。

遠くの物・重要でない物の場合、まだNORマッピング(バンプマッピング)を使用すべきでしょう。NORマッピングと比べ、ディスプレイスメントはレンダリングする各Faceにさらに非常に小さな負荷をCPUに負わせます。しかし、NORマッピングではレンダリングFace数とは独立して使用できます。ディスプレイスメントの使用により一気に非常に多くのFaceのあるシーンになります。

あなたのシーンにより正確な形状を使用する必要がある時にディスプレイスメントを使用して下さい。(一番右端の"cube"の影に注意して下さい)

(1)私は本当に必要なFaceだけを分割するアダプティブサブディバイド(適応再分割)について作業中です。例:もしカメラから遠く離れている、もしくはテクスチャの変位が緩やかな場合、そのFaceが大きいままの方がレンダリングスピードが上がります。

現在、最大二つのレンダリングFaceがMeshのFace毎(もしくは他のObject上の同等のもの)に生成されます。もし四角形のFaceが平面でなければ、二つの三角形としてレンダリングされます。

編集中のPCが沼に足をとられることなく、高いレンダリングFace数を得るには、MeshをSubSurfして下さい。implicit surfaceのFace(灰色)はレンダリングFaceとなるFaceです。

ObjectのMaterialのWIREの設定、ALL EDGES(EditMode中)の選択は、ディスプレイスされるレンダリングFaceを視覚化するのにいい方法です。

レンダリング時、Edgeを丸くせずにSubdivideできるように、新しいタイプのSubSurf、"Simple SubSurf"が作られました。"Simple SubSurf"をSubdivideのタイプとして選択することにより、Meshはレンダリング時、全体的な概観が変更されることなく、render数値ボックスのレベルでSubdivideされます。

すばやい編集には、3DViewでのSubdivideレベルを低く保ち、レンダリング時のSubdivideレベルを高くするのが一番いい方法です。しかし使用には注意して下さい。SubSurfのメモリ使用量は恐ろしいほど多くなります。これによりコンピュータが長い長い間ロックされてしまうのもめずらしくありません。


ディスプレイスメントの適用対象


最適な場合から最悪な場合まで、下記の各Objectタイプそれぞれについてレンダリング時のFace数をコントロールする方法と適用についてあげていきます。
  • Subsurf Mesh: レンダリング時のFace数はRender SubSurf Levelでコントロールできます。本来ディスプレイスメントにはNormalの変化がなめらかな方が好ましいです。

  • Simple SubSurf Mesh: Face数はRender SubSurf Levelでコントロールできます。しかし、もしテクスチャにニュートラルのグレイがない場合、鋭いEdgeのところに穴ができます。

  • 手動で(EditMode)SubdivideされたMesh: Face数をSubdivideの回数でコントロールします(これは上記の方法と組み合わせることができます)。ディスプレイメントは確かにSimple SubSurfと同じですが、OpenGLの余計なFaceの描画によるオーバーヘッドのため、編集は遅くなってしまいます。(この方法では編集時のSubdivideレベルを落とすことはできません)。

  • Metaball: WiresizeによりFace数をコントロールします。小さなWireで多くのFaceになります。

下記も利用可能ですが、現在は上手く動作しません。ディスプレイメントを適用する前にMeshに変換することをお勧めします。
  • Open Nurbs surface: Face数をU/V DegResoluでコントロールします。高い数値で多くのFace数になります(注:Normalにエラーがあります)。

  • Closed Nurbs Surfaces: DefResolu controlでコントロールします(注:Normalにエラーが、そしてインプリジットサーフェスの継ぎ目が見えます)。

  • CurveとText: DefResolu controlでコントロールします。高い値で多くのFace数になります(注:大きくフラットなSurfaceでは少数のFaceしかディスプレイスメントされません)。



ディスプレイスメントの使用方法


簡単には、上記の方法で表面を小さなレンダリングするFaceに分割してやり、好みのテクスチャでディスプレイスメントを使用(訳注:Dispボタンを押す)します。

しかし…。

現在、ディスプレイメントの動作には二つのモードがあります。

* 輝度によるレンダリングVertexのディスプレイスメント(VertexはVertexのNormalに沿って移動します)

* TextureのNormalによるレンダリングVertexのディスプレイスメント(VertexはTextureのNorに従って移動します)

二つのモードは排他ではありません。それぞれのタイプの量はMaterial→MapToパネルのスライダを使用して混ぜることができます。Textureのすべてが両方のInputのタイプを提供するわけではありません。例えばStucciはNormalだけを提供し、Magicは輝度のみを提供します(Colorから)。Cloud、Wood、Marbleは両方を提供します。Imageは輝度とNormalの両方を提供します。

輝度によるディスプレイスメントはDispスライダによってコントロールされます。

NormalによるディスプレイスメントはNorスライダによってコントロールされます。

輝度によるディスプレイスメントは、Vertexが外側にのみディスプレイメントされるため、スムーズで、より連続的な表面になります。NormalによるディスプレイスメントはVertexが様々な方向にディスプレイスメントされるため、より密集した表面になります。

ディスプレイスメントの深さはそのObjectのSizeによりますが、データの大きさには関係ありません。

これはもしObjectModeであるObjectの大きさを二倍にすると、ディスプレイスメントの深さも二倍になり、相対的にディスプレイスメントは同じになることを意味します。

もしEditMode中で大きさを変化させても、ディスプレイスメントの深さは変更されず、相対的な深さは小さくなります。

ニュートラルグレイはディスプレイスメント0を意味します。

正のディスプレイスメントは、白が頂点で、黒が谷底です。

負のディスプレイスメントは、これが反転します。

ディスプレイスメント用マップを作成する際、最初に50%のグレイで埋めてください。このCubeのEdgeを正しくシャープに残す方法に注意してください。もし背景が50%グレイでない場合、ベベルもしくは縁ができるでしょう。TextureButtons→ColorパネルのBrightnessとContrastスライダをして調節もできますが、前者の方が正しくスタートするためにベストな方法です。

ディスプレイスメントマップ内のシャープなラインはレンダリングするFaceを構成するVertexの一つが他の2-3のVertexに対して移動距離が非常に大きくなることがあるため、Normalの問題を引き起こす可能性があります。使用する前にあらかじめガウシアンぼかしをその画像に少しかけてあげるといい結果が得られるかもしれません。

注意:
TextureのOSAは現在Imageをディスプレイスメントマッピングした場合は動作しません。適切なフィルターサイズ機能の関数を置く必要があります。
 

プリンタ用画面
友達に伝える
投票数:8 平均点:10.00
前
Blender2.33 YafRayエクスポート
カテゴリートップ
Blender機能別
次
Blender2.34 Particle interaction

クイックリンク

2013/11/15版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- オープンプロジェクト
- 公式ストア

●マニュアルなど
公式マニュアル(途中)
JBDP2.5 Wiki
CGRad Project
Project-6B(6B計画)

●チュートリアルなど
公式チュート等
その他チュートリンク集
公式動画チュートリアル
Blender Cookie
Blenderで3DCG制作日記
BlenderVideos.com
Blender 3D: Noob to Pro
blenderguru

●日本語コミュニティ
Blender@2ch
BLUG.JP(FBページ)
(BLender User Group of JAPAN)

-旧BLUG.JP
-blugjpまとめ
ぶれんだちゃん*(ツイッター)

●実写合成(日本語)
CGCompo

●合成エフェクト(日本語)
tomo@web

●Cycles
Blender Cycles memo

●Freestyle(日本語)
公式マニュアル
使用例
スザンぬクラブ

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org
- フォーラム
- 記事検索
- New feature tests
- Model Repository

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Graphicall.org(非公式)
Buildbot(自動生成)

●開発関連
開発情報
開発ドキュメント
公式開発ブログ
Blender開発者サイト
- バグトラッカー
- 旧バグトラッカー(閲覧用)
- パッチトラッカー
- 旧パッチトラッカー(閲覧用)
SVNコミットログ

●GameBlender
公式マニュアル
専用API
バグトラッカーなど
旧バグトラッカー(閲覧用)
Bullet 物理演算ライブラリ

●外部レンダラ
YafRay
LuxRender 私家版資料
Mitsuba

●アドオン
公式スクリプトカタログ
BlenderArtists::python & plugins

●アドオン開発
最新 PythonAPI
Python Japan User's Group

●モデル&マテリアル
Blender Model Repository
Kator Legaz 3D Model
Blend Swap
blender-materials.org

●日本語化・翻訳サイト
Blender日本語化関連(blugjpまとめ)
日本語化の設定(2.4xのみ)

●2.4x用スクリプトとAPI
公式(日本語:下側参照)
L-System(2.5以降は同梱)
Python API リファレンス(2.4x用)

2.4x以前ではPythonフルセットが別途必要になることがあります。
旧Pythonバージョン

●2.4x用プラグイン(Python以外)
Blender Plugin Repository

ログイン

ユーザ名:

パスワード:



パスワード紛失