コンテンツにスキップ

SkyLightProbeDesc

SkyLightProbeDescクラスは、大気散乱シミュレーションと連携した動的なスカイライトプローブDescriptorを表します。太陽の位置に応じて自動的に更新される環境照明を提供し、リアルな空の照明を再現します。

太陽の方向は view.atmosphere.date に基づいて自動計算され、毎フレーム照明が更新されます。

Type: boolean | undefined

Description: オブジェクトの表示/非表示を制御します。

Default: true

Example:

{
visible: false,
skyLightProbe: { ... }
}

Type: object | undefined

Description: スカイライトプローブの設定オプション。

Type: number | undefined

Description: スカイライトプローブの強度を指定します。数値が大きいほど明るくなります。

Default: 1

Example:

{
skyLightProbe: {
intensity: 1.0,
}
}

SkyLightProbeDescは以下の要素に基づいて自動的に更新されます:

  • 太陽の方向: view.atmosphere.sunDirectionから取得
  • カメラの位置: 大気圏内外での照明の違いを考慮
  • 大気テクスチャ: 放射照度(irradiance)テクスチャを使用

これらの更新は毎フレーム自動的に実行されるため、手動での更新は不要です。

import ThreeView from "@navaramap/three";
import { SkyLightProbeDesc } from "@navaramap/three-default-descs";
import { DefaultPlugin } from "@navaramap/three-default-plugin";
const view = new ThreeView();
const plugin = new DefaultPlugin();
view.addPlugin(plugin);
await view.init();
// デフォルトのフォトリアルオブジェクトを追加
const defaultLayers = plugin.addDefaultPhotorealScene();
// スカイライトプローブが自動的に太陽の位置に追従
defaultLayers.skyLightProbe.update({
skyLightProbe: {
intensity: 1.0
}
});
const skyLightProbe = view.addLight<SkyLightProbeDesc>({
skyLightProbe: {
intensity: 1.0
}
});
// 昼夜で異なる強度を設定
const params = {
dayIntensity: 1.0,
nightIntensity: 5.0
};
view.atmosphere.on("sunChanged", () => {
const isAtNight = view.atmosphere.isAtNight(view.camera.positionECEF);
const intensity = isAtNight ? params.nightIntensity : params.dayIntensity;
skyLightProbe.update({
skyLightProbe: { intensity }
});
});
const skyLightProbe = view.addLight<SkyLightProbeDesc>({
skyLightProbe: {
intensity: 1.0
},
});
// 夜間のみ強度を上げる
view.atmosphere.on("sunChanged", () => {
const isAtNight = view.atmosphere.isAtNight(view.camera.positionECEF);
if(!isAtNight) return;
skyLightProbe.update({
skyLightProbe: {
intensity: 5.0
},
});
});

SkyLightProbeDescは、@takram/three-atmosphereパッケージの大気散乱シミュレーションと密接に連携します:

  1. 放射照度テクスチャの取得: 大気オブジェクトから事前計算された放射照度テクスチャを取得
  2. 太陽方向の同期: 太陽の方向を毎フレーム同期
  3. 位置の更新: カメラ位置に基づいて適切な照明を計算

これにより、時間帯や太陽の位置に応じた自然な環境照明が実現されます。

特徴SkyLightProbeDescLightProbeDesc
更新方法自動(太陽位置に追従)手動(固定値)
データソース大気シミュレーション事前計算された係数
用途動的な空の照明静的な環境照明
大気連携必須不要
  • SkyLightProbeDescを使用するには、大気オブジェクト(Atmosphere)が必要です。
  • plugin.addDefaultPhotorealScene()を使用すると、SkyLightProbeDescが自動的に含まれます。
  • 夜間は強度を高めに設定することで、より自然な夜景照明を実現できます。
  • 他のライト(AmbientLight、SunLightなど)と組み合わせて使用できます。