コンテンツにスキップ

SunVisualizer

太陽を表現するクラス

同時に使えるのは 1 つの Viewer だけ。破棄されていない別の Viewer に渡すと警告を出し、その Viewer では 使われない。Viewer を作り直して使い回すときは、前の Viewer の Viewer.destroy を先に呼ぶ (設定した値は次の Viewer へ引き継がれる)。複数の Viewer を並べるときは Viewer ごとに作る。

Constructors

new SunVisualizer()

new SunVisualizer(divide): SunVisualizer

constructor

Parameters

Parameter Type Default value Description
divide number 32 円分割数 (3以上)

Returns

SunVisualizer

Accessors

glow_intensity

get glow_intensity(): number

太陽の周囲の円光の強さ (無次元の倍率。0.0 以上)。

置かれた値を返す。太陽を隠している間も値は変わらない。

See

SunVisualizer.setGlowIntensity

Returns

number


visibility

get visibility(): Boolean

可視性フラグを取得

Returns

Boolean

Methods

destroy()

destroy(): void

破棄

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


init()

init(viewer): void

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

Parameters

Parameter Type Description
viewer Viewer 所属するViewer

Returns

void


setGlowIntensity()

setGlowIntensity(value): void

太陽の周囲の円光 (明るい暈) の強さを設定する。

円光の強さは大気のもや量 (Atmosphere.setGroundMie) が主に駆動するが、 それだけでは実写ほど目立たないため、これは実写 (低い太陽の周りに見える暖色の暈) の 見え方に合わせて円光だけを底上げする演出上の増幅である。0 で円光を無効化できる。

効き方は太陽の高度に強く依存する: 地平線に近いほど効果が薄く、高く昇るほど 効果が大きくなる (目安として地平線付近と高い太陽とで 8 倍程度の差がある)。

SunVisualizer.setVisibility で太陽を隠している間は円光も描かれない (値は保たれ、表示を戻すとそのまま反映される)。プリセット (Atmosphere.applyPreset) の aureole_intensity もここへ書き込まれ、 後から書いたほうが残る。

Parameters

Parameter Type Description
value number 円光の強さ (無次元の倍率)。0.0 以上 (負の値は 0.0)。2〜3 が快晴を保てる上限の目安

Returns

void

Default Value

0.3 (filmic-physical プリセットの値)


~~setIntensity()~~

setIntensity(value): void

Parameters

Parameter Type Description
value number 太陽照度(基準の太陽が 1.0)

Returns

void

Deprecated

Sun.setIlluminance へ委譲する。ディスクだけでなく 空・空気遠近・地表・水面の明るさも一様に変わる。


~~setMie()~~

setMie(value): void

Parameters

Parameter Type
value number

Returns

void

Deprecated

ミー係数を設定する。大気なしで HDR パイプラインを使わないときの 太陽の赤化にだけ使われ、大気がある描画では参照されない。太陽の明るさには 代わりに SunVisualizer.setIntensity を使う。


~~setRadius()~~

setRadius(value): void

Parameters

Parameter Type Description
value number 既定の視直径に対する倍率

Returns

void

Deprecated

既定の視直径に対する倍率として Sun.setAngularDiameterDegree へ委譲する。 視直径は立体角を決めるので、大きくするとディスクは大きく暗くなる(総フラックスは Sun.setIlluminance が担うため地表の明るさは変わらない)。


~~setRayleigh()~~

setRayleigh(value): void

Parameters

Parameter Type
value number

Returns

void

Deprecated

レイリー係数を設定する。大気なしで HDR パイプラインを使わないときの 太陽の赤化にだけ使われ、大気がある描画では参照されない。太陽の明るさには 代わりに SunVisualizer.setIntensity を使う。


~~setScaleDepth()~~

setScaleDepth(value): void

Parameters

Parameter Type
value number

Returns

void

Deprecated

大気スケール係数を設定する。大気なしで HDR パイプラインを使わないときの 太陽の赤化にだけ使われ、大気がある描画では参照されない。


~~setSunRate()~~

setSunRate(value): void

Parameters

Parameter Type
value number

Returns

void

Deprecated

太陽係数を設定する。現在の描画では参照されない(効果なし)。 値は保持されるが描画には影響しない。太陽の明るさには代わりに SunVisualizer.setIntensity を使う。


setVisibility()

setVisibility(flag): void

可視性フラグを設定

Parameters

Parameter Type
flag boolean

Returns

void