2026年4月12日日曜日

さいころを作ってみる。理由はあまりない。

 

画像1

1~6の数字が入ったdiceという配列を作って結果はrockという変数に返すようにする。rollという関数をdiceにひっつけて乱数を配列の上限までの範囲で出すようにしてさいころの結果として戻り値とする。roll関数はsetupで一回と、毎フレーム呼び出されるdrawの中でマウスが押されている状態を検出したときに呼び出すようにする。最新の結果はrockに入っていて、textでrockの内容を画面の左上のほう(x:10 y:30)に毎フレーム表示している。

多くのさいころは点(DOT)で数を表している。1は赤い点一つで、6は黒い点が6つならんでいる。同じように描画したいが、最初からさいころの描画をすると心が折れてしまうので、任意の場所に丸を描くだけを次のゴールとした。

Draw関数の中にDraw関数の中でしか呼び出されない関数を定義して呼び出した数字に応じて任意の個所に丸を書く。願わくば他の処理系他の言語系でも永久にさいころが描けるようにここからコードを正規化していく。ここまででお湯に塩を入れているようなもので、ここから中華料理にするのかイタリア料理にするのか、はたまた精進料理になるのかは書いている人の情熱次第ということになる。

キャプチャ


🎡Pbr pbs BRDF(非透明) BSDF(透明) の違い 物理ベースの反射率モデル fは関数のF

 PBR(Physically Based Rendering): PBRは、物理ベースのレンダリング技術を指します。これは、光の物理的な挙動を忠実に再現し、リアルな結果を得るための手法です。PBRは、物体の材質や照明条件を考慮して、光の反射や散乱を計算します。また、エンジンやソフトウェアのアルゴリズムを用いて、リアルタイムのレンダリングにも応用されます。

  1. PBS(Physically Based Shading): PBSは、物理ベースのシェーディングを意味します。この手法では、光の挙動に基づいた正確なシェーディングモデルを使用して、物体の見た目や質感を計算します。PBSは、レンダリングの段階でBRDFやBSDFを使って、光の反射と散乱の振る舞いを表現します。

  2. BRDF(Bidirectional Reflectance Distribution Function): BRDFは、表面の反射率を表す関数です。物体が入射した光をどのように反射するかを記述します。BRDFは入射光の方向と反射光の方向を考慮して、それらの間の関係を定義します。これは主に非透明な物体の表面の反射に対して使用されます。

  3. BSDF(Bidirectional Scattering Distribution Function): BSDFは、物体が入射光をどのように散乱するかを表す関数です。BRDFの考え方をさらに拡張し、入射光が散乱した後のすべての方向への反射や透過を含む場合に使用されます。そのため、透明な物体や不透明な物体の散乱特性を表現するのに適しています。

要約すると、PBRとPBSは物理ベースのレンダリングとシェーディングの手法であり、BRDFとBSDFは物体の反射と散乱を記述する関数で、BSDFがより包括的な散乱モデルとして使われます。

s2012 Pbs Disney BRDF Notes v2 を理解してからBSDFを理解する


まずBRDF(双方向反射率分布関数)を理解する

BRDFは、非透明な表面での光の反射をモデル化します。表面上の一点における反射率は、入射光の方向と反射光の方向に依存します。数式で表すと、


画像


画像

BRDFは、較正されたカメラと光源を用いて実際の物体から直接測定することができるが、コンピュータグラフィックスで頻繁に仮定されるランバート反射率モデルを含め、多くの現象論的モデルや解析的モデルが提案されている。最近のモデルの有用な特徴には,次のようなものがあります:

異方性反射に対応
少数の直感的なパラメータを使って編集可能。
すれすれ角でのフレネル効果を考慮できる。
モンテカルロ法に適している。
W. Matusikらは、測定されたサンプル間を補間することで、現実的な結果が得られ、理解しやすいことを発見した。


画像
さまざまな光と表面の相互作用をモデル化するために使用できる3つの要素成分[8]。入射光線は黒で、BRDFによってモデル化された反射光線は灰色で示されている。

Lambertianモデル。完全な拡散(マット)表面を一定のBRDFで表す。
Lommel-Seeliger、月および火星の反射。
Phong反射率モデル。プラスチックのような鏡面性に似た現象学的モデル[9]。
Blinn-Phongモデル。Phongに似ているが、特定の量を補間することができ、計算オーバーヘッドを減らすことができる[10]。
Torrance-Sparrowモデル。表面を完全な鏡面マイクロファセットの分布として表現する一般的なモデル[11]。
Cook-Torranceモデル。波長を考慮した鏡面-マイクロファセットモデル(Torrance-Sparrow)であり、その結果カラーシフトも考慮されている[12]。
Wardモデル。(表面の法線に加えて)表面の接線方向に依存する楕円ガウス分布関数を持つスペキュラー-マイクロファセットモデル[13]。
Oren-Nayarモデル。「有向拡散」マイクロファセットモデルで、(鏡面ではなく)完全に拡散したマイクロファセットを持つ[14]。
Ashikhmin-Shirleyモデル。鏡面下の拡散基板とともに、異方性反射率を許容する[15]。
HTSG(He、Torrance、Sillion、Greenberg):包括的な物理ベースモデル[16]。
Fitted Lafortune モデル。複数の鏡面ローブを持つ Phong の一般化で、測定データのパラメトリッ クフィットを目的としている[17]。
解析格子BRDF近似のためのLebedevモデル[18]。
ABgモデル[19][20]。
K相関(ABC)モデル[21]。

マイクロファセットモデルを参考に独自のBRDFを定義してみた。

Matusikらは2003年に、塗料、木材、金属、布、石、ゴム、プラスチック、その他の合成材料など、さまざまな材料を含む100個の等方性BRDF材料サンプルを収集しました[18]。このデータセットは、三菱電機研究所(www.merl.com/brdf)から自由に入手でき、新しいBRDFモデルの評価によく利用されている。

BRDFエクスプローラーというアプリがオープンソースで公開されているらしい。

物理ベースの新しい反射率モデルを開発する際、アーティストから「シェーディングモデルはアートディレクタブルである必要があり、必ずしも物理的に正しいとは限らない」と注意を受けました。そのため、私たちは厳密に物理的なモデルを開発するのではなく、「原理的な」モデルを開発することを理念としてきました。

1つのカラーパラメータと、10個のスカラーパラメータ

baseColor - サーフェイスの色で、通常はテクスチャマップから提供されます。
1- subsurface - サブサーフェス近似を使用して、拡散形状を制御します。
2- metallic - 金属性 (0 = 誘電体、1 = 金属性)。これは、2つの異なるモデル間の線形ブレンドです。メタリックモデルは、拡散成分を持たず、ベースカラーと同じ色合いの入射スペキュラも持っています。
3- specular - 入射スペキュラ量。これは明示的な屈折率の代わりとなる。
4- specularTint - 芸術的なコントロールのための譲歩で、ベースカラーに向かって入射スペキュラを染める。スペキュラのかすれ具合は無彩色のままです。
5- roughness - 表面粗さ、拡散と鏡面反射の両方を制御する。
6- anisotropic - 異方性の度合い。スペキュラハイライトのアスペクト比をコントロールします。(0 = 異方性、1 = 最大限の異方性)。
7- sheen - 主に布を対象とした、追加のグラージングコンポーネントです。
8- sheenTint - ベースカラーに対して光沢を着色する量。
9- clearcoat - 2つ目の、特別な目的のスペキュラーローブです。
10- clearcoatGloss - クリアコートの光沢を制御します(0 = 「サテン」外観、1 = 「光沢」外観)。

で、これが、Principled (プリンシプル) BSDFにつながってくる


Principled (プリンシプル) BSDF は、複数の階層を一つにまとめ、ノードを使いやすくしたものです。これは、"PBR"シェーダとして知られる、ディズニーの原理モデルに基づいています。PixarのRenderman ® 、Unreal Engine ® などのソフトウェアとの互換性があります。 Substance Painter ® のようなテクスチャペイントソフトのパラメータに直接リンクすることも可能です。

https://docs.blender.org/manual/ja/2.90/render/shader_nodes/shader/principled.html

パラメータは増えて12個に


Clearcoat (クリアコート)
他の要素の最上部にあたる、追加の白いスペキュラ階層。自動車の塗装などのマテリアルに適します。
Clearcoat Roughness (クリアコートの粗さ)
クリアコートスペキュラーの粗さ。
Transmission (伝播)
完全に不透明な表面を0に、完全なガラスの様な透過は1にします。
Transmission Roughness (伝播の粗さ) Cycles Only
GGX の分布を制御し、透過光のために使用する粗さ。



BSDF(Bidirectional Scattering Distribution Function)

BSDFはBRDFを拡張して、透明または半透明の材料での光の散乱も考慮に入れます。BSDFは、入射光が表面で反射されるだけでなく、透過もする場合の挙動を記述します。数式では、


画像

BSDFは、光の反射と透過の両方を統合したモデルであり、より複雑な光の挙動をシミュレートするのに適しています。BRDFと比較して、BSDFは材質が光をどのように散乱させるか(例えば、乱反射や屈折など)をより包括的に表現できます。


画像
https://en.wikipedia.org/wiki/Bidirectional_scattering_distribution_function#/media/File:BSDF05_800.png

BSDF(双方向散乱分布関数)の定義は標準化されていない。この用語は、おそらく1980年にBartell、Dereniak、Wolfeによって導入された[1]。ほとんどの場合、光が表面によって散乱される方法を記述する一般的な数学関数の名前として使用される。しかし実際には、この現象は通常、反射成分と透過成分に分けられ、BRDF(双方向反射率分布関数)とBTDF(双方向透過率分布関数)として別々に扱われる。

BSDFはBRDFとBTDFのスーパーセットであり、一般化されたものです。すべてのBxDF関数の背後にある概念は、入力が任意の2つの角度、1つは入射(入射)光線、もう1つは表面の与えられた点での出射(反射または透過)光線であるブラックボックスとして記述することができます。このブラックボックスの出力は、与えられた2つの角度における入射光線と出射光線のエネルギー比を定義する値です。ブラックボックスの内容は、実際の表面挙動を多かれ少なかれ正確にモデル化し近似しようとする数式であったり、測定データの離散サンプルに基づいて出力を生成するアルゴリズムであったりします。これは、関数が4(+1)次元(2つの3次元角度の4つの値+光の波長の1つの任意値)であることを意味し、単純に2Dで表現することはできず、3Dグラフでも表現できないことを意味する。時々文献で見かける2Dや3Dのグラフは、関数の一部分しか示していない。
BSDFという用語は、単にBxDF関数群全体をカバーするカテゴリー名として使われることが多い。
BSDFという用語は、単に入射光角度の関数として散乱量(散乱光ではない)を記述する関数として、少し異なる文脈で使用されることもあります。この文脈を説明する例として、完全なランバート面の場合、BSDF (angle)=const. このアプローチは、例えば光沢面のメーカーが出力品質を検証するために使用される[clarification needed]。
BSDFという用語のもう1つの最近の使い方は、いくつかの3Dパッケージで見ることができ、ベンダーがPhong、Blinn-Phongなどのような単純でよく知られたCGアルゴリズムを包含する「スマート」カテゴリとして使用しています。
2000年、Debevecら[2]による人間の顔に対するBSDFの取得は、超フォトリアリスティックなデジタルそっくりさんによる完全バーチャル映画撮影への道における最後の重要なブレークスルーの1つであった。このチームは、移動可能な光源、移動可能な高解像度デジタルカメラ、いくつかの位置に設置された2つの偏光板、および小型コンピュータ上の実にシンプルなアルゴリズムで構成される、最もシンプルなライトステージを使用して、地下散乱成分(BTDFの特殊なケース)を分離した世界初の研究者であった[2]。 [2]研究チームは、空気層から油層に反射・散乱する光は偏光を保持し、肌内部を伝わる光は偏光を失うという既存の科学的知見を利用した[2]。表面下散乱成分は、モデル内部からの安定した高散乱光の輝きとしてシミュレートすることができ、これがないと肌がリアルに見えない。ワーナー・ブラザース映画によって設立されたESC Entertainment社は、『マトリックス リローデッド』と『マトリックス レボリューションズ』の視覚効果/バーチャル撮影システムを担当するために特別に設立された会社で、ランバート拡散成分と、フレネルタイプの効果を持つ修正鏡面フォン成分からなる近似解析BRDFのパラメータを分離しました。

BRDF(双方向反射率分布関数)[4]は、BSSRDFを簡略化したもので、光が同じ点から入射し、同じ点から出射すると仮定しています(右図参照)。
BTDF(Bidirectional Transmittance Distribution Function)[1]はBRDFに似ていますが、表面の反対側を対象としています。(一番上の画像を参照)。
BDF(双方向透過率分布関数)はBRDFとBTDFを総称したものです。
BSSRDF(双方向散乱-表面反射率分布関数または双方向表面散乱RDF)[4][5]は、表面下散乱(SSS)のような現象を含め、出射放射輝度と入射光束の関係を記述します。BSSRDFは、表面に当たった2つの光線の間で光がどのように輸送されるかを記述します。
BSSTDF(双方向散乱-表面透過率分布関数)はBTDFのようなものですが、表面下散乱を含みます。
BSSDF (Bidirectional scattering-surface distribution function)は、BSSTDFとBSSRDFを総称したものです。BSDF(双方向散乱分布関数)としても知られています。

bench

CPU
計測中...
GPU
計測中...

SOM 自己組織化マップは教師データ不要のニューラルネットワーク PCAとの関係 EOF

 

自己組織化マップは、最も人気のあるニューラルモデルの一つです。

これは、競合学習ネットワークのカテゴリに属します。SOMは、教師なし学習に基づいています。つまり、学習中に人間の介入は必要なく、入力データの特徴をほとんど知らなくてもよいのです。例えば、入力データのメンバーシップをクラスタリングするためにSOMを使用することができます。SOMは、問題に固有の特徴を検出することができるため、SOFM(Self Origination Feature Map)とも呼ばれています。

SOM は、主成分分析(PCA)の非線形一般化と考えられる

が、経験的直交関数(EOF)や PCA などの従来の特徴抽出手法に比べて多くの利点があることが、人工および実地球データを用いて示されている 。

https://en.wikipedia.org/wiki/Self-organizing_map


SOMの解釈は2通りある。学習段階で近傍全体の重みが同じ方向に動かされるため、類似の項目は隣接するニューロンを興奮させる傾向がある。したがって、SOM は類似のサンプルは近くに、非類似のサンプルは離れてマッピングされるセマンティックマップを形成する。これは、SOMのU行列(隣接するセルの重みベクトル間のユークリッド距離)で可視化することができる。
もう一つの方法は、ニューロン重みを入力空間へのポインタと考えることである。これは、学習サンプルの分布の離散的な近似を形成する。そして,学習サンプルの集中する領域ではより多くのニューロンを指し示し,サンプルの少ない領域ではより少ないニューロンを指し示す.

U行列(統一距離行列)は、自己組織化マップ(SOM)の表現で、隣接するニューロンのコードブックベクトル間のユークリッド距離をグレースケール画像で描いたものである。この画像は、2次元画像を用いて高次元空間のデータを可視化するために使用される。

https://en.wikipedia.org/wiki/U-matrix

入力データを用いて SOM が学習されると、最終的なマップにはねじれが生じないことが期待される。マップにねじれがない場合、隣接するニューロンのコードブックベクトル間の距離は、基礎となるデータの異なる部分間の距離の近似値を与える。このような距離をグレースケール画像で表現すると、明るい色は間隔の狭いノードコードブックベクトルを表し、暗い色はより広く離れたノードコードブックベクトルを表します。したがって、明るい色の集まりをクラスタ、暗い部分をクラスタ間の境界と考えることができる。この表現により、高次元空間におけるクラスタの可視化や、比較的簡単な画像処理によるクラスタの自動認識などが可能になる。

画像
データ近似のための一次元SOMと主成分分析(PCA)の比較。SOMは赤の折れ線で、正方形、20個のノードがある。第一主成分は青い線で示される。データポイントは小さな灰色の円である。PCAの場合、この例では説明できない分散の割合は23.23%であり、SOMの場合は6.86%である。CC BY-SA 3.0 File:SOMsPCA.PNG Created: 10 May 2012

主成分分析(PCA)の非線形一般化は、PCAが持つ線形の制限を超えて、データの非線形構造を捉えるための手法です。PCAは線形の次元削減手法であり、データの主要な方向を線形の軸として抽出します。しかし、多くの実世界のデータは非線形の関係性を持っているため、これらを適切に扱うためには非線形の手法が必要です。

PCAの非線形一般化に関しては、以下のような手法があります:

  1. カーネル主成分分析(Kernel PCA):

    • カーネルPCAは、カーネルトリックを使用して非線形データの特徴を捉えます。

    • この手法では、データを高次元の特徴空間に射影し、その空間で線形のPCAを適用します。

    • 結果として、元の非線形データの主要な構造を捉えることができます。

  2. 多次元尺度構成法(MDS):

    • MDSは、データポイント間の距離または類似性を保持しながら、高次元データを低次元に埋め込む手法です。

    • 非線形MDSは、非線形の関係を考慮してデータを低次元に射影します。

  3. t分布型確率的近傍埋め込み(t-SNE):

    • t-SNEは、高次元データのクラスタリングや可視化に広く使用される非線形次元削減手法です。

    • この手法は、高次元データポイント間の類似性を低次元空間に確率的に表現します。

  4. 自己組織化マップ(SOM):

    • SOMは、高次元データを低次元(通常2次元)の格子上に非線形に射影する手法です。

    • データのトポロジカルな構造を保持しながら、複雑なデータのパターンを可視化することができます。

これらの手法は、PCAの基本的な考え方を非線形データに拡張することで、より複雑なデータ構造を捉えることが可能になります。それぞれの手法は異なる特徴を持ち、特定の種類のデータや問題に適しています。