コンテンツにスキップ

Atmosphere

大気層を表現するクラス

同時に使えるのは 1 つの Viewer だけ。破棄されていない別の Viewer に渡すと警告を出し、その Viewer では 使われない。Viewer を作り直して使い回すときは、前の Viewer の Viewer.destroy を先に呼ぶ (トーンマップ・月光・円光は引き継がれない。Atmosphere.destroy を参照)。複数の Viewer を並べるときは Viewer ごとに作る。

Constructors

new Atmosphere()

new Atmosphere(): Atmosphere

Returns

Atmosphere

Accessors

aerial_perspective_blend

get aerial_perspective_blend(): number

空気遠近の強さ(設定値)。品質設定による無効化は反映しない。

See

Returns

number


aerial_perspective_distance

get aerial_perspective_distance(): number

空気遠近が最大に達する距離 [m](設定値)。

See

Atmosphere.setAerialPerspectiveDistance

Returns

number


ambient

get ambient(): number

アンビエント(環境光)の強度の係数。

See

Atmosphere.setAmbient

Returns

number


atmosphere_height

get atmosphere_height(): number

大気上端の高度 (m)。

See

Atmosphere.setAtmosphereHeight

Returns

number


aureole_intensity

get aureole_intensity(): number

太陽の円光の強さ。SunVisualizer.glow_intensity と同値 (Viewer に接続する前は、 この大気が保留している値か既定値)。

Deprecated

SunVisualizer.glow_intensity / MoonVisualizer.glow_intensity を使う

Returns

number


building_reflectance_limit

get building_reflectance_limit(): number

大気が照らす建物の反射率の上限 (単位なしの線形反射率、[0.0, 1.0])。

See

Atmosphere.setBuildingReflectanceLimit

Returns

number


default_lighting_mode

get default_lighting_mode(): AtmosphereLightingMode

大気ライティングモードの全体デフォルト。

See

Atmosphere.setDefaultLightingMode

Returns

AtmosphereLightingMode


environment_enabled

get environment_enabled(): boolean

大気散乱に基づく環境描画が有効かどうか。

See

Atmosphere.setEnvironmentEnabled

Returns

boolean


exposure_scale

get exposure_scale(): number

露光(トーンマッピング前の明るさ)に対する乗算スケール。

See

Atmosphere.setExposureScale

Returns

number


ground_exposure

get ground_exposure(): number

地表大気露光係数。

See

Atmosphere.setGroundExposure

Returns

number


ground_lighting_exposure

get ground_lighting_exposure(): number

地表物理ライティングの露出補正係数。

See

Atmosphere.setGroundLightingExposure

Returns

number


ground_mie

get ground_mie(): number

地表ミー係数。

See

Atmosphere.setGroundMie

Returns

number


ground_physical_lighting

get ground_physical_lighting(): boolean

地表の物理ベースライティングが設定上有効か。品質設定による無効化は反映しない。

See

Returns

boolean


ground_rayleigh

get ground_rayleigh(): number

地表レイリー係数。

See

Atmosphere.setGroundRayleigh

Returns

number


ground_sun_rate

get ground_sun_rate(): number

地表大気の太陽光強度。

Deprecated

Atmosphere.setGroundSunRate を参照。

Returns

number


mie_distribution

get mie_distribution(): number

Mie 散乱の分布高度 (m)。

See

Atmosphere.setMieDistribution

Returns

number


mie_g

get mie_g(): number

Mie 散乱の位相関数の非対称パラメータ g。

See

Atmosphere.setMieG

Returns

number


moon_illuminance

get moon_illuminance(): number

月光の照度。Moon.illuminance と同値 (Viewer に接続する前は、この大気が 保留している値か既定値)。

See

Atmosphere.setMoonIlluminance

Returns

number


multi_scattering

get multi_scattering(): number

多重散乱の寄与の強さ。

See

Atmosphere.setMultiScattering

Returns

number


parameters

get parameters(): Readonly<Parameters>

大気パラメータの現在値をまとめて取得する。

読み出し専用。値を変えるときは対応する setter を使うこと (直接書き込むと範囲の検証を通らない)。

Returns

Readonly<Parameters>

大気パラメータ


quality

get quality(): Quality

大気表現の品質。

See

Atmosphere.setQuality

Returns

Quality


rayleigh_distribution

get rayleigh_distribution(): number

Rayleigh 散乱の分布高度 (m)。

See

Atmosphere.setRayleighDistribution

Returns

number


starMask

get starMask(): boolean

昼間の恒星表示マスクを取得

Returns

boolean


sun_scale

get sun_scale(): number

太陽光の強度に対する乗算スケール。

Deprecated

Atmosphere.setSunScale を参照。

Returns

number


visibility

get visibility(): Readonly<object>

可視性フラグを取得

Returns

Readonly<object>

ground

ground: boolean

sky

sky: boolean

Methods

applyPreset()

applyPreset(preset)

applyPreset(preset): void

見た目プリセットを適用する。

色味・露出・空気遠近など見た目全体の組み合わせを、対応する既存の public setter 経由でまとめて適用する(各 setter の clamp や非有限値の無視も通常どおり発生する)。

描画品質 (Atmosphere.setQuality) は見た目とは別の軸なので、見た目プリセットは これを変更しない。

大気のパラメータでない値は持ち主へ書き込む: トーンマップは Viewer.render_effects、月光は Viewer.moon、円光は太陽と月 (SunVisualizer.glow_intensity / MoonVisualizer.glow_intensity)。 この大気がまだ Viewer に接続されていない場合(new Atmosphere() の直後など)は 保留し、接続時に書いた順で書き込む。どの値も、後から別の窓口で書けばそちらが残る。

Parameters
Parameter Type Description
preset Preset 見た目プリセット
Returns

void

Throws

Error 未知のプリセットを指定した場合

applyPreset(values)

applyPreset(values): void

任意の設定値をまとめて適用する。

指定されたフィールドだけが、対応する setter と同じ検証を通して適用される。 省略されたフィールドは現在値のまま変わらない。

Parameters
Parameter Type Description
values PresetValues 適用する設定値
Returns

void


destroy()

destroy(): void

破棄

LUT (fp16 FBO/テクスチャ)・空メッシュ・マテリアルキャッシュを解放し、Viewer との 接続を切る。トーンマップ・月光・円光は Viewer 側が持つので、再利用先の Viewer には 引き継がれない (その Viewer の既定値から始まる)。未初期化(init() 未実行)の状態では 接続を切るだけで、多重呼び出しは no-op。 destroy() の後は別の Viewer に渡して再利用できる (Viewer を作り直す SPA 等での再利用を想定)。

Returns

void


draw()

draw(render_stage, gocs_to_clip, view_to_gocs): void

大気層を描画する。

Parameters

Parameter Type Description
render_stage RenderStage レンダリングステージ
gocs_to_clip Matrix gocs_to_clip
view_to_gocs Matrix view_to_gocs

Returns

void


drawMask()

drawMask(render_stage, gocs_to_clip, view_to_gocs): void

大気層Maskを描画する。

Parameters

Parameter Type Description
render_stage RenderStage レンダリングステージ
gocs_to_clip Matrix gocs_to_clip
view_to_gocs Matrix view_to_gocs

Returns

void


init()

init(viewer): void

初期化 Viewerのコンストラクタで呼び出されます。

二重呼び出しは no-op(LUT の FBO/テクスチャや空メッシュを作り直すことによる GPU リソースリークを防ぐため)。初期化済みの状態から作り直したい場合は、 先に destroy() を呼んでからこのメソッドを呼ぶこと (destroy() 後の再 init は再利用パターンとしてサポートされる)。

Parameters

Parameter Type Description
viewer Viewer 所属するViewer

Returns

void


isAerialPerspectiveEnabled()

isAerialPerspectiveEnabled(): boolean

現在の設定で空気遠近の合成が行われるかどうかを取得する。 環境シェーダーが無効、品質が minimal/low、または強さが 0 のときは false を返す。

Returns

boolean

空気遠近が有効なら true


isGroundPhysicalLightingEnabled()

isGroundPhysicalLightingEnabled(): boolean

現在の設定で地表の物理ベースライティングが行われるかどうかを取得する。 環境シェーダーが無効、地表の可視性が OFF、品質が minimal/low、 HDR パイプラインを使わない設定 (RenderEffects.hdr_mode が off)、 または明示的に無効化されているときは false を返す。

Returns

boolean

地表物理ライティングが有効なら true


selectGroundShader()

selectGroundShader(_view_to_gocs): SurfaceMaterial

カメラ高度から、Ground用シェーダを選択する。

Parameters

Parameter Type Description
_view_to_gocs Matrix ビュー→GOCS 変換行列(現在の実装では未使用)

Returns

SurfaceMaterial


setAerialPerspectiveBlend()

setAerialPerspectiveBlend(value): void

空気遠近(遠方の地形・建物が大気の散乱で霞んで青みがかる効果)の強さを設定する。 0 で無効、大きくするほど遠景が大気の色に強くなじむ。

Parameters

Parameter Type Description
value number 空気遠近の強さ。0.0(無効)〜 1.0

Returns

void

Default Value

1.0


setAerialPerspectiveDistance()

setAerialPerspectiveDistance(value): void

空気遠近が最大に達する距離を設定する。この距離で最も霞んだ状態になる。 シーンの広がりに合わせて調整する(広いシーンほど大きめ)。 宇宙視点では大気路長をカバーする下限まで自動拡大される (バンディング防止)。

Parameters

Parameter Type Description
value number 最大距離 [m]。5000 以上

Returns

void

Default Value

278600.0


setAmbient()

setAmbient(ambient): void

アンビエント(環境光)の強度を設定する。 太陽が地平線下にある薄明時など、直達日光が届かない領域での地表・建物・点群・水面の明るさを決める。 大きくすると日陰や薄明の暗部が持ち上がる。

Parameters

Parameter Type Description
ambient number アンビエント強度の係数。0.0 以上 (負の値は 0.0)

Returns

void

Default Value

1.0


setAtmosphereHeight()

setAtmosphereHeight(value): void

大気上端の高度を設定する。大気層全体の厚みを決める。

視覚的な厚みは Rayleigh 分布高度 の約 5 倍で頭打ちになる (既定の 8000 m 分布なら約 40000 m)。それを超える値も指定できるが、密度が急速に 0 に近づくため見た目はほぼ変わらない。

Parameters

Parameter Type Description
value number 大気上端の高度 (m)。1000〜300000

Returns

void

Default Value

60000.0


~~setAureoleIntensity()~~

setAureoleIntensity(value): void

太陽と月の円光の強さをまとめて設定する。

Parameters

Parameter Type Description
value number 円光の強さ。0.0 以上 (負の値は 0.0)

Returns

void

Default Value

0.3

Deprecated

円光は見えている太陽・月の属性になった。SunVisualizer.setGlowIntensity と MoonVisualizer.setGlowIntensity を使う。これは両方へ同じ値を書く


setBuildingReflectanceLimit()

setBuildingReflectanceLimit(value): void

大気が照らす建物 (B3D) の反射率の上限を設定する。

物理量ではなく、データの欠陥を補う例外の係数である。テクスチャを持たない B3D の面は タイルテクスチャの純白 (sRGB 255) を引くので、線形の反射率が 1.0 (入射光をすべて返す) になる。屋根の写真はおおむね 0.05〜0.2 なので、太陽に照らされた白い面だけがシーン輝度で 1 桁明るくなり、bloom を強めると光源のように光る。反射率 1.0 は配信データ (国土交通省のサーバーとタイル化) が持つ値で、ライブラリからは直せないため、 描画時にこの値で頭打ちにする。

既定の 0.8 は、同じ建物を 3D Tiles で配信している PLATEAU のデータが、テクスチャの無い 建物に頂点色 0.8 (線形) を与えていることに合わせた値。

大気ライティングで照らす建物 (PHYSICAL / SIMPLE) だけに掛かる。大気が無い・環境シェーダー OFF・minimal・HDR パイプラインが張られないフレームなど固定ライティングの建物には 掛からない (固定ライティングの色は変えない)。プリセット (Atmosphere.applyPreset) は変更しない。

Parameters

Parameter Type Description
value number 反射率の上限 (単位なしの線形反射率)。[0.0, 1.0] にクランプする。1.0 で無効

Returns

void

Default Value

0.8


setDefaultLightingMode()

setDefaultLightingMode(mode): void

大気ライティングモードの全体デフォルトを設定する。 INHERIT(scene / material の既定値)のままの scene / material はこの値に追随するため、ここを変更するだけで対象すべての ライティングモードを一括で切り替えられる。

Parameters

Parameter Type Description
mode AtmosphereLightingMode 全体デフォルトのライティングモード

Returns

void

Throws

Error INHERIT を指定した場合 (全体デフォルト自身に継承元は無い)

Default Value

{@link AtmosphereLightingMode.AUTO}

setEnvironmentEnabled()

setEnvironmentEnabled(flag): void

大気散乱に基づく環境描画(空・地表・水面・建物への散乱光と空気遠近)の有効/無効を設定する。

無効にすると、カメラ高度に依らず散乱を含まない描画になり、大気の内部計算も停止するため 描画負荷が下がる。大気表現が不要なシーンや、軽量化したい場合に無効化する。

Atmosphere.setSkyVisibility / Atmosphere.setGroundVisibility もこの値を書く。 後から呼んだほうが残る。

Parameters

Parameter Type Description
flag boolean 有効にするなら true

Returns

void

Default Value

true


~~setExposure()~~

setExposure(value): void

Parameters

Parameter Type
value number

Returns

void

Deprecated

空の露光係数を設定する。現在の描画では参照されない(効果なし)。 値は保持され Atmosphere.parameters から読み出せる。 代わりに Atmosphere.setGroundExposure もしくは Atmosphere.setExposureScale を使う。


setExposureScale()

setExposureScale(value): void

露光(トーンマッピング前の明るさ)に対する乗算スケールを設定する。 シーン全体の明暗を一括で微調整したいときに使う。

Parameters

Parameter Type Description
value number 露光の乗算係数(0.01 以上)

Returns

void

Default Value

1.40


setGroundExposure()

setGroundExposure(value): void

地表大気の露光係数を設定する。 絶対値が大きいほど、トーンマップ前の明るさが上がる(符号は無視される)。

Parameters

Parameter Type Description
value number 露光係数

Returns

void

Default Value

-2.0


setGroundLightingExposure()

setGroundLightingExposure(value): void

地表物理ライティングの露出補正係数を設定する。

地表テクスチャ(衛星写真等)は撮影時の照明が焼き込まれているため、 太陽照度をフルに掛けると白飛びする。この係数で物理ライティングの明るさを補正する。 地表・建物 (B3D)・点群・ラスタタイルに効き、空・太陽・空気遠近・水面には効かない。

Parameters

Parameter Type Description
value number 補正係数。0.0 以上

Returns

void

Default Value

0.45


setGroundMie()

setGroundMie(value): void

地表ミー係数を設定

Parameters

Parameter Type Description
value number 地表ミー係数。0.0 以上 (負の値は 0.0)

Returns

void


setGroundPhysicalLighting()

setGroundPhysicalLighting(enabled): void

地表(地形)の物理ベースライティングの有効/無効を設定する。

  • 有効(既定): 太陽光の直達成分とアンビエント光、地形の法線を考慮して陰影を付ける。 山岳の立体感が増す。
  • 無効: 陰影を付けず空気遠近の合成のみ行う。地形タイル境界での濃淡差を抑えたい場合に使う。

Parameters

Parameter Type Description
enabled boolean 有効にするなら true

Returns

void

Default Value

true


setGroundRayleigh()

setGroundRayleigh(value): void

地表レイリー係数を設定

Parameters

Parameter Type Description
value number 地表レイリー係数。0.0 以上 (負の値は 0.0)

Returns

void


~~setGroundScaleDepth()~~

setGroundScaleDepth(value): void

Parameters

Parameter Type
value number

Returns

void

Deprecated

地表の大気スケール係数を設定する。現在の描画では参照されない(効果なし)。 代わりに Atmosphere.setRayleighDistribution / Atmosphere.setMieDistribution を使う。 値は保持され Atmosphere.parameters から読み出せる。


~~setGroundSunRate()~~

setGroundSunRate(value): void

Parameters

Parameter Type Description
value number 太陽光の強度。0.0 以上 (負の値は 0.0)

Returns

void

Deprecated

太陽の明るさは Sun.setIlluminance が持つ。この値は そこへ掛かる乗数として残っており、既定 16.0 のとき 1.0 になる。 16 で割った値が倍率。

Default Value

16.0


setGroundVisibility()

setGroundVisibility(flag): void

地表大気表現可視性フラグを設定

空と地表の両方を非表示にすると Atmosphere.setEnvironmentEnabled を false に、 どちらかを表示にすると true にする。両方の非表示は大気なしと同じ描画になる。

Parameters

Parameter Type Description
flag boolean 可視性フラグ

Returns

void


~~setMie()~~

setMie(value): void

Parameters

Parameter Type
value number

Returns

void

Deprecated

空のミー係数を設定する。現在の描画では参照されない(効果なし)。 値は保持され Atmosphere.parameters から読み出せる。 代わりに Atmosphere.setGroundMie を使う。


setMieDistribution()

setMieDistribution(value): void

Mie 散乱(霞・もや)の密度が約 40% まで減衰する高度を設定する。 大きくすると霞が高い高度まで広がり、地平線付近が白っぽくなる。

Parameters

Parameter Type Description
value number 分布高度 (m)。100〜32000

Returns

void

Default Value

1200.0


setMieG()

setMieG(value): void

Mie 散乱(エアロゾル)の位相関数の非対称パラメータ g を設定する。 0 に近いほど散乱が等方的になり、1 に近いほど太陽方向への前方散乱が強まって太陽周辺のグレアが大きくなる。

Parameters

Parameter Type Description
value number 非対称パラメータ g。0.0(等方)〜 0.999(強い前方散乱)

Returns

void

Default Value

0.80


~~setMoonIlluminance()~~

setMoonIlluminance(value): void

月光の強さを設定する。

月光の照度 (太陽照度を 1 とした比)。実体は Moon.illuminance で、 ここはそこへの委譲。空の月光散乱・地表・B3D・点群・水面・月ディスクが同じ値を 読むので、変えると月に関わる全部が一緒に増減する。0 で無効。

既定の 0.05 は物理的な満月 (約 2.5e-6) に夜の暗順応の利得 20,000 を掛けた値 (Moon.DEFAULT_ILLUMINANCE)。描画には太陽仰角に応じた係数が掛かり、 昼は物理値まで下がる。

Viewer に接続する前に呼んだ場合は、接続時に書いた順で Moon へ届く。

Parameters

Parameter Type Description
value number 月光の照度。0.0 以上

Returns

void

Default Value

{@link Moon.DEFAULT_ILLUMINANCE}

Deprecated

Moon.setIlluminance を使う


setMultiScattering()

setMultiScattering(value): void

多重散乱の寄与の強さを設定する。 大きくすると薄明時の空や日陰の明るさ(地表のアンビエント光)が増し、青みがより遠くまで回り込む。

Parameters

Parameter Type Description
value number 多重散乱係数。0.0(単一散乱のみ)〜 1.0(物理的に完全な多重散乱)

Returns

void

Default Value

1.0


setQuality()

setQuality(value): void

大気表現の品質を設定する。品質と描画負荷のトレードオフを切り替える。

  • minimal: 低スペック GPU 向け。空と太陽の大気減光のみ描画し、 HDR ポストプロセスを使わず canvas に直接描画する。空気遠近・物理ライティング・ bloom は無効。地表・建物・点群は時刻非依存の固定ライティングになる。
  • low: 大気の内部計算の更新頻度と空気遠近の精度を抑え、軽量。
  • medium: 標準的な品質と負荷のバランス。
  • high: カメラや太陽のわずかな変化にも追従し、最も高品質だが負荷が高い。

Parameters

Parameter Type Description
value Quality 品質

Returns

void

Default Value

"medium"


~~setRayleigh()~~

setRayleigh(value): void

Parameters

Parameter Type
value number

Returns

void

Deprecated

空のレイリー係数を設定する。現在の描画では参照されない(効果なし)。 値は保持され Atmosphere.parameters から読み出せる。 代わりに Atmosphere.setGroundRayleigh を使う。


setRayleighDistribution()

setRayleighDistribution(value): void

Rayleigh 散乱(空の青の主因)の密度が約 40% まで減衰する高度を設定する。 小さくすると空の青みが地表近くに集中し、大きくすると上空まで青みが広がる。

Parameters

Parameter Type Description
value number 分布高度 (m)。100〜80000

Returns

void

Default Value

8000.0


~~setScaleDepth()~~

setScaleDepth(value): void

Parameters

Parameter Type
value number

Returns

void

Deprecated

空の大気スケール係数を設定する。現在の描画では参照されない(効果なし)。 値は保持され Atmosphere.parameters から読み出せる。 代わりに Atmosphere.setRayleighDistribution / Atmosphere.setMieDistribution を使う。


setSkyVisibility()

setSkyVisibility(flag): void

大気層可視性フラグを設定

空と地表の両方を非表示にすると Atmosphere.setEnvironmentEnabled を false に、 どちらかを表示にすると true にする。両方の非表示は大気なしと同じ描画になる。

Parameters

Parameter Type Description
flag boolean 可視性フラグ

Returns

void


setStarMask()

setStarMask(flag): void

昼間の恒星表示マスクを設定

Parameters

Parameter Type Description
flag boolean フラグ

Returns

void


~~setSunRate()~~

setSunRate(value): void

Parameters

Parameter Type
value number

Returns

void

Deprecated

空の太陽係数を設定する。現在の描画では参照されない(効果なし)。 値は保持され Atmosphere.parameters から読み出せる。 代わりに Atmosphere.setGroundSunRate もしくは Atmosphere.setSunScale を使う。


~~setSunScale()~~

setSunScale(value): void

Parameters

Parameter Type Description
value number 太陽強度の乗算係数(0.01 以上)

Returns

void

Deprecated

太陽の明るさは Sun.setIlluminance が持つ。この値は そこへ掛かる乗数として残っており、既定 1.0 では何も変わらない。

Default Value

1.0