ライティングの概要
ライティング コマンド
MATLAB® グラフィックス環境に備わるコマンドを使用すると、光源を配置したり、ライトを反射するオブジェクトの特性を調整できます。これらのコマンドは以下を含みます。
コマンド | 目的 |
---|---|
カメラの位置に関連付けてライトを作成/移動する | |
球面座標系内でライトを作成/配置する | |
Light オブジェクトを作成する | |
ライティング法を選択する | |
Light オブジェクトの反射に関するプロパティを設定する |
light とlit オブジェクト プロパティを設定し、特定の結果を達成できます。これらのトピックに加えて、可視化にライティングを導入するため、ライティングの例を用意しています。
Light オブジェクト
light オブジェクトは関数 light
を使用して作成します。Light オブジェクト プロパティには、3 つの重要なプロパティがあります。
Color
プロパティは、光源からの方向性をもつライトの色を決めます。シーン内でのオブジェクトの色は、オブジェクト自体の色と光源により決められます。
Style
プロパティは光源が点で (Style
を local
に設定)、ある特定の位置からすべての方向に放射しているか、または光源が無限遠 (Style
を infinite
に設定) で、指定した位置の方向から平行な光を照射しているかを決めます。
Position
プロパティは Axes のデータ単位で光源の位置を指定します。光源が無限遠の場合、Position
は光源に対する方向を指定します。
Light は、同じ座標軸に存在する surface オブジェクトや patch オブジェクトに影響を与えます。これらのオブジェクトは、ライトで照射されたときの見え方を変更するためのプロパティをもっています。
ライティングに影響するプロパティ
Light オブジェクト自体を見ることはできませんが、ライトを含む座標軸に存在する patch や surface オブジェクトに対する効果を見ることができます。surf
、mesh
、pcolor
、fill
、fill3
および surface
、patch
などの関数によって、これらのオブジェクトは作成されます。
ライティングの効果は、axes、light、patch、surface オブジェクト プロパティを設定することによって制御することができます。すべてのプロパティは、一般的に望ましい結果を得られるように、既定値をもっています。ただし、これらのプロパティの値を調整することにより、特別な効果を得ることもできます。
プロパティ | 効果 |
---|---|
| 背景光の色を指定する座標軸プロパティ。これは方向性をもたず、すべてのオブジェクトに一様に影響します。周囲光の効果は、Axes に視覚可能な Light オブジェクトがある場合にのみ発生します。 |
| オブジェクトから反射した光の周囲要素の強度を決める Patch および Surface プロパティ。 |
| オブジェクトから反射した光の散乱要素の強度を決める Patch および Surface プロパティ。 |
| オブジェクトから反射した光の反射要素の強度を決める Patch および Surface プロパティ。 |
| 反射強調のサイズを決める Patch および Surface のプロパティ。 |
| 鏡面反射がオブジェクトの色または光源の色によって色付けされる度合を決める、Patch および Surface のプロパティ。 |
| オブジェクトの面上の光の効果を計算するための方法を決める Patch および Surface プロパティ。選択肢は、ライティングなしか、flat または gouraud ライティング アルゴリズムです。 |
| オブジェクトのエッジ上の光の効果を計算するための方法を決める Patch および Surface プロパティ。選択肢は、ライティングなしか、flat または gouraud ライティング アルゴリズムです。 |
| 面の頂点法線がカメラから離れたときに、面がどのように照射されるかを決める Patch および Surface プロパティ。このプロパティは、オブジェクトの内部と外部を見分けるのに役立ちます。 |
| オブジェクトの面の色を指定する Patch および Surface プロパティ。 |
| オブジェクトのエッジの色を指定する Patch および Surface プロパティ。 |
| オブジェクトの各頂点の法線ベクトルを含む Patch および Surface プロパティ。MATLAB は、頂点の法線ベクトルを使用してライティング計算を実行します。MATLAB はこのデータを自動的に生成しますが、ユーザーが独自の頂点法線を指定することも可能です。 |
| オブジェクト データを変更したときに MATLAB が頂点法線を再計算するか ( |
詳細については、Axes のプロパティ、Surface のプロパティ および Patch のプロパティ を参照してください。
ライティング コントロールの例
ライティングは、グラフィカルなシーンに現実性を付加するテクニックです。ライティングは、自然照明 (すなわち、太陽からの方向性をもつ光) の環境でオブジェクトに生じる陰影をシュミレーションすることにより実行します。ライティングの効果を実装するために、MATLAB は Light と呼ばれるグラフィックス オブジェクトを定義します。MATLAB はライティングを surface と patch オブジェクトに適用します。
例 — シーンへのライトの追加
この例では、膜の表面を表示し、カメラの右から発する光源で照明します。
membrane camlight
ライトを作成すると、周囲光やオブジェクトの反射率などの特性を制御するいくつかのライティングに関するプロパティをアクティブにします。
例 — 数学関数のグラフの照明
ライティングは、数学関数の表面グラフを強調することができます。たとえば、ezsurf
コマンドを使用して、-6π から 6π までの領域で式
を評価します。
h = fsurf(@(x,y) sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2), ... [-6*pi,6*pi]);
次に関数 lightangle
を使用してライティングを付加します。このコマンドは方位角と仰角を使用して、ライトの位置を設定できます。
view(0,75) shading interp lightangle(-45,30) h.FaceLighting = 'gouraud'; h.AmbientStrength = 0.3; h.DiffuseStrength = 0.8; h.SpecularStrength = 0.9; h.SpecularExponent = 25; h.BackFaceLighting = 'unlit';
findobj
を使用して surface オブジェクトのハンドルを取得した後で、表面からライトがどのように反射するかをプロパティを使用して設定できます。これらプロパティの詳細は、ライティングに影響するプロパティを参照してください。