光源の概要Lighting overview

Direct3D の光源を使うときは、Direct3D が照明のディテールを自動的に処理できるようにします。When you use Direct3D lighting, you allow Direct3D to handle the details of illumination for you. 詳しい知識のあるユーザーは、必要に応じて自分で光源を実行することもできます。Advanced users can perform lighting on their own, if desired.

光源が有効な場合、Direct3D は以下の組み合わせに基づいて各オブジェクト頂点の色を計算します。When lighting is enabled, Direct3D calculates the color of each object vertex based on a combination of the following:

  • 関連するテクスチャ マップのテクセル。The texels in an associated texture map.
  • 頂点における拡散および反射の色 (指定されている場合)。The diffuse and specular colors at the vertex, if specified.
  • シーンまたはシーンの環境光レベルで光源により生成される色と強さ。The color and intensity of light produced by light sources in the scene or the scene's ambient light level.

光源と素材をどのように使うかによって、レンダリングされるシーンの外観が大きく変わります。How you work with lighting and materials makes a big difference in the appearance of the rendered scene. 素材は、照明がサーフェスにどのように反射するかを定義します。Materials define how light reflects off a surface. 直接光レベルと環境光レベルは、反射する照明を定義します。Direct light and ambient light levels define the light that is reflected. 光源が有効な場合、素材を使ってシーンをレンダリングする必要があります。You must use materials to render a scene if lighting is enabled.

シーンをレンダリングするのに照明は必要ありませんが、照明なしでレンダリングされたシーンのディテールは見えません。Lights are not required to render a scene, but details in a scene rendered without light are not visible. 照明のないシーンをレンダリングすると、よくてもシーン内のオブジェクトのシルエットが見える程度です。At best, rendering an unlit scene results in a silhouette of the objects in the scene. このディテールはほとんどのケースで不十分です。This is not enough detail for most purposes.

周辺光と直接光Direct light vs. ambient light

直接光と環境光はどちらもシーン内のオブジェクトを照射しますが、互いに独立していて効果が大きく異なり、完全に異なる方法で使う必要があります。Although both direct and ambient light illuminate objects in a scene, they are independent of one another, they have very different effects, and they require that you work with them in completely different ways.

直接光はオブジェクトを直接照射します。Direct light strikes the object directly. 直接光には必ず方向と色があります。これは、グロー シェーディングなどのシェーディング アルゴリズムの要素です。Direct light always has direction and color, and it is a factor for shading algorithms, such as Gouraud shading. 照明の種類ごとに直接光を照射する方法が異なっており、特殊な減衰効果を生み出します。Different types of lights emit direct light in different ways, creating special attenuation effects.

環境光は事実上シーン内のどこにでも存在します。Ambient light is effectively everywhere in a scene. 環境光は、そのシーン内のオブジェクトとその位置に関係なく、シーン全体を埋める照明の全般的なレベルです。Ambient light is a general level of light that fills an entire scene, regardless of the objects and their locations in that scene. 環境光には位置や方向がなく、色と強さのみです。Ambient light has no position or direction, only color and intensity. 各照明がシーン内の環境光全体を増大させます。Each light adds to the overall ambient light in a scene.

環境光の色は RGBA 値の形をとっており、その各コンポーネントは 0 ~ 255 の整数値です。Ambient light color takes the form of an RGBA value, where each component is an integer value from 0 to 255. これは、Direct3D におけるほとんどの色値と異なります。This is unlike most color values in Direct3D.

赤、緑、青のコンポーネントが組み合わされて、環境光の最終的な色ができあがります。The red, green, and blue components combine to make the final color of the ambient light. アルファ コンポーネントは、色の透明度を制御します。The alpha component controls the transparency of the color. ハードウェア アクセラレーションや RGB エミュレーションを使っている場合、アルファ コンポーネントは無視されます。When using hardware acceleration or RGB emulation, the alpha component is ignored.

性質と Direct3D ライティング モデルDirect3D light model vs. nature

自然界では、光が光源から放射されると、ユーザーの目に届くまでに、数千~数百万まではいかなくても、数百ものオブジェクトに反射します。In nature, when light is emitted from a source, it is reflected off of hundreds, if not thousands or millions of objects before reaching the user's eye. 反射するたびに、いくらかの光がサーフェスに吸収されたりランダムな方向に拡散されたりし、残りは別のサーフェスやユーザーの目に届きます。Each time it is reflected, some light is absorbed by a surface, some is scattered in random directions, and the rest goes on to another surface or to the user's eye. このプロセスは、光がまったくなくなるか、ユーザーが光と認識するまで続きます。This process continues until the light is reduced to nothing or a user perceives the light.

明らかに、光の自然な動作を完全にシミュレートするのに必要な計算には時間がかかりすぎて、リアルタイムの Direct3D グラフィックスには使うことができません。Obviously, the calculations required to perfectly simulate the natural behavior of light are too time-consuming to use for real-time Direct3D graphics. したがって、スピードを考慮して、Direct3D の照明モデルでは自然界における光の動作を概算しています。Therefore, with speed in mind, the Direct3D light model approximates the way light works in the natural world. Direct3D は、組み合わせることで最終的な色を生み出す赤、緑、青のコンポーネントの観点で照明を表します。Direct3D describes light in terms of red, green, and blue components that combine to create a final color.

Direct3D では、照明がサーフェスに反射すると、照明の色がサーフェス自体と数学的に相互作用し、最終的に画面に表示される色を生み出します。In Direct3D, when light reflects off a surface, the light color interacts mathematically with the surface itself to create the color eventually displayed on the screen. Direct3D が使うアルゴリズムに関する具体的な情報については、「光源の計算」をご覧ください。For specific information about the algorithms Direct3D uses, see Mathematics of lighting.

Direct3D の照明モデルでは、照明が環境光と直接光の 2 つの種類に一般化されます。The Direct3D light model generalizes light into two types: ambient light and direct light. それぞれ属性が異なっており、サーフェスの素材と相互作用する方法が異なっています。Each has different attributes, and each interacts with the material of a surface in different ways. 環境光は、かなり大きく拡散する照明であり、その方向と光源ははっきりしません。どの場所でも強さのレベルは低いままです。Ambient light is light that has been scattered so much that its direction and source are indeterminate: it maintains a low level of intensity everywhere. 写真家が使う間接照明は環境光の良い例です。The indirect lighting used by photographers is a good example of ambient light.

Direct3D における環境光は、自然界と同じように実際の方向や光源がなく、色と強さのみです。Ambient light in Direct3D, as in nature, has no real direction or source, only a color and intensity. 実際、環境光レベルは照明を生成するシーン内のどのオブジェクトからも完全に独立しています。In fact, the ambient light level is completely independent of any objects in a scene that generate light. 環境光は、鏡面反射には影響を与えません。Ambient light does not contribute to specular reflection.

直接光は、シーン内の光源により生成される照明です。常に色と強さがあり、指定された方向に移動します。Direct light is the light generated by a source within a scene; it always has color and intensity, and it travels in a specified direction. 直接光はサーフェスの素材と相互作用して鏡面ハイライトを生み出し、その方向はグロー シェーディングなどのシェーディング アルゴリズムの要素として使われます。Direct light interacts with the material of a surface to create specular highlights, and its direction is used as a factor in shading algorithms, including Gouraud shading. 直接光が反射しても、シーン内の環境光レベルには影響を与えません。When direct light is reflected, it does not contribute to the ambient light level in a scene. 直接光を生成するシーン内の光源は、シーンを照射する方法に影響を与えるさまざまな特性があります。The sources in a scene that generate direct light have different characteristics that affect how they illuminate a scene.

さらに、多角形の素材には、照射された照明を多角形が反射する方法に影響を与えるプロパティがあります。Additionally, a polygon's material has properties that affect how that polygon reflects the light it receives. 素材が環境光を反射する方法を表す単一の反射率特性を設定し、個々の特性を設定して素材の反射および拡散の反射率を決定します。You set a single reflectance trait that describes how the material reflects ambient light, and you set individual traits to determine the material's specular and diffuse reflectance.

ライトとマテリアルの色の値Color values for lights and materials

Direct3D は、組み合わせることで最終的な色を生み出す 4 つのコンポーネント (赤、緑、青、アルファ) の観点で色を表します。Direct3D describes color in terms of four components (red, green, blue, and alpha), that combine to make a final color. 各コンポーネントの範囲は 0.0 ~ 1.0 です。Each component ranges from 0.0 to 1.0. 照明と素材のどちらも同じ構造を使って色を表しますが、照明と素材では値の使い方が少し異なります。Although both lights and materials use the same structure to describe color, the values are used a little differently by lights versus materials.

光源の色値は、その光源が放射する特定の照明コンポーネントの量を表します。Color values for light sources represent the amount of a particular light component it emits. 照明はアルファ コンポーネントを使わないため、色の赤、緑、青コンポーネントのみが関係します。Because lights don't use an alpha component, only the red, green, and blue components of the color are relevant. プロジェクション テレビでは、3 つのコンポーネントを赤、緑、青のレンズとして視覚化できます。You can visualize the three components as the red, green, and blue lenses on a projection television. 各レンズはオフ (該当する要素の値が 0.0)、明るさが最大 (値が 1.0)、またはその間のレベルのいずれかになります。Each lens might be off (a 0.0 value in the appropriate member), it might be as bright as possible (a 1.0 value), or it might be some level in between.

レンズを通過した色が組み合わされて、照明の最終的な色ができあがります。The colors coming through the lenses combine to make the light's final color. R(1.0)、G(1.0)、B(1.0) のような組み合わせは白い光になります。R(0.0)、G(0.0)、B(0.0) は光をまったく照射しません。A combination like R(1.0), G(1.0), B(1.0) creates a white light, where R(0.0), G(0.0), B(0.0) doesn't emit light at all. 1 つのコンポーネントのみ照射する照明 (完全に赤、緑、または青の光になります) を作ることができます。または、光を組み合わせて黄色や紫などの色を放射できます。You can make a light that emits only one component, resulting in a pure red, green, or blue light; or, the light could use combinations to emit colors like yellow or purple. 負の色コンポーネント値を設定し、実際にはシーンから光をなくす "ダーク ライト" を作ることもできます。You can even set negative color component values to create a "dark light" that actually removes light from a scene. または、コンポーネントを 1.0 より大きい値に設定し、非常に軽い光を作ることもできます。Or, you might set the components to some value larger than 1.0 to create an extremely bright light.

一方、素材では、その素材を使ってレンダリングされるサーフェスに反射する照明コンポーネントの量を色値が表します。With materials, on the other hand, color values represent how much of a light component is reflected by a surface that is rendered with that material. 色コンポーネントが R(1.0)、G(1.0)、B(1.0)、A(1.0) の素材は、到達するすべての照明を反射します。A material whose color components are R(1.0), G(1.0), B(1.0), A(1.0) reflects all the light that comes its way. 同様に、R(0.0)、G(1.0)、B(0.0)、A(1.0) の素材は、そこに到達する緑の光をすべて反射します。Likewise, a material with R(0.0), G(1.0), B(0.0), A(1.0) reflects all the green light that is directed at it. 素材には反射率の値が複数あるため、さまざまな種類の効果が生み出されます。Materials have multiple reflectance values to create various types of effects.

光源の種類」と「光源のプロパティ」をご覧ください。See Light types and Light properties.

関連トピックRelated topics

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