SkyLightProbeDesc
SkyLightProbeDescクラスは、大気散乱シミュレーションと連携した動的なスカイライトプローブDescriptorを表します。太陽の位置に応じて自動的に更新される環境照明を提供し、リアルな空の照明を再現します。
太陽の方向は view.atmosphere.date に基づいて自動計算され、毎フレーム照明が更新されます。
Common Properties
Section titled “Common Properties”visible
Section titled “visible”Type: boolean | undefined
Description: オブジェクトの表示/非表示を制御します。
Default: true
Example:
{ visible: false, skyLightProbe: { ... }}SkyLightProbe Properties
Section titled “SkyLightProbe Properties”skyLightProbe
Section titled “skyLightProbe”Type: object | undefined
Description: スカイライトプローブの設定オプション。
intensity
Section titled “intensity”Type: number | undefined
Description: スカイライトプローブの強度を指定します。数値が大きいほど明るくなります。
Default: 1
Example:
{ skyLightProbe: { intensity: 1.0, }}SkyLightProbeDescは以下の要素に基づいて自動的に更新されます:
- 太陽の方向:
view.atmosphere.sunDirectionから取得 - カメラの位置: 大気圏内外での照明の違いを考慮
- 大気テクスチャ: 放射照度(irradiance)テクスチャを使用
これらの更新は毎フレーム自動的に実行されるため、手動での更新は不要です。
基本的な使用例
Section titled “基本的な使用例”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 }});昼夜で強度を変更
Section titled “昼夜で強度を変更”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 } });});夜間のみ有効化
Section titled “夜間のみ有効化”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 }, });});大気システムとの連携
Section titled “大気システムとの連携”SkyLightProbeDescは、@takram/three-atmosphereパッケージの大気散乱シミュレーションと密接に連携します:
- 放射照度テクスチャの取得: 大気オブジェクトから事前計算された放射照度テクスチャを取得
- 太陽方向の同期: 太陽の方向を毎フレーム同期
- 位置の更新: カメラ位置に基づいて適切な照明を計算
これにより、時間帯や太陽の位置に応じた自然な環境照明が実現されます。
LightProbeDescとの違い
Section titled “LightProbeDescとの違い”| 特徴 | SkyLightProbeDesc | LightProbeDesc |
|---|---|---|
| 更新方法 | 自動(太陽位置に追従) | 手動(固定値) |
| データソース | 大気シミュレーション | 事前計算された係数 |
| 用途 | 動的な空の照明 | 静的な環境照明 |
| 大気連携 | 必須 | 不要 |
- SkyLightProbeDescを使用するには、大気オブジェクト(Atmosphere)が必要です。
plugin.addDefaultPhotorealScene()を使用すると、SkyLightProbeDescが自動的に含まれます。- 夜間は強度を高めに設定することで、より自然な夜景照明を実現できます。
- 他のライト(AmbientLight、SunLightなど)と組み合わせて使用できます。