Klima 3D: Wolken kleiner + deutlich mehr Variation
- makeCloud: Opacity pro Wolke gewürfelt (0.45..0.80), Bump-Anzahl 2..6 statt 3..5, Bump-Radien 0.45..1.15 statt 0.9..1.8 (halb so groß). Spacing zwischen Bumps variiert stärker. - 5 Wolken-Instanzen (vorher 4), Parameter-Ranges breiter: - Höhe 5..9 (vorher 6.5..8.3) - Scale 0.35..0.85 (vorher 0.75..1.20) — kleiner + mehr Streuung - Speed 0.5..1.9 (vorher 0.8..1.4) - Z-Start 2..12, Z-End -14..-22 (stärker versetzt) Fühlt sich jetzt mehr wie natürliche Dunst-Schwaden an, weniger synchron. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+20
-16
@@ -4304,16 +4304,20 @@ function syncCitizenBeach() {
|
||||
// pro Wolke eigener Zyklus und eigenes Höhenlevel.
|
||||
function makeCloud() {
|
||||
const g = new THREE.Group();
|
||||
// Transparenz pro Wolke leicht würfeln — manche sind dichter, andere
|
||||
// dünner Dunst. Opacity zwischen 0.45 und 0.80.
|
||||
const opacity = 0.45 + Math.random() * 0.35;
|
||||
const mat = new THREE.MeshBasicMaterial({
|
||||
color: 0xffffff, transparent: true, opacity: 0.72, depthWrite: false
|
||||
color: 0xffffff, transparent: true, opacity, depthWrite: false
|
||||
});
|
||||
// Drei bis fünf gestapelte Kugeln für Dunst-Silhouette
|
||||
const bumps = 3 + Math.floor(Math.random() * 3);
|
||||
// 2..6 gestapelte Kugeln, Radien 0.45..1.15 — Silhouetten deutlich
|
||||
// unterschiedlicher als vorher (kleine Wölkchen bis dickere Bänke).
|
||||
const bumps = 2 + Math.floor(Math.random() * 5);
|
||||
for (let i = 0; i < bumps; i++) {
|
||||
const r = 0.9 + Math.random() * 0.9;
|
||||
const sphere = new THREE.Mesh(new THREE.SphereGeometry(r, 8, 6), mat);
|
||||
const r = 0.45 + Math.random() * 0.70;
|
||||
const sphere = new THREE.Mesh(new THREE.SphereGeometry(r, 7, 5), mat);
|
||||
sphere.position.set(
|
||||
(i - bumps / 2) * 1.1 + (Math.random() - 0.5) * 0.4,
|
||||
(i - bumps / 2) * (0.85 + Math.random() * 0.45) + (Math.random() - 0.5) * 0.4,
|
||||
(Math.random() - 0.5) * 0.4,
|
||||
(Math.random() - 0.5) * 0.4
|
||||
);
|
||||
@@ -4325,17 +4329,17 @@ function makeCloud() {
|
||||
// Vier Wolken, jede mit eigener Phase, Höhe und Flugdauer.
|
||||
const CLOUD_CYCLE = 60; // Sekunden pro Überquerung (Basis)
|
||||
const clouds = [];
|
||||
for (let i = 0; i < 4; i++) {
|
||||
// 5 Wolken mit breit gestreuten Parametern (Höhe, Skalierung, Tempo,
|
||||
// Flugbahn). Höhe nah an Vulkan-Gletscher (~7.3), Skalierung insgesamt
|
||||
// kleiner als vorher — jetzt 0.35..0.85 statt 0.75..1.20.
|
||||
for (let i = 0; i < 5; i++) {
|
||||
const c = makeCloud();
|
||||
c.userData.phase = Math.random(); // 0..1 Startverschiebung
|
||||
// Höhe nahe Vulkan-Spitze (Terrain ≈ 5.2 + Dome 2.1 ≈ 7.3) — Wolken
|
||||
// ziehen knapp über die Gletscherkuppe, statt hoch am Himmel zu
|
||||
// schweben. Fühlbarer "Dunst um den Vulkan"-Look.
|
||||
c.userData.height = 6.5 + Math.random() * 1.8;
|
||||
c.userData.zStart = 4 + Math.random() * 6; // Insel-Vorder-Bereich
|
||||
c.userData.zEnd = -16 - Math.random() * 4; // hinterm Vulkan
|
||||
c.userData.scale = 0.75 + Math.random() * 0.45;
|
||||
c.userData.speed = 0.8 + Math.random() * 0.6;
|
||||
c.userData.phase = Math.random();
|
||||
c.userData.height = 5.0 + Math.random() * 4.0; // 5..9
|
||||
c.userData.zStart = 2 + Math.random() * 10; // 2..12
|
||||
c.userData.zEnd = -14 - Math.random() * 8; // -14..-22
|
||||
c.userData.scale = 0.35 + Math.random() * 0.50; // 0.35..0.85
|
||||
c.userData.speed = 0.5 + Math.random() * 1.4; // 0.5..1.9
|
||||
c.scale.setScalar(c.userData.scale);
|
||||
ambientGroup.add(c);
|
||||
clouds.push(c);
|
||||
|
||||
Reference in New Issue
Block a user