预设
This commit is contained in:
@@ -9,6 +9,7 @@ import { ShaderPass } from 'three/addons/postprocessing/ShaderPass.js';
|
||||
import Stats from 'three/addons/libs/stats.module.js';
|
||||
import { TerrainGenerator } from './TerrainGenerator.js';
|
||||
import { VegetationSystem } from './VegetationSystem.js';
|
||||
import { DEFAULT_SCENE_PARAMS } from './weatherPresets.js';
|
||||
|
||||
const RAIN_AUDIO_URL = '/audio/rain-calming.mp3';
|
||||
const THUNDER_AUDIO_URL = '/audio/thunder-distant.mp3';
|
||||
@@ -53,36 +54,7 @@ export class OceanScene {
|
||||
this.thunderAudioIndex = 0;
|
||||
this.scheduledThunder = [];
|
||||
|
||||
this.params = {
|
||||
elevation: 2,
|
||||
azimuth: 180,
|
||||
exposure: 0.1,
|
||||
turbidity: 10,
|
||||
rayleigh: 2,
|
||||
bloomStrength: 0.1,
|
||||
bloomRadius: 0,
|
||||
bloomThreshold: 0,
|
||||
cloudCoverage: 0.4,
|
||||
cloudDensity: 0.5,
|
||||
cloudElevation: 0.5,
|
||||
fogDensity: 0.42,
|
||||
fogHeight: 0.32,
|
||||
fogRange: 0.55,
|
||||
rainEnabled: false,
|
||||
rainScreenIntensity: 0.41,
|
||||
rainVeilIntensity: 1.15,
|
||||
rainDropSize: 1.0,
|
||||
rainSpeed: 1.0,
|
||||
rainAudioEnabled: true,
|
||||
rainAudioVolume: 0.35,
|
||||
snowEnabled: false,
|
||||
snowIntensity: 0.65,
|
||||
snowSpeed: 0.85,
|
||||
lightningEnabled: true,
|
||||
lightningIntensity: 0.75,
|
||||
mieCoefficient: 0.005,
|
||||
mieDirectionalG: 0.8
|
||||
};
|
||||
this.params = { ...DEFAULT_SCENE_PARAMS };
|
||||
|
||||
this.clock = new THREE.Clock();
|
||||
this.lightningFlash = 0;
|
||||
@@ -1321,6 +1293,36 @@ export class OceanScene {
|
||||
this.params.lightningIntensity = value;
|
||||
}
|
||||
|
||||
applyParams(nextParams = {}) {
|
||||
const mergedParams = { ...DEFAULT_SCENE_PARAMS, ...nextParams };
|
||||
|
||||
this.setSunElevation(mergedParams.elevation);
|
||||
this.setSunAzimuth(mergedParams.azimuth);
|
||||
this.setExposure(mergedParams.exposure);
|
||||
this.setTurbidity(mergedParams.turbidity);
|
||||
this.setRayleigh(mergedParams.rayleigh);
|
||||
this.setBloomStrength(mergedParams.bloomStrength);
|
||||
this.setBloomRadius(mergedParams.bloomRadius);
|
||||
this.setCloudCoverage(mergedParams.cloudCoverage);
|
||||
this.setCloudDensity(mergedParams.cloudDensity);
|
||||
this.setCloudElevation(mergedParams.cloudElevation);
|
||||
this.setFogDensity(mergedParams.fogDensity);
|
||||
this.setFogHeight(mergedParams.fogHeight);
|
||||
this.setFogRange(mergedParams.fogRange);
|
||||
this.setRainScreenIntensity(mergedParams.rainScreenIntensity);
|
||||
this.setRainVeilIntensity(mergedParams.rainVeilIntensity);
|
||||
this.setRainDropSize(mergedParams.rainDropSize);
|
||||
this.setRainSpeed(mergedParams.rainSpeed);
|
||||
this.setRainAudioVolume(mergedParams.rainAudioVolume);
|
||||
this.setRainAudioEnabled(mergedParams.rainAudioEnabled);
|
||||
this.setSnowIntensity(mergedParams.snowIntensity);
|
||||
this.setSnowSpeed(mergedParams.snowSpeed);
|
||||
this.setSnowEnabled(mergedParams.snowEnabled);
|
||||
this.setLightningIntensity(mergedParams.lightningIntensity);
|
||||
this.setLightningEnabled(mergedParams.lightningEnabled);
|
||||
this.setRainEnabled(mergedParams.rainEnabled);
|
||||
}
|
||||
|
||||
scheduleNextLightning(time) {
|
||||
const rainActivity = Math.max(this.params.rainVeilIntensity, this.params.rainScreenIntensity);
|
||||
const densityBias = THREE.MathUtils.clamp(rainActivity / 1.5, 0, 1);
|
||||
|
||||
Reference in New Issue
Block a user