Atmosphere¶
大気層を表現するクラス
同時に使えるのは 1 つの Viewer だけ。破棄されていない別の Viewer に渡すと警告を出し、その Viewer では 使われない。Viewer を作り直して使い回すときは、前の Viewer の Viewer.destroy を先に呼ぶ (トーンマップ・月光・円光は引き継がれない。Atmosphere.destroy を参照)。複数の Viewer を並べるときは Viewer ごとに作る。
Constructors¶
new Atmosphere()¶
new Atmosphere():
Atmosphere
Returns¶
Accessors¶
aerial_perspective_blend¶
getaerial_perspective_blend():number
空気遠近の強さ(設定値)。品質設定による無効化は反映しない。
See¶
Returns¶
number
aerial_perspective_distance¶
getaerial_perspective_distance():number
空気遠近が最大に達する距離 [m](設定値)。
See¶
Atmosphere.setAerialPerspectiveDistance
Returns¶
number
ambient¶
getambient():number
アンビエント(環境光)の強度の係数。
See¶
Returns¶
number
atmosphere_height¶
getatmosphere_height():number
大気上端の高度 (m)。
See¶
Atmosphere.setAtmosphereHeight
Returns¶
number
aureole_intensity¶
getaureole_intensity():number
太陽の円光の強さ。SunVisualizer.glow_intensity と同値 (Viewer に接続する前は、 この大気が保留している値か既定値)。
Deprecated¶
SunVisualizer.glow_intensity / MoonVisualizer.glow_intensity を使う
Returns¶
number
building_reflectance_limit¶
getbuilding_reflectance_limit():number
大気が照らす建物の反射率の上限 (単位なしの線形反射率、[0.0, 1.0])。
See¶
Atmosphere.setBuildingReflectanceLimit
Returns¶
number
default_lighting_mode¶
getdefault_lighting_mode():AtmosphereLightingMode
大気ライティングモードの全体デフォルト。
See¶
Atmosphere.setDefaultLightingMode
Returns¶
environment_enabled¶
getenvironment_enabled():boolean
大気散乱に基づく環境描画が有効かどうか。
See¶
Atmosphere.setEnvironmentEnabled
Returns¶
boolean
exposure_scale¶
getexposure_scale():number
露光(トーンマッピング前の明るさ)に対する乗算スケール。
See¶
Returns¶
number
ground_exposure¶
getground_exposure():number
地表大気露光係数。
See¶
Returns¶
number
ground_lighting_exposure¶
getground_lighting_exposure():number
地表物理ライティングの露出補正係数。
See¶
Atmosphere.setGroundLightingExposure
Returns¶
number
ground_mie¶
getground_mie():number
地表ミー係数。
See¶
Returns¶
number
ground_physical_lighting¶
getground_physical_lighting():boolean
地表の物理ベースライティングが設定上有効か。品質設定による無効化は反映しない。
See¶
Returns¶
boolean
ground_rayleigh¶
getground_rayleigh():number
地表レイリー係数。
See¶
Returns¶
number
ground_sun_rate¶
getground_sun_rate():number
地表大気の太陽光強度。
Deprecated¶
Atmosphere.setGroundSunRate を参照。
Returns¶
number
mie_distribution¶
getmie_distribution():number
Mie 散乱の分布高度 (m)。
See¶
Returns¶
number
mie_g¶
getmie_g():number
Mie 散乱の位相関数の非対称パラメータ g。
See¶
Returns¶
number
moon_illuminance¶
getmoon_illuminance():number
月光の照度。Moon.illuminance と同値 (Viewer に接続する前は、この大気が 保留している値か既定値)。
See¶
Returns¶
number
multi_scattering¶
getmulti_scattering():number
多重散乱の寄与の強さ。
See¶
Returns¶
number
parameters¶
getparameters():Readonly<Parameters>
大気パラメータの現在値をまとめて取得する。
読み出し専用。値を変えるときは対応する setter を使うこと (直接書き込むと範囲の検証を通らない)。
Returns¶
Readonly<Parameters>
大気パラメータ
quality¶
getquality():Quality
大気表現の品質。
See¶
Returns¶
rayleigh_distribution¶
getrayleigh_distribution():number
Rayleigh 散乱の分布高度 (m)。
See¶
Atmosphere.setRayleighDistribution
Returns¶
number
starMask¶
getstarMask():boolean
昼間の恒星表示マスクを取得
Returns¶
boolean
sun_scale¶
getsun_scale():number
太陽光の強度に対する乗算スケール。
Deprecated¶
Returns¶
number
visibility¶
getvisibility():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¶
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