環境光Ambient lighting

環境光は、シーンに一定の照明を生成します。Ambient lighting provides constant lighting for a scene. 頂点法線、光の方向、光の位置、減衰などの他の照明要素に依存していないため、すべてのオブジェクト頂点を同じように照らします。It lights all object vertices the same because it is not dependent on any other lighting factors such as vertex normals, light direction, light position, range, or attenuation. 環境光は、すべての方向において一定であり、オブジェクトのすべてのピクセルが同じように色付けされます。Ambient lighting is constant in all directions and it colors all pixels of an object the same. 計算は高速ですが、オブジェクトはフラットに見え、リアル感が劣ります。It is fast to calculate but leaves objects looking flat and unrealistic.

環境光は最も短時間で実現できるライティングですが、リアル感は最も劣ります。Ambient lighting is the fastest type of lighting but it produces the least realistic results. Direct3D には、ライトを作成せずに使用できる 1 つのグローバル環境光プロパティがあります。Direct3D contains a single global ambient light property that you can use without creating any light. または、任意のライト オブジェクトを設定して、環境光を実現することもできます。Alternatively, you can set any light object to provide ambient lighting.

シーンの環境光は、次の式で表されます。The ambient lighting for a scene is described by the following equation.

環境光 = Cₐ*[Gₐ + 合計 (Atten*スポット*Lai)]Ambient Lighting = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]

各項目の意味は次のとおりです。Where:

パラメーターParameter 既定値Default value 種類Type 説明Description
CₐCₐ (0,0,0,0)(0,0,0,0) D3DCOLORVALUED3DCOLORVALUE マテリアルのアンビエント色Material ambient color
GₐGₐ (0,0,0,0)(0,0,0,0) D3DCOLORVALUED3DCOLORVALUE グローバル アンビエント色Global ambient color
AtteniAtteni (0,0,0,0)(0,0,0,0) D3DCOLORVALUED3DCOLORVALUE i 番目のライトの減衰。Light attenuation of the ith light. 減衰とスポットライト係数」を参照してください。See Attenuation and spotlight factor.
SpotiSpoti (0,0,0,0)(0,0,0,0) D3DVECTORD3DVECTOR i 番目のライトのスポットライト係数。Spotlight factor of the ith light. 減衰とスポットライト係数」を参照してください。See Attenuation and spotlight factor.
sumsum なしN/A なしN/A 環境光の合計Sum of the ambient light
LaiLai (0,0,0,0)(0,0,0,0) D3DVECTORD3DVECTOR i 番目のライトのアンビエント色Light ambient color of the ith light

 

Cₐ の値は、次のいずれかになります。The value for Cₐ is either:

  • 頂点の color1 場合 AMBIENTMATERIALSOURCE = D3DMCS_頂点宣言で指定されている COLOR1、および最初の頂点の色。vertex color1, if AMBIENTMATERIALSOURCE = D3DMCS_COLOR1, and the first vertex color is supplied in the vertex declaration.
  • 頂点の color2 場合 AMBIENTMATERIALSOURCE = D3DMCS_頂点宣言で指定されている COLOR2、および 2 番目の頂点の色。vertex color2, if AMBIENTMATERIALSOURCE = D3DMCS_COLOR2, and the second vertex color is supplied in vertex declaration.
  • マテリアルのアンビエント色。material ambient color.

  かどうか AMBIENTMATERIALSOURCE のいずれかのオプションを使用すると、および頂点の色が指定されていない、素材のアンビエント色が使用されます。Note   If either AMBIENTMATERIALSOURCE option is used, and the vertex color is not provided, then the material ambient color is used.

 

マテリアルのアンビエント色を使用するには、下記のコード例に示すように、SetMaterial を使用します。To use the material ambient color, use SetMaterial as shown in the example code below.

Gₐ は、グローバル アンビエント色です。Gₐ is the global ambient color. サニティを使用して設定されます (D3DRS_アンビエント)。It is set using SetRenderState(D3DRS_AMBIENT). Direct3D のシーンには、グローバル アンビエント色が 1 つあります。There is one global ambient color in a Direct3D scene. このパラメーターは、Direct3D のライト オブジェクトには対応していません。This parameter is not associated with a Direct3D light object.

Lai は、シーンの i 番目のアンビエント色です。Lai is the ambient color of the ith light in the scene. 各 Direct3D のライトには一連のプロパティがあり、その 1 つがアンビエント色です。Each Direct3D light has a set of properties, one of which is the ambient color. sum(Lai) の項は、シーン内のすべてのアンビエント色の合計です。The term, sum(Lai) is a sum of all the ambient colors in the scene.

Example

この例では、オブジェクトの色は、シーンの環境光と素材のアンビエント色を使用しています。In this example, the object is colored using the scene ambient light and a material ambient color.

#define GRAY_COLOR  0x00bfbfbf

Ambient.r = 0.75f;
Ambient.g = 0.0f;
Ambient.b = 0.0f;
Ambient.a = 0.0f;

この方程式では、生成されるオブジェクトの頂点の色は、マテリアルの色と光の色の組み合わせになります。According to the equation, the resulting color for the object vertices is a combination of the material color and the light color.

次の 2 つのイメージは、マテリアルの色がグレーで、ライトの色が明るい赤であることを示しています。The following two illustrations show the material color, which is gray, and the light color, which is bright red.

灰色の球体の図赤の球体の図

結果として作成されるシーンは、次のようになります。The resulting scene is shown in the following illustration. シーン内の唯一のオブジェクトは球です。The only object in the scene is a sphere. 環境光は、すべてのオブジェクトの頂点を同じ色で照らします。Ambient light lights all object vertices with the same color. 頂点の法線やライトの方向には依存しません。It is not dependent on the vertex normal or the light direction. その結果、オブジェクトのサーフェスの周囲にシェーディングの差が生じないため、球体は 2D の円のように見えます。As a result, the sphere looks like a 2D circle because there is no difference in shading around the surface of the object.

環境光のある球体の図

オブジェクトをよりリアルに見せるには、環境光に加えて、ディフューズ ライティングやスペキュラ ライティングを適用します。To give objects a more realistic look, apply diffuse or specular lighting in addition to ambient lighting.

関連トピックRelated topics

照明の計算Mathematics of lighting