Phongの反射モデルのソースを表示
←
Phongの反射モデル
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''Phongの反射モデル'''(フォンのはんしゃモデル; {{lang-en-short|Phong reflection model}})とは、[[3次元コンピュータグラフィックス]]において、モデリングされた面上の点に影をつけるための照明と陰影([[シェーディング]])モデルである。'''Phong照明'''、'''Phongライティング'''とも。 == 概要 == Phongの反射モデルは環境光反射・[[拡散反射]]・[[鏡面反射]]の和として定義される(⇒ [[#定義]])。環境光反射は入射光の重み付けで、拡散反射成分は[[ランバート反射]]で、鏡面反射は経験的な式でモデル化されている(⇒ [[#解説]])。このモデルは[[ユタ大学]]の[[理学博士]]である、{{仮リンク|ブイ・トゥオン・フォン|en|Bui Tuong Phong}}によって開発され、1973年に"Illumination for Computer Generated Pictures"の題で学位論文として発表された。 上記論文では[[ポリゴンメッシュ]]モデルの[[シェーディング]]における[[法線ベクトル]]補完手法も提案されている。これは[[Phongシェーディング]]として知られる。 == 定義 == 光源・反射面(点)・撮像面(点)が配置された3次元空間について考える。 以下のように光源を定義する: * <math>L</math>: 反射面から光源への方向ベクトル * <math>i_s</math>: 入射光強度の[[鏡面反射]]成分 * <math>i_d</math>: 入射光強度の[[拡散反射]]成分 * <math>i_a</math>: 環境光強度 以下のように反射面(点)を定義する: * <math>N</math>: 反射面の[[法線]]ベクトル * <math>k_s</math>: 鏡面反射係数 * <math>k_d</math>: 拡散反射係数 * <math>k_a</math>: 環境反射係数 * <math>\alpha</math>: 光沢度 (shininess) * <math>R</math>: 面上のその点において光線が完全に反射される方向 以下のように撮像面(点)と出力を定義する: * <math>V</math>: 反射面から視点への方向ベクトル * <math>i_r</math>: 反射光強度 これらに基づき、Phongの反射モデルは以下の式で定義される: :<math>i_r = k_a i_a + k_d (L \cdot N) i_d + k_s (R \cdot V)^{\alpha}i_s </math> 複数光源を扱う場合、光源の種類に応じた成分<ref group="注">環境光源なら第一項のみ、それ以外なら第二項と第三項を足す。</ref>を単に加算する。 == 解説 == Phongの反射モデルでは、一般的な{{仮リンク|レンダリング方程式|en|Rendering equation}}をより単純化して扱うことができる。このモデルでは、面上の点における陰影を決定する際に、次のような単純化ができる利点がある。 #このモデルは、「局所的な」反射モデルである。すなわち、[[ラジオシティ]]のような[[レイトレーシング]]で行うような二次反射を計算する必要はない。反射した光の減衰を補正するために、環境光の項をレンダリングする際に加えている。 #反射を[[Phongの反射モデル#鏡面反射成分|鏡面反射成分]]・[[Phongの反射モデル#拡散反射成分|拡散反射成分]]・[[Phongの反射モデル#環境反射成分|環境反射成分]]の和で表現 この方程式をグラフィカルに表現すると以下のようになる。 [[ファイル:Phong components version 4.png|655px|Phong方程式を説明した絵図]] === 鏡面反射成分 === Phongの反射モデルにおける鏡面反射成分(スペキュラ、specular)は[[鏡面反射]]に類する成分である。 鏡面反射成分は[[鏡面反射]]の数学的モデルではない。これは[[鏡面ハイライト]]の経験的モデルであり<ref>"cosine law .. this shading offers only a very rough approximation ... it does not allow for any of the ''specular'' properties of the material, i.e. the ability of the material to generate highlights by reflection" {{Harvnb|Phong|1975|pp=312-313}} より引用。</ref>、Phong の「光沢の強い表面はハイライト中心から輝度が急激に落ち、面積が小さい」「光沢の鈍い表面はハイライト中心から輝度がゆるやかに落ち、面積が大きい」という観察を上手く再現するように設計されている。 この成分の挙動は光沢度 <math>\alpha</math> で強く制御される。<math>0 \leq R \cdot V \leq 1</math> を取る反射ベクトル <math>R</math> と視点ベクトル <math>V</math> の[[内積]]が <math>\alpha</math> のべき乗で減衰することで、[[鏡面反射]]が見える角度(<math>R \cdot V = 1</math>)に近い条件でのみ <math>\alpha</math> に応じた急激さでハイライトが発生する。なお、光沢度 <math>\alpha</math> と素材の物理的特性の対応は考慮せずモデル化されており、値は都度経験的に設定される<ref>"W(i) and the power n express the specular reflection characteristics of a material. ... These numbers are empirically adjusted ... no physical justifications are made." {{Harvnb|Phong|1975|p=315}} より引用。</ref>。 === 拡散反射成分 === Phongの反射モデルにおける拡散反射成分(ディフューズ、diffuse)は[[拡散反射]]を表現する成分である。 拡散反射成分は[[ランバート反射]]でモデル化されている。ゆえに[[入射角]]にのみ依存し、視点の方向 <math>V</math> には影響を受けない。 === 環境反射成分 === Phongの反射モデルにおける環境反射成分(アンビエント、ambient)は環境光の反射を表現する成分である。 環境反射成分は[[ランバート反射]]でモデル化されている。ただし環境光は全方向にあたる、すなわち常に反射面へ垂直に入射する。このため環境光の方向ベクトル <math>L_a</math> で表現すると <math>L_a \cdot N = 1 </math> が常に成立し、環境反射成分は環境光の単なる重み付けになる。 == 色 == 環境反射光と拡散反射光の色は同じである。環境反射の項は均一であるのに対し、拡散反射の項の輝度は表面の方向によって値が変わることに注意すること。鏡面反射光の色は入射光の色と同一である。 {{独自研究範囲|色をRGB値で表現する場合、この式はR、G、B成分のそれぞれについて別々に計算するのが一般的である|date=2025年2月}}。 == メリットとデメリット == [[OpenGL]]および[[Direct3D]]といったグラフィックス[[Application Programming Interface|API]]を用いたリアルタイムレンダリングでは、描画速度などの制約から局所照明 (local illumination) モデルを採用することが多いが、Phong反射モデルはその単純さから計算量もリソース消費量も少なくて済むため、ソフトウェア ([[CPU]]) もしくはハードウェア ([[Graphics Processing Unit|GPU]]) による固定機能[[シェーダー]]として標準実装されていた(OpenGL 2.1およびDirect3D 9まで)。ハードウェア性能が向上し、プログラマブルシェーダーが一般化してからも、軽量さからPhong反射モデルが採用されることもある。なお固定機能の廃止されたOpenGL 3.1およびDirect3D 10以降では、Phong反射モデルの実現にはプログラマブルシェーダーが使用される。 一方で、極めて単純化されたおおざっぱな近似モデルであることから、表面下散乱や環境遮蔽といった複雑な拡散反射光や環境光による[[大域照明]] (global illumination) 現象を記述することはできない。 == Phongシェーディング補間法 == {{main|Phongシェーディング}} 面上の点で色を計算する反射モデルに加えて、Phongはまた、曲面のパッチを表現するラスタライズされた三角形において、ピクセルごとの色を計算するための補間方法も開発した。これらの反射モデルと補間法のトピックは時々「Phongシェーディング」という用語として一緒に扱われる。しかし「Phongシェーディング」という用語は、あくまで補間のための方法にのみ使われるものである。 == 脚注 == === 注釈 === <references group="注"></references> === 出典 === {{Reflist}} == 参考文献 == * {{Cite journal2 |last=Phong |first=Bui Tuong |year=1975 |title=Illumination for computer generated pictures |url=https://dl.acm.org/doi/10.1145/360825.360839 |journal=Communications of the ACM |volume=18 |issue=6 |pages=311–317 |doi=10.1145/360825.360839}} == 関連項目 == * {{仮リンク|Bui Tuong Phong|en|Bui Tuong Phong}} : Phongの反射モデルの開発者 * [[鏡面ハイライト]] * {{仮リンク|Blinn-Phongの反射モデル|en|Blinn–Phong shading model}} : Phongモデルの改良版 * [[双方向反射率分布関数]] : 他の反射モデル * [[フォンシェーディング]] {{デフォルトソート:ふおんのはんしやもてる}} [[Category:3DCG]] [[Category:エポニム]]
このページで使用されているテンプレート:
テンプレート:Cite journal2
(
ソースを閲覧
)
テンプレート:Harvnb
(
ソースを閲覧
)
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:Main
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
テンプレート:独自研究範囲
(
ソースを閲覧
)
Phongの反射モデル
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報