- 3dMax は、頂点座標、法線、エッジ関係などのコンテンツを含むモデル ファイルをエクスポートします。
- モデルモデル
- 空間内にカメラモデルがあり、カメラを原点に配置できます 変換して表示します
- 3次元空間のモデルをスクリーン上の投影に変換します
- サンプリングによるラスタライズ ラスタライズ
次のステップはシェーディングです
1 シェーディング: 定義 シェーディングの定義
光と影、さまざまな色を導入するプロセスをシェーディングといいます
このレッスンでの定義は、マテリアルをオブジェクトに適用するプロセスです2 Blinn-Phong 反射率モデル 単純なシェーディング モデル
ブリン フォンのシェーディング モデルについては、
以前に LearnOpenGL 学習ノートの照明 02: 照明の基礎/高度な照明でその概念を説明しましたが、
その際には、ヤン先生の PPT と The動画を説明資料として使用し、簡単な実装(例として点光源)を作成しました
ので、ここでは繰り返しません。3 シェーディング周波数 シェーディング周波数
3.1 フラットシェーディング
- フラットシェーディング
3.2 頂点のカラーリング
- 頂点シェーディング
シェーディングは頂点ごとに 1 回実行され、カラー値が補間されます。
3.3 ピクセルシェーディング
- ピクセル シェーディング
ここでの Phong Shading はシェーディング周波数を指します。前述の Blinn-Phong は、
三角形の 3 つの頂点から法線を計算するシェーディング モデルです。三角形の内側のピクセルが法線値を補間します。ピクセル シェーディングごとに、3.4 比較
- ジオメトリが十分に複雑な場合は、単純なシェーディング方法でも良好な結果が得られます。
3.5 頂点法線の計算方法
- 頂点法線計算方法
内部滑らかな遷移の通常の方法 - 重心補間・重心補間・
法線リメンバー正規化
4 グラフィックス (リアルタイム レンダリング) パイプライン リアルタイム レンダリング パイプライン
この部分について
ここまでの知識を学ぶことで API (OpenGL、DirectX など) を学ぶことができます
ここがおすすめ: ShaderToy この Web サイトではシェーダーの書き方だけを学ぶことができます
現在のリアルタイム レンダリング
5 テクスチャマッピング テクスチャマッピング
テクスチャマッピングの内容については、LearnOpenGL学習ノート - 入門05:テクスチャで 解説しています
。
- PPT の概略図は、このマッピング プロセスをよく表しています。
- テクスチャ自体のデザインはシームレスに接続できます: tilable、シームレスに接続されたテクスチャを設計する方法: Wang Tiling
6 重心座標 重心座標補間
- 重心座標補間
面積を利用した決定係数の計算
座標を利用した決定係数の計算
- 中心座標補間法を使用すると、投影前後で重心の座標が変化する可能性があるため、対応する段階で対応する重心の座標を計算して補間する必要があり、自由に再利用することはできません。
- 補間する
7 テクスチャの適用 テクスチャの適用
- 補間された UV 座標はポイント上で計算され、テクスチャ上でクエリされ、必要に応じて適用されます (図内の単純な適用、直接割り当て)
8 テクスチャ倍率 テクスチャ倍率
テクスチャ解像度が低すぎるため、複数のピクセル(ピクセル)が同じテクセル(テクスチャ ピクセル)にマッピングされています
- 回避策 → 補間
8.1 共一次補間 共一次補間
バイリニア補間:水平補間+垂直補間
lerp は Linear Interpolation の略です。
次の図は最近接 4 点補間を示します
- 目標点の周囲の 4 つの点を見つけます
赤い点と 4 つの点の左下隅の間の垂直および水平距離
8.2 バイキュービック補間 バイキュービック補間
周囲の16点を取り、縦横の補間にも使用します
毎回4点ずつ使用し、線形差分ではなく3回補間を行います 2方向
3方向補間は計算量は多くなりますが、効果は良好
です
バイキュービック補間アルゴリズム(バイキュービック補間)とグラフィックスの関係や計算方法を紹介します。
9 大きすぎるテクスチャの問題
- テクスチャが大きすぎる場合、1 つのピクセルが複数のテクセルに対応する → サンプリング周波数が不十分なため、モアレパターン + エイリアシング (エイリアシング) が発生する
遠い地表上のピクセルがテクスチャの大きなブロックに対応し、単純なポイントサンプリングが機能しない
解決策:
オーバーサンプリング、サンプリング周波数を上げるが、無駄が多すぎる
サンプリングするとエイリアシングが発生するため、サンプリングは行わず、一定範囲の平均値のみを取得します。
これはポイントクエリと範囲クエリの問題です。
- ポイントクエリ、ポイントの付与、ポイントの値の取得
範囲クエリ、サンプリングなし、領域を指定して、領域の (平均) 値を取得します。
9.1 ミップマップマルチレベルグラデーションテクスチャ
ミップマップのマルチレベル段階的距離テクスチャは
高速レンジクエリを実行できますが、近似的であり、正方形のみです
ミップマップの内容については、LearnOpenGL学習ノートの入門05:テクスチャ周囲法/テクスチャ内テクスチャフィルタリングの
部分で 説明しました。
- 以下はPPTの概略図です。
ミップマップ計算の概略図
まず、ピクセルでカバーされる領域を見つけて近似を行う必要があります。
ピクセルを考慮するときは、周囲の点も考慮し
、その中心を UV にマッピングして距離を計算します
。そのため、距離が辺の長さである点線の付いた正方形の枠を使用して、不規則な四角形
レイヤー D を近似できます。ピクセル間の距離マッピング uv は 2 の対数
を例にとります
領域のサイズが 1×1 D=0 の場合、最も元のレベルのミップマップ上で見つけます
領域のサイズが 4× の場合4 D=2 の場合、第 2 レベルのミップマップでそれを見つけます。つまり、第 2 レベルでは、この 4×4 は 1×1 になります。次に、第 2 レベルに移動してこのピクセルの値を確認します。この領域の平均値です
単純に整数レイヤーの間には不連続な隙間ができてしまうので、
整数レイヤーでない場合は前後の2つのレイヤーを確認してバイリニア補間を実行し、さらに別の補間、つまりトライリニア補間を実行して結果を取得します
。
9.2 異方性フィルタリング 異方性フィルタ
ミップマップはボックスの領域のみをクエリでき、補間は結局のところ近似値にすぎないため、遠くの詳細がぼやけます。
-
トライリニア補間の解決策は異方性フィルタリングです
正方形の近似はあまりにも抵抗がある場合があります。下の図のテクスチャ マッピングの後、奇妙な形の
ミップマップは正方形、つまり下の図の左上隅の画像で構成されますが、その圧縮は正方形ではないことはできません。異方性フィルタリングを使用すると、長い領域では範囲クエリを実行できますが、斜めの領域では実行できません。
異方性フィルタ処理されたグラフ (リップマップ) を生成するオーバーヘッドは、元の の 3 倍です
。異方性とは、方向によってパフォーマンスが異なることを意味します
。異方性のXは何回かの圧縮、つまり左上隅から右下隅まで何層追加するかですEWA フィルタリング。不規則な形状を多数の異なる円に分割してこの形状をカバーします。
複数のクエリで自然にカバーできますが、時間がかかります。10 テクスチャの適用 さまざまなテクスチャ マップ
前のコンテンツでは、グリッドを取得、与え、さまざまなシェーディングを行うことができます。次に、シェーディングに基づいて、さまざまなテクスチャを貼り付けます
テクスチャマップにはたくさんの種類があります
10.1 環境マップ環境光マップ
全方向からの光を記録する 環境光が無限遠から来ると仮定し、方向のみを記録する つまり
環境光をテクスチャで表現することができる
球状環境マップ 球状環境マッピング
を地球儀に例えることができる
ストレッチと歪みを伴うキューブマップ キューブマップは
立方体の表面に周囲の光を記録しますが、
以前は球体がある方向の光を簡単に得ることができましたが、今後はその方向が立方体のどの面に記録されているかを判断する必要があります。 。10.2 バンプ マッピング
バンプ マッピングのテクスチャは、幾何学的情報を変更せずに高さの動きを記録します。テクスチャは
人工的に偽の法線を作成し、それによって偽のカラーリング効果を取得し、バンプ効果を生成します。ユーザー定義の
高さの差により、ピクセルごとの摂動が発生します。方法 線の方向と法線の方向が変わると着色結果が変わります法線方向の計算: 接線を求めた後、垂直方向を求めます。
UV の場合の通常のアルゴリズム
10.3 ディスプレイスメント マッピング ディスプレイスメント マップは
バンプ マップの入力と同じですが、ディスプレイスメント マップは幾何学的情報を実際に変更します。バンプ マップは境界
上の詰め物を明らかにするため、頂点のディスプレイスメントは比較してより現実的です。ディスプレイスメント
マップでは、モデルの三角形を十分に詳細にする必要があり、計算量が多くなります。
DirectX には動的補間方式があり、必要に応じてモデルを補間し、状況に応じてモデルをより詳細にします。10.4 プロシージャル テクスチャ プロシージャル テクスチャ
3 次元テクスチャは空間内の任意の点の値を定義します。
この種のテクスチャには、このテクスチャの実画像はありません。
それらは 3 次元空間のノイズ関数を定義します。さまざまな処理の後、関数は次のようになります。何が必要なのか
10.5 事前計算されたシェーディング 事前計算されたシェーディング
空間を使用して時間を計算し、最初に環境光のオクルージョン マップを計算してから、テクスチャを貼り付けます。
10.6 ソリッドモデリングとボリュームレンダリング
3 次元テクスチャは
、MRI スキャンなどのボリューム レンダリングでボリューム情報を取得し、これらの情報を使用してレンダリングして結果を取得するために広く使用されています。