光源の種類Light types

光源の種類プロパティは、使う光源の種類を定義します。The light type property defines which type of light source you're using. Direct3D には 3 種類の光源 (ポイント ライト、スポットライト、指向性ライト) があります。There are three types of lights in Direct3D - point lights, spotlights, and directional lights. シーン内のオブジェクトを照らす方法は種類ごとに異なっており、計算オーバーヘッドのレベルも異なります。Each type illuminates objects in a scene differently, with varying levels of computational overhead.

ポイント ライトPoint Light

ポイント ライトには、シーン内の色と位置がありますが、単一の方向はありません。Point lights have color and position within a scene, but no single direction. 次の図に示すように、あらゆる方向に光を均等に放射します。They give off light equally in all directions, as shown in the following illustration.

ポイント ライトの図

ライト バルブは、ポイント ライトの良い例です。A light bulb is a good example of a point light. ポイント ライトは、減衰と範囲の影響を受け、頂点単位でメッシュを照らします。Point lights are affected by attenuation and range, and illuminate a mesh on a vertex-by-vertex basis. 照射時、Direct3D はワールド空間におけるポイント ライトの位置と照射する頂点の座標を使って、光の方向に関するベクトルと光が移動する距離を引き出します。During lighting, Direct3D uses the point light's position in world space and the coordinates of the vertex being lit to derive a vector for the direction of the light, and the distance that the light has traveled. 頂点法線と共に両方の値を使って、サーフェスの照射に対する光の貢献度を計算します。Both are used, along with the vertex normal, to calculate the contribution of the light to the illumination of the surface.

指向性光Directional Light

指向性ライトには位置がなく、色と方向のみです。Directional lights have only color and direction, not position. 平行光を放射します。They emit parallel light. つまり指向性ライトにより生成されるすべての光は、シーン内を同じ方向に移動します。This means that all light generated by directional lights travels through a scene in the same direction. 指向性ライトがほぼ無限の距離にある光源 (太陽など) であるとします。Imagine a directional light as a light source at near infinite distance, such as the sun. 指向性ライトは、減衰または範囲の影響を受けないため、Direct3D が頂点の色を計算する際に考慮される要素は指定した方向と色だけです。Directional lights are not affected by attenuation or range, so the direction and color you specify are the only factors considered when Direct3D calculates vertex colors. 照明要素の数が少ないため、使用時に最も計算の少ないライトです。Because of the small number of illumination factors, these are the least computationally intensive lights to use.

スポット ライトSpotLight

スポットライトには、色、位置、光を放射する方向があります。Spotlights have color, position, and direction in which they emit light. 次の図に示すように、スポットライトから放射される光は明るい内部コーンと大きい外部コーンで構成されており、2 つのコーンの間で光の強さは弱くなっていきます。Light emitted from a spotlight is made up of a bright inner cone and a larger outer cone, with the light intensity diminishing between the two, as shown in the following illustration.

内部コーンと外部コーンを持つスポットライトの図

スポットライトは、フォールオフ、減衰、範囲の影響を受けます。Spotlights are affected by falloff, attenuation, and range. これらの要素と各頂点まで光が移動する距離は、シーン内のオブジェクトに対する照明効果を計算するときに計算されます。These factors, as well as the distance light travels to each vertex, are figured in when computing lighting effects for objects in a scene. 各頂点に対するこれらの効果を計算するため、スポットライトは Direct3D におけるすべての光源の中で最も計算に時間がかかるライトです。Computing these effects for each vertex makes spotlights the most computationally time-consuming of all lights in Direct3D.

フォールオーフ、シータ、フィーの値は、スポットライトでのみ使われます。Falloff, Theta, and Phi values are used only by spotlights. これらの値は、スポットライト オブジェクトの内部コーンおよび外部コーンの大きさと、2 つのコーンの間で光がどのように弱くなるかを制御します。These values control how large or small a spotlight object's inner and outer cones are, and how light decreases between them.

シータは、スポットライトの内部コーンのラジアン角度であり、フィー値は光の外部コーンの角度です。Theta is the radian angle of the spotlight's inner cone, and the Phi value is the angle for the outer cone of light. フォールオフは、内部コーンの外側の端から外部コーンの内側の端までに光の強さがどのように弱くなるかを制御します。Falloff controls how light intensity decreases between the outer edge of the inner cone and the inner edge of the outer cone. ほとんどのアプリケーションは、フォールオフを 1.0 に設定し、2 つのコーンの間で均等に発生するフォールオフを作り出しますが、必要に応じて他の値に設定できます。Most applications set Falloff to 1.0 to create falloff that occurs evenly between the two cones, but you can set other values as needed.

次の図は、これらの値の関係と、スポットライトの光の内部コーンおよび外部コーンに値が与える影響を示しています。The following illustration shows the relationship between these values and how they can affect a spotlight's inner and outer cones of light.

フィー値とシータ値のスポットライト コーンとの関連性を示す図

スポットライトは、明るい内部コーンと外部コーンの 2 つの部分を持つ光のコーンを放射します。Spotlights emit a cone of light that has two parts: a bright inner cone and an outer cone. 光は、内部コーンで最も明るく、外部コーンの外側には存在しません。光の強さは 2 つの領域間で減衰します。Light is brightest in the inner cone and isn't present outside the outer cone, with light intensity attenuating between the two areas. この種類の減衰は一般的にフォールオフと呼ばれています。This type of attenuation is commonly referred to as falloff.

頂点に届く光の量は、内部コーンまたは外部コーンにおける頂点の位置に基づいて決まります。The amount of light a vertex receives is based on the vertex's location in the inner or outer cones. Direct3D は、スポットライトの方向ベクトル (L) と光源から頂点へのベクトル (D) のドット積を計算します。Direct3D computes the dot product of the spotlight's direction vector (L) and the vector from the light to the vertex (D). この値は、2 つのベクトル間の角度のコサインに等しく、頂点の位置のインジケーターとして機能します。頂点の位置を光のコーン角度と比較することで、頂点が内部コーンまたは外部コーンのどこに位置するかを判断できます。This value is equal to the cosine of the angle between the two vectors, and serves as an indicator of the vertex's position that can be compared to the light's cone angles to determine where the vertex might lie in the inner or outer cones. 次の図は、これらの 2 つのベクトルの関連性を視覚的に表現しています。The following illustration provides a graphical representation of the association between these two vectors.

スポットライトの方向ベクトルと頂点からスポットライトへのベクトル

システムは、この値をスポットライトの内部コーン角度および外部コーン角度のコサインと比較します。The system compares this value to the cosine of the spotlight's inner and outer cone angles. 光のシータ値とフィー値は、内部コーンおよびガイブコーンの合計コーン角度を表します。The light's Theta and Phi values represent the total cone angles for the inner and outer cones. 頂点が照明の中心から離れると (合計コーン角度を通過するのではなく) 減衰が発生するため、ランタイムはコサインの計算前にこれらのコーン角度を二等分します。Because the attenuation occurs as the vertex becomes more distant from the center of illumination (rather than across the total cone angle), the runtime divides these cone angles in half before calculating their cosines.

ベクトル L および D のドット積が外部コーン角度のコサイン以下の場合、頂点は外部コーンの外側に位置するため、光は届きません。If the dot product of vectors L and D is less than or equal to the cosine of the outer cone angle, the vertex lies beyond the outer cone and receives no light. L および D のドット積が内部コーン角度のコサインより大きい場合、頂点は内部コーン内にあるため最大量の光が届きますが、この場合も距離に応じて減衰が考慮されます。If the dot product of L and D is greater than the cosine of the inner cone angle, then the vertex is within the inner cone and receives the maximum amount of light, still considering attenuation over distance. 頂点が 2 つの領域間にある場合、次の等式を使ってフォールオフが計算されます。If the vertex is somewhere between the two regions, then falloff is calculated with the following equation.

頂点における光の強さの数式 (フォールオフ後)

この場合where:

  • If はフォールオフ後の光の強さIf is light intensity after falloff
  • アルファはベクトル L および D 間の角度Alpha is the angle between vectors L and D
  • シータは内部コーン角度Theta is the inner cone angle
  • フィーは外部コーン角度Phi is the outer cone angle
  • p はフォールオフp is the falloff

この数式は、フォールオフを計算するために頂点における光の強さをスケーリングする 0.0 ~ 1.0 の値を生成します。This formula generates a value between 0.0 and 1.0 that scales the light's intensity at the vertex to account for falloff. 光源からの頂点の距離の要素としての減衰も適用されます。Attenuation as a factor of the vertex's distance from the light is also applied. 次のグラフは、フォールオフ値がフォールオフ曲線に与える影響の違いを示しています。The following graph shows how different falloff values can affect the falloff curve.

光の強さと光源からの頂点の距離のグラフ

実際の照明に対する各種フォールオフ値の影響はわずかであり、1.0 以外のフォールオフ値によってフォールオフ曲線を形成するとパフォーマンスが少し低下します。The effect of various falloff values on the actual lighting is subtle, and a small performance penalty is incurred by shaping the falloff curve with falloff values other than 1.0. そのため、この値は通常 1.0 に設定されます。For these reasons, this value is typically set to 1.0.

関連トピックRelated topics

ライトとマテリアルLights and materials