有限会社ガンマ「実践チュートリアル(スカルプトを利用した地形作成)」v3-2
○メッシュスカルプトを利用して山の部分を作りこむ
・画像ベースのスカルプトについて、説明します。
メッシュベースのスカルプトがメッシュを直接変 形させてモデリングをおこなうのに対して、画像ベースのスカルプトはスカルプト用のテクスチャを用意し、ディスプレースメントとして凸凹を表現していきま す。したがって、メッシュのサイズに関係なく図の様に詳細にスカルプトすることが可能です。
・では、スカルプトを利用するための準備をしていきます。
ます、スカルプトをするための画像を用意します。
「Shader Tree(シェーダツリー)」から「Base_01」マテリアルを選択します。
左上のメニューバー「Sculpt/Paint(スカルプト/ペイント)」->「Utilities(ユーティリティ)」タブ->「Add Displacement Texture(変位テクスチャの追加)」を選択します。
・画像保存ウィンドウが開かれます。
「ファイル名」(Base_S)
「ファイル種類」(Flexible Precision Image Format(*.flx))
で保存します。
・設定はデフォルトのままで、OKをクリックします。
・「Shader Tree(シェーダツリー)」の「Base_01」マテリアルの中に、「Image:Base_S」というイメージが追加されました。これが、スカルプト作業用の画像になります。
・実際に画像スカルプトを利用して山の凸凹を表現していきます。
図で示した部分を例に作業を進めます。
・表示されるメッシュが増えると作業のレスポンスが下がってしまうので、必要で無い部分を隠します。作業するメッシュを選択してメニューから「View」->「Hide Unselected」を選択します。
選択したメッシュ以外の部分が隠れました。
・ビューポートの表示は「Advanced OpenGL(アドバンストGL)」を選択しておきます。
時折「F8」キーを押してプレビューを表示して最終状態を確認します。
・左上のメニューから
「Sculpt/Paint」->「Sculpt Tools」->「Push(押し出し)」を選択します。
今回ブラシは「Procedural Brush(プロシージャルブラシ)」を利用します。
・ビューポートの一番手前の山の部分をドラックします。スカルプトが実行されました。
・テクスチャが貼られたままでは、形状が解り辛いので、
「Shader Tree(シェーダツリー)」の「ccg-74-12_c11b_9」を非表示にして形を確認します。
・残りの部分に画像スカルプトをおこないました。
テクスチャを表示している状態と隠している状態です。
・「u」キーを押して隠していたメッシュを表示させ、他の山の部分にも画像スカルプトをおこなって
いきます。図に示した部分の画像スカルプトをおこないます。
・残りの山の部分に画像スカルプトをおこないました。
テクスチャを表示している状態と隠している状態の比較です。
・ダム側の山に画像スカルプトをおこないます。
・画像スカルプトをおこないました。
テクスチャを表示している状態と隠している状態です。
山の中にある平地の部分はスカルプトしないよう注意して作業を進めます。
・川を挟んで反対側の山部分に画像ベースのスカルプトをおこないます。
メッシュの表示、非表示を利用して効率的に作業を進めていきましょう。
・画像スカルプトをおこないました。
テクスチャを表示している状態と隠している状態です。
・以上で画像ベースのスカルプトの説明を終わります。
一通りのスカルプトを利用したモデリングが終了しました。
テクスチャを表示した状態と隠した状態の全体図です。
・この時点で「Sculpt_05」という名前でデータを保存しておきましょう。
○メッシュスカルプトを利用して山の部分を作りこむ
・これまでの手順で基本的なモデリングができました。
応用編としてノーマルマップを利用した表現を説明していきます。まず、ノーマルマップですが、RGBの情報からXYZの角度を計算して凹凸を表現します。
そのため、ローポリゴンでもリアルな質感を表現することができます。
modoでは高密度のモデルのディテールを低密度のモデルにノーマルマップとして、ベイクすることができます。
今回は画像ベースのスカルプトの凹凸をノーマルマップとしてベイクしてます。
・ノーマルマップ用のオブジェクトを用意します。 「Items(アイテムリスト)」で「base」レイヤーを選択し右クリックのプルダウンメニューから「Duplicate(複製)」をクリックして複製します。レイヤー名「base_n」としておきます。
・「m」キーを押してマテリアルを割り当てます。
名前を「Base_N」にして、他の項目はデフォルトのままでOKをクリックします。
・「Base_n」に「Base_01」と同じ様に「Image: ccg-74-12_c11b_9.jpg」の画像を貼り付けます。
次にノーマルマップ用の画像を追加します。
「Shader Tree(シェーダツリー)」の「Base_n」を選択した状態で、左上のメニューバー「Sculpt/Paint(スカルプト/ペイント)」-> 「Utilities(ユーティリティ)」->「Add Displacement Texture(変位テクスチャの追加)」を選択します。
・画像保存ウィンドウが開かれます。
「ファイル名」(Base_N)、「ファイル種類」(Flexible Precision Image Format(*.flx))保存します。
・設定はディフォルトのままで、OKをクリックします。
・「Shader Tree(シェーダツリー)」の「Base_N」マテリアルの中に、「Image:Base_N」というイメージ が追加されました。
・「Image:Base_N」の「Efect」の項目にある「Vector Displacement」を右クリックし、
プルダウンメニューから「Nomal(法線)」を選択します。
これで、ノーマルマップ用の画像ができました。
・「Items(アイテムリスト)」で「base」レイヤーを前景レイヤーに「base_n」レイヤーを背景レイヤーにします。
・「Shader Tree(シェーダツリー)」で「Base_N」マテリアルの中にある「Image:Base_N」を右クリックして、プルダウンメニューから「Bake From Object」を選択します。
・「Distance」で凹凸の範囲を決めます。ここでは50mにしておきます。
・背景レイヤーの形状からノーマルマップがベイクされました。
・画像スカルプトのディスプレスメントマップ、ノーマルマップ、地形イメージのみのモデルをそれぞれレンダリングして比較をしてみます。
・ディスプレスメントマップ
・ノーマルマップ
・地形画像のみ
・上記3パターンのモデルから地形画像を外したものです。
・ディスプレスメントマップ
・ノーマルマップ
・マップ無し
・ノーマルマップはディスプレスメントマップほどのディテールは出ないながらも、図の様に凹凸を表現することができます。
ディスプレスメントマップは細かいディテールが表現できるものの処理が重くなってしまいます。
地 形をどのように見せるのかなど考慮してアップにする場合はディスプレスメントマップ、遠景から見せるのであればノーマルマップを使うなど各特性を生かして 効率的にノーマルマップとディスプレスメントマップを使い分けていきましょう。また、バンプマップも擬似的に凹凸の効果を表現することができます。
・以上で「スカルプトを利用した地形の作成」を終わります。