先日は、
で、Cyclesでのポスプロについて書きました。
レ ンダーによる違い
先日は、同じシーンでも
■ Cyclesでレンダリング
のような違いが出ることになると書きましたが、同じマテリアルの指定をしても結果が全く異なるので、プロシージャマップでテクスチャーを当てたオブジェクトをレンダリングした場合も
■ Cyclesでレンダリング
のような感じで、マテリアル表示だと、
のようになります。そして、Eeveeもポスプロの項目を使わない場合、
■ Eevee@ポスプロなし
のような感じになり、ポスプロを入れるて、
のように変更してレンダリングを行うと、
■ Eevee@ポスプロあり
のようになります。
ト ポロジーとリトポロジー
形状を扱う場合、細分化を行いますが、Cutmul-Clarkやマルチレゾリューションを立方体に使うと、
のように丸くなります。この分割数を変えると、滑らかさが変わってきますが
のように変化します。元の形状が、
になりますが、
の形状を丸めて使う場合、どの辺りまでトポロジーをするのかで付加が変わってきます。
の辺りだと、角が立っていますから、動画の場合だと、トポロジーをかけて使うのでゲームとかでリダクションしたい場合だとこれ位にしないとダメな環境もありますが、こうした形状も
のように特定の距離まで離すと角が目立たなくなります。こうした距離に寄ってディテールが変わってくるので、近い場所だとディテールを上げる必要があります。この距離でリダクションをしても大丈夫な特性を使って、シーン内のポリゴン数をコントロールすると、演算が軽くなります。ゲームにはLODと言う機能がありますが、これが、距離に応じてリトポロジーをかけて軽量化を行う技術時なります。この逆のアプローチとして、ローポリのモデルを用いてシーンを作って距離が近くなるととポジ―をかけて、ディスプレイスメントマップとテクスチャーで質感を上げる方法があります。この処理はテッセレーションですが、ゲームの場合、こうしたポリゴンのコントロールを行う事で質感や負荷のコントロールを行う手法が存在します。これと同時に、カリングなどを用いて、余計なポリゴンを計算しない方法もありますが、そうした技術を組み合わせることで、負荷のマネージマントが行われています。
反 射と見え方
先日は、スクリーンスペース反射でミラーハウスみたいなのを作ると現実とは異なる物になりますが、単体だで表示しても、
のような感じになり、影の部分が消えてしまいます。
で反射平面と使うと解消できるみたいですが、確認ができていないので、この辺りは色々と調整しながら確認しようかなと思っています。
とりあえず、歯にゃsについては、
のように遠い場合だと、あまり目立たないのですが、形状が見える条件だと、角度と距離がある程度限定されるような気がしました。
のような感じだと、形状が消えることはないのですが、伝播の状態だけ反射になっていなかったり、影の部分が抜けることがありました、
また、反射の設定とスクリーンスペース反射の設定だと、
のように結構すごいことになっていますが、Cyclesの場合だと、
のようになります。
E eveeとCyclesの違い
Eeveeを使うと、マテリアル表示でもBlppmやDoFやスクリーンスペース反射を使えるのですが、マテリアル表示でも
のような質感を出す事が可能で、
のようなシーンを作れます。これはEeveeのマテリアル表示を使用していますから、この品質のシーンをUPBGE 0.3 Alphaでも使用できます。
ビューポート表示だと
のような感じになりますが、視点を変えると、
のようにスクリーンスペース反射も反映されています。これをCyclesで表示すると、
のように金属がしっかりと出るようになりますが、Bloomはポスプロの処理なので、これは反映されていません。そして、グラスのマテリアルを変更すると、
のようにガラスになりますが、Eeveeにすると、同じマテリアルでも
のような感じになります。これをマテリアル表示にすると、
のような質感になりますが、景観を作る場合に、影の正確な計算はできませんが、fps数を稼ぐ表示でもこう言った質感のシーンを使用できます。
C Cylesとポスプロ
同じシーンをレンダリングした時に、
■ Eevee@ポスプロあり
■ Cyclesでレンダリング
のような違いが出ていますが、この時に、Bloomの効果は出ていません。これについては、後処理でグロー処理を加えているので、レンダリング段階ではそんなものが存在しないので、動画のコンポジションを行う時の処理と同じような設定で効果を追加することになります。
2.79bまでは、コンポジットノードは一つのモードで、そこで、何を変更するのかを指定するようになっていましたが、Blender 2.8から、
■ コンポジション : 最終出力の調整(ポスプロ)
■ シェーディング : オブジェクトの質感の設定
のように設定する項目が分けてあります。ポスプロはクロマキーやPinPなどの処理と同じでコンポジションで行うのですが、
のCompositingのタブで指定します。ここで、レンダービューに対して何をするのか?を指定しますが、複数の効果を使うので、Mixを使います。そこから効果を変更して、 【 追加 】 に変更して
のよにノードを繋ぎます。今回はレンダーレイヤーを二分岐して、片方をそのまま繋いで、もう一つを上に重ねる形にしてフォググローを適応して、それを合成して、コンポジットに書き出す設定にしています。
この処理はポスプロですから、レンダリング後に適応されますから、レンダリング時には、
のような感じになりますが、レンダリング後にポスプロで指定された項目が実行されるので、
のように空間にグローの効果が反映されます。基本的に、このポスプロの処理については、EeveeもCyclesも同じで、レンダリング後に適応するものですから、演算処理も通常のレンダリングの後に計算されるものになります。ブラーエフェクトも同様の処理になりますが、これも後処理になりますから、レンダリング時間は長くなります。
前回は、そんな感じで、レンダリングでは表示さえれない物をレンダリング結果に対して追加することで質感を高めることについて書きましたが、今回は、テクスチャーなどについて書こうかなと思います。
B lenderを使う
先日、
のようにBlender 2.9.0AlphaとUPBGE 0.3Alphaの最新版が出ていましたが、次期バージョンは結構面白い機能があるので、個人的にも気になっていますが、Eeveeの機能がそのままUPBGEでも使えるのでかなり楽しみな仕様になっています。
個人が、3DCGを行いたい場合、Blenderが動くマシンを導入して、ハードウェアにコストをかけると、物を作る上での選択肢が増えるので、個人的にはBlenderを使う事をお勧めします。そうすると、多機能なツールを無償で使用できるので、処理能力さえ足りていれば大抵のことはできます。
とは言っても、3DCGツールは音は扱えないので、波形編集ソフトやDAWは必要になりますが、用途に応じてツールを連携することになります。
テ クスチャーを作る
テクスチャーを作る場合、Blenderに限らず、多くのソフトでプロシージャルテクスチャーを使用できるので、基本的に画像の設定についてはソフトに実装された機能の範囲で指定する事ができます。これがテクスチャーとして実装されているので、数値の変化でパターンを指定してそれを利用できます。Blenderでもそうした機能があるのですが、これをブラシとして登録して、テクスチャーペイントを行う事もできますから、実質的にSculptやテクスチャーペイントについては、Blenderをインストールした段階で様々な模様を数値の変化だけで行う事ができます。
また、BAKEがあるので、様々なレンダリング時の結果を反映できるのですが、その中には、ディスプレイスメントマップやノーマルマップなども含まれます。その為、マテリアルの質感や影や光の影響などについてはBAKEで追加でき、凹凸についてもBAKEで生成できるので、テクスチャーについては、Blender内である程度作れるようになっています。
テクスチャーについては、外部ツールを使方法もありますが、GIMPを使うとノーマルマップを作る事もできます。
のようにテクスチャーを開いて、
のようにフィルターを選択するとノーマルマップがあるので、
のように変換できます。
テ クスチャー使う
のように生成したマップですが、BlenderのShadingの画面で、
のようにカラー用のテクスチャーを指定して、
ノードを組み、グレースケールにしてバンプに繋ぐと、
のような質感になります。基本的にテクスチャ-マップは、色彩の場合だと、そのまま繋ぐと反映されますが、素の場合、サイズが固定されてしまいます。UV展開を行って全て描きこむ場合はいいのですが、そうではなくパターンを配置する場合だと少し条件が変わってきます。パターン化している場合だと、シームレスマップを作って使用するとつなぎ目がなくなるのでそう言った物を使いいますが、素の場合、一つのオブジェクト内で連続して配置する必要が出てきます。この場合に、座標の指定だけ行ったのはだめなので、テクスチャ座標と画像テクスチャーの間にマッピングの指定を行って、それを使って配置を行う事になります。
通常のカラーだと、画像テクスチャーまでの指定でいいのですが、ノーマルマップの場合、グレースケールにしたほうがいいので、その変換を行う為にRBGからBWに変換して、それをバンプの高さに接続します。
更に、これに対して、先ほど作ったノーマルマップを追加していきます。Blenderではファイルブラウザからドロップする方法と、エクスプローラーからドロップする法うほうがありますが、
のように画像をドロップすると、
のようにノードが追加されます。更に
のようにノーマルマップを追加して、
のようにノーマルマップをカラーに接続して、ノーマルマップをバンプのノーマルに接続します。すると、
のような感じになります。
デ ィスプレイスメントマップを使う
凹凸の設定ではノードでノーマルマップを指定しましたが、グレースケールのマップでディスプレイスメントマップを適応することもできます。
ディスプレイスメントマップについては、ゲームで使用されているテッセレーションと同じなので、基本的にハイポリモデルを生成して、そこにグレースケールのマップを適応することで凹凸を追加する手法になります。その為、用意するマップはグレースケールの物になりますが、これもノーマルマップと同様に元のローポリモデルをトポロジーでハイポリ化してSculptなどで凹凸を作ってその状態をBAKEするような流れでグレースケールで凹凸の付いたマップを適応する事ができます。
これについては、ノードではなく、モディファイヤーから選択できるので、サブディビジョンやマルチレゾリューションで細分化をして、それに対して適応することになります。
とりあえず、何もしていない状態で、
位のシーンに対して
のようにマルチレゾリューションで細分化をします。状態を確認する場合には、プレビューの数値を上げないと状態が解らないので、実際のかかり具合を確認する場合には、プレビューの数値を上げます。品質は高いほどいいので、高くして確認します。そして細分化の度合いが決まったら、レンダーの数値をその分割数にして、プレビューの数値を下げて作業を行います。そうすることで、作業時には負荷が少なく、レンダリング結果は高品質な状態で作業が行えます。それでも重くなった場合、オブジェクトやコレクション単位で非表示にするとビューポート上での作業が行いやすくなります。
マルチレゾリューションを指定して、ディスプレイスメントマップを適応すると、
のような感じで凹凸が付きます。これは実際に頂点(バーテックス)の座標が変化しているので、ノーマルマップとは異なる処理になります。
ディプレイスメントマップでは、数値を変更すると、
のようになりますから、細分化の度合いと凹凸の度合いを組み合わせて考えることになります。
レ ンダーと見え方の違い
先日、レンダリング手法が異なると計算の方法自体が異なるので、結果も違うと書きましたが、同じシーンでも何を使うのかで結果が異なります。
■ Eevee
■ マテリアル表示
■ Cycles
のようになります。スクリーンスペース反射とパストレーシングの違いが出ていますが、それ以外にも照度が違っています。
とりあえず、ライトを太陽にして、Sun Positionの指定を行って、太陽の向きを変えると、
のようになりますが、質感や何を基準に計算するのかも指定できるので、リニアACESやXYZやRawなどを指定できます。
基本的に3DCGツールは、カメラで撮っているので、露出補正ができます。この時に、露出の状態は、露出とガンマで指定できます。調整すると、
のようにアンダーにすることも可能です。同じ設定でも、
のようになります。WorkBenchではマッピングのノードの効果がは寧されていないのですが、ディスプレイスメントマップの効果は反映されるようです。その為、2.8では、マテリアル表示も含めてディスプレイスメントマップを使用できます。
■ ディスプレイスメントマップと効果
ディスプレイスメントマップですが、ソリッドの表示で、見てみると、
のようにポリゴン自体が変形しているので、分割数の変化と高さの変化で状態を指定します。細分化をして数値を高めにすると、
のようになりますが。ノーマルマップの効果だけだと、
のような感じになります。密度を上げると、
のようになります。近くで見ると、
のよになりますが、ディスプレイスメントマップの効果を追加すると、
のようにになります。分割数が少ない場合、隆起が発生しますが、分割数を増やしてテクスチャーの反復を増やすと
のようになります。この凹凸ですが、分割数と高さの設定で、
のように変化させることができます。
デ ィスプレイスメントマップとテクスチャー
前述のようにディスプレイスメントマップはグレースケールの画像で凹凸を指定できるので、テクスチャーペイントで、
のように画像を作って、
のようにブラシに登録すると、ディスプレイスメントマップで開けるようになります。これは、Blender 2.8からテクスチャーを呼び出す場合だとこういう仕様になっています。これは、Blender 2.79bのBGEでノードを使う場合のテクスチャーの呼び出しと同じです。この状態でディスプレイスメントをモディファイヤーから呼び出して先ほどの形状に適応すると、
のような感じになります。その為、分割数が恐ろしく増えてしまいますが、こうした形状の作り方もできます、また、凹凸をマップで指定して作った後に、もう一度先掘Ⅾのディスプレイスメントを加えると、数値が高いと
のように破綻しますが、
のような感じで先ほどの形状とは別に形を作る事ができます。
ディスプレイスメントについては、景観を作る時に、山頂を白色とした場合に、どう言った地形なのかを指定する時に使えるので、直感的にランダムな地形を作りたい時にテクスチャーを基準にそう言った凹凸を作る事ができます。現在はSculptモデラーがあるので、見た状態をそのまま反映しながら形状の製作ができますし、Blenderには、LanScapeが用意されているので、山や谷を作る場合にかアドオンで対応できる(というか、景観を作るアドオンが最初から多く用意されています。)ので、こうした使い方はしないかもしれませんが、ディスプレイスメントマップはこんな缶所の使い方もできます。この状態で、Eeveeで表示してみると、
のような感じになりますが、マテリアルを調整すると、
のようになります。このように凹凸を加える場合には、ノーマルマップとディスプレイスメントマップが使用でき、それを用いることで、テクスチャーのみで凹凸をコントロールできます。
ポ スプロ関連
先日は、ポスプロについて書きましたが、ゲーム内でもレンダリング結果で表示されない物についてはポスプロで対応することになります。
先日も書きましたが、
のようなBloomの効果は完全にポスプロになりますが、この表示も、Eeveeとマテリアル表示では
のように強く光が拡散します。というのも、マテリアル表示では影の計算をしていないのでこうなるのですが、質感も結構違います。この二つは、UPBGE 0.3 Alphaでゲームとして実行してもこの状態になりますが、ポスプロを加えた場合だと、レンダービューでちゃんと確認しないとレンダリング結果と違う場合があります。
基本的に、カメラオブジェクトでは、焦点距離とフォーカスの位置と絞りがあります。絞りとフォーカスの位置の指定ができるので、現実世界のカメラのようなデプスコントロールが可能になりますが、
のようなシーンでも、
のように仕上げることが可能です。現在のゲームエンジンではこの処理をポスプロで行えますが、UPBGEでもこうした効果を追加できます。
また、絞りを固定して、距離の指定が可能ですから、
のようなフォーカスの送りも行えます。ただし、Eeveeだと前ボケが現実のように出ない(手前のオブジェクトを見てもらうと、エッジが出ていますよね。実際のカメラで前ボケを入れた場合、こう言う状態にはなりません。)ので、そうした点は注意が必要です。
被写界深度は絞りの値で変更しますが、実際に絞りの値を0.1から0.2にすると、こんな感じの変化が出ます。
■ 絞り値(F0.1)
■ 絞り値(F0.2)
これは二つとも手前のオブジェクトにフォーカスを合わせていますが、フォーカスの合っている範囲が違っています。これは被写界深度です。そして、距離を外すと、完全にフォーカスアウトするので、
のような玉ボケができます。基本的に、実写の動画と同じなので、キーフレームの設定で、フォーカスアウトとフォーカスインが可能です。
ちなみに、ピンボケというのも、主題が不明な状態で全体的にフォーカスがどこにもあっていない写真の事になりますから、
のように何から何までぼけている状態になります。つまり、
のように特定の主題にフォーカスが来ていない状態なので、失敗写真という事になります。この場合に、主題が何か?でフォーカスの位置が決まりますが、元々、3DCGでレンダリングを行うだけだと、デプスの概念が存在しませんから、Bloomやデプスのような空気の質感やレンズフレアやゴーストのような物はポスプロで追加する必要があります。
その為、パンフォーカスについてはフツーにレンダリングすればいいので、被写界深度を浅くして遠くのものも真ではっきり見えてもらうとお困る場合にこうした設定を行います。被写体と背景との距離にもよりますが、
■ 絞り値(F0.1)
■ 絞り値(F0.2)
■ 絞り値(F1.8)
のように絞り値で被写界深度をコントロールできるので、明るいレンズを使って撮影した時のように被写界深度を調整しながらシーンを作る事ができます。
被写界深度については、先日、
にて、
■ DoFとFoVのテスト
のようなテスト動画を掲載しましたが、レンズの効果については結構いろいろな機能が実装されているので、プリレンダリングを行う場合にも様々な処理が行えるようになっています。この動画はEeveeで出力しているのですが、マシンスペックが低すぎるのか、1200フレームの動画を計算していたら落ちていました。w
FoVとDoFとMotion Blurを併用してカメラを動かしただけ(結構マシンが不安定だったので、モーションは入れませんでした。)なんですが、Eeveeでエラーが出て落ちていました。w
とりあえず、Blenderでは、Eeveeでもこう言ったポスプロの効果を入れることが可能ですが、レンダリングオプションのプロパティーの設定だけでこうしたポスプロの効果が追加できます。
当然、Eeveeで表示できる内容は、UPBGE 0.3Alphaで実行できますから、ゲーム制作を行う上でもそう言った演出を加える事ができます。
今 回の作業環境
■ Core i5 650
■ H55M-Pro
■ DDR 1333 2GBx2+1GBx2(DUAL CH)
■ Quadro K620(PCI Express x16 【GEN2動作】)
■ SATA HDD
■ WINDOWS 10 x64 (1909)
■ Blender 2.82a (x64)
■ UPBGE 0.3 Alpha
■ Gimp 2.10.18 (x64)