Mariusは私にMDLLight
クラスは、シーンに光源を記述するオブジェクトの抽象スーパークラスであるというヒントを与えました。 MDLAsset
クラスを使用してアセットファイルからライトをロードするとき、またはアセットをビルドするときにライトを作成するときは、MDLPhysicallyPlausibleLight
、MDLAreaLight
、MDLPhotometricLight
、またはMDLLightProbe
の1つ以上のコンクリートサブクラスを使用します。光の種類
case unknown = 0
0:
...とMDLLightType
はlightTypeプロパティで使用される光によって提供される照明の形状及びスタイルのオプションを有する列挙あります不明であるか、または初期化されていません。
case ambient = 1
1.光源は、位置または方向に関係なく、シーンを均一に照らす必要があります。
case directional = 2
2.光源は、位置に関係なく、均一な方向からシーンを照らします。
case spot = 3
3.光源は、特定の位置と方向からシーンを照らします。
case point = 4
4.光源は、特定の位置からあらゆる方向にシーンを照らします。
case linear = 5
5.光源は、線の形の領域からあらゆる方向にシーンを照らします。
case discArea = 6
6.光源は、ディスクの形の領域からあらゆる方向にシーンを照らします。
case rectangularArea = 7
7.光源は、四角形の領域からあらゆる方向にシーンを照らします。
8.光源は、長方形の領域からあらゆる方向にシーンを照らします。
case photometric = 9
9.光からの照度は、測光プロファイルによって決定されます。
case probe = 10
10.光の照明は、特定のポイントのシーンのサンプルを表すテクスチャ画像によって決まります。
case environment = 11
11.光の照明は、シーンの周囲環境のサンプルを表すテクスチャ画像によって決定されます。
これらはApple Metal API Referenceの抜粋です。
MDLPhysicallyPlausibleLight
MDLPhysicallyPlausibleLight
オブジェクトは、実世界の物理学に基づいてシェーディングモデルで使用するための光源を説明します。
MDLAreaLight
MDLAreaLight
オブジェクトは、単一の点又は方向からではなく3Dシーンを照明する光源を表すが、領域から特定の形状を有します。エリアライトの形状は、ライトのローカル座標空間のxy平面内の2次元図形であり、その照明はz軸の負の方向に向けられます(継承されたinnerConeAngleプロパティとouterConeAngleプロパティに従ってその方向から広がります) )。
MDLPhotometricLight
MDLPhotometricLight
オブジェクトは、その形状、方向、及び照明の強度測光プロファイルによって決定される光源を表します。光源の物理的測定値を含むIES形式のファイルから測光光を作成します。実際の照明器具の多くの製造業者は、その製品の照明特性を記述するファイルを公開している。この測光データは、光源を取り巻く光ウェブを測定します。光源周囲の全方向の光の強度を測定します。
MDLLightProbe
MDLLightProbe
オブジェクトは、すべての方向での照明の色及び強度のばらつきの点で光源を記載しています。ライトプローブは、この変化をキューブマップテクスチャとして表します。各テクセルは、キューブの中心からの特定の方向の光の色と強度、または球面調和係数のセットとして表されます。このような光源の説明に加えて、MDLLightProbe
は、シーンの内容に基づいて光プローブテクスチャを生成し、テクスチャから球面調和係数を生成する方法を提供する。
MetalKitはModel I/Oフレームワークと簡単にインターフェイスします。モデルI/Oには、これらのライトタイプの作成に使用できるMDLLightクラスがあります。 developer.apple.com/reference/modelio/mdllight – Marius
@ Marus Thanxたくさん。 – andy
ModelIOは軽いレンダリングにはあまり役に立ちません。メタルとのある程度の相互運用性はありますが、主にモデルデータから使用可能なバッファを作成するなどの点で役に立ちます。 –