预设天气

This commit is contained in:
2026-03-26 16:44:33 +08:00
parent 77664bce52
commit 6b44ebf599
3 changed files with 47 additions and 22 deletions

View File

@@ -877,13 +877,14 @@ export class OceanScene {
waterNormals: waterNormals,
sunDirection: new THREE.Vector3(),
sunColor: 0xffffff,
waterColor: 0x001e0f,
waterColor: this.params.waterColor,
distortionScale: 3.7,
fog: true
});
this.water.rotation.x = -Math.PI / 2;
this.water.position.y = -0.15;
this.setWaterColor(this.params.waterColor);
this.scene.add(this.water);
}
@@ -1101,6 +1102,13 @@ export class OceanScene {
}
}
setWaterColor(value) {
this.params.waterColor = value;
if (this.water?.material?.uniforms?.waterColor?.value) {
this.water.material.uniforms.waterColor.value.set(value);
}
}
setCloudCoverage(value) {
this.params.cloudCoverage = value;
this.updateClouds();
@@ -1303,6 +1311,7 @@ export class OceanScene {
this.setRayleigh(mergedParams.rayleigh);
this.setBloomStrength(mergedParams.bloomStrength);
this.setBloomRadius(mergedParams.bloomRadius);
this.setWaterColor(mergedParams.waterColor);
this.setCloudCoverage(mergedParams.cloudCoverage);
this.setCloudDensity(mergedParams.cloudDensity);
this.setCloudElevation(mergedParams.cloudElevation);

View File

@@ -51,6 +51,7 @@ function setupControls(oceanScene) {
'rayleigh',
'bloomStrength',
'bloomRadius',
'waterColor',
'cloudCoverage',
'cloudDensity',
'cloudElevation',
@@ -78,6 +79,7 @@ function setupControls(oceanScene) {
rayleigh: '瑞利散射强度',
bloomStrength: '泛光强度',
bloomRadius: '泛光扩散范围',
waterColor: '海水颜色',
cloudCoverage: '云层覆盖度',
cloudDensity: '云层密度',
cloudElevation: '云层高度',
@@ -162,6 +164,9 @@ function setupControls(oceanScene) {
bindController(bloomFolder.add(params, 'bloomStrength', 0, 1, 0.01).name('强度'), (value) => oceanScene.setBloomStrength(value));
bindController(bloomFolder.add(params, 'bloomRadius', 0, 3, 0.01).name('扩散'), (value) => oceanScene.setBloomRadius(value));
const waterFolder = gui.addFolder('海水');
bindController(waterFolder.addColor(params, 'waterColor').name('颜色'), (value) => oceanScene.setWaterColor(value));
const cloudFolder = gui.addFolder('云层');
bindController(cloudFolder.add(params, 'cloudCoverage', 0, 1, 0.01).name('覆盖度'), (value) => oceanScene.setCloudCoverage(value));
bindController(cloudFolder.add(params, 'cloudDensity', 0, 1, 0.01).name('密度'), (value) => oceanScene.setCloudDensity(value));

View File

@@ -7,7 +7,8 @@ export const DEFAULT_SCENE_PARAMS = {
bloomStrength: 0.1,
bloomRadius: 0,
bloomThreshold: 0,
cloudCoverage: 0.4,
waterColor: '#001e0f',
cloudCoverage: 0.1,
cloudDensity: 0.5,
cloudElevation: 0.5,
fogDensity: 0.42,
@@ -47,6 +48,7 @@ export const WEATHER_PRESETS = {
"rayleigh": 3.21,
"bloomStrength": 0.24,
"bloomRadius": 0.42,
"waterColor": "#0b3f36",
"cloudCoverage": 0.4,
"cloudDensity": 0.18,
"cloudElevation": 0.98,
@@ -75,6 +77,7 @@ export const WEATHER_PRESETS = {
exposure: 0.08,
bloomStrength: 0.16,
bloomRadius: 0.24,
waterColor: '#0a2a24',
cloudCoverage: 0.78,
cloudDensity: 0.82,
cloudElevation: 0.42,
@@ -94,28 +97,35 @@ export const WEATHER_PRESETS = {
}
},
storm: {
label: '暴雨雷暴',
label: '正午',
params: {
...DEFAULT_SCENE_PARAMS,
exposure: 0.065,
bloomStrength: 0.22,
bloomRadius: 0.35,
cloudCoverage: 0.92,
cloudDensity: 0.94,
cloudElevation: 0.36,
fogDensity: 0.7,
fogHeight: 0.42,
fogRange: 0.82,
rainEnabled: true,
rainScreenIntensity: 0.72,
rainVeilIntensity: 1.35,
rainDropSize: 1.14,
rainSpeed: 1.34,
rainAudioEnabled: true,
rainAudioVolume: 0.42,
lightningEnabled: true,
lightningIntensity: 1.0,
snowEnabled: false
"elevation": 90,
"azimuth": 180,
"exposure": 0.24,
"turbidity": 18.6,
"rayleigh": 4,
"bloomStrength": 0.18,
"bloomRadius": 0,
"waterColor": "#3378a3",
"cloudCoverage": 0.4,
"cloudDensity": 0.5,
"cloudElevation": 0.5,
"fogDensity": 0.41,
"fogHeight": 0.4,
"fogRange": 0.31,
"rainEnabled": false,
"rainScreenIntensity": 0.41,
"rainVeilIntensity": 1.15,
"rainDropSize": 1,
"rainSpeed": 1,
"rainAudioEnabled": true,
"rainAudioVolume": 0.35,
"snowEnabled": false,
"snowIntensity": 0.65,
"snowSpeed": 0.85,
"lightningEnabled": true,
"lightningIntensity": 0.75
}
},
snow: {
@@ -124,6 +134,7 @@ export const WEATHER_PRESETS = {
...DEFAULT_SCENE_PARAMS,
exposure: 0.11,
bloomStrength: 0.08,
waterColor: '#17343e',
cloudCoverage: 0.72,
cloudDensity: 0.7,
fogDensity: 0.52,