Skip to content

Commit 3098e64

Browse files
committed
Major overhaul to hero satellite and globe
1 parent 3190650 commit 3098e64

1 file changed

Lines changed: 23 additions & 5 deletions

File tree

app.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,8 +1255,17 @@ def _init_state():
12551255
fragmentShader: `
12561256
varying vec3 vNormal;
12571257
void main() {
1258-
float intensity = pow(0.65 - dot(vNormal, vec3(0.0, 0.0, 1.0)), 2.2);
1259-
gl_FragColor = vec4(0.22, 0.72, 0.95, 1.0) * intensity;
1258+
// Fresnel-style rim glow. Three knobs:
1259+
// 0.55 — glow REACH inward from the rim. Higher = glow
1260+
// extends further into the disk (filling more of
1261+
// the visible globe with halo); lower = tight rim.
1262+
// 2.6 — falloff EXPONENT. Higher = sharper edge between
1263+
// glow and space; lower = softer/wider falloff.
1264+
// 0.7 — overall BRIGHTNESS multiplier. The cleanest
1265+
// single knob to dim or boost the halo without
1266+
// changing its shape.
1267+
float intensity = pow(0.5 - dot(vNormal, vec3(0.0, 0.0, 1.0)), 2.4);
1268+
gl_FragColor = vec4(0.22, 0.72, 0.95, 1.0) * intensity * 1.0;
12601269
}`,
12611270
side: THREE.BackSide,
12621271
blending: THREE.AdditiveBlending,
@@ -1305,14 +1314,23 @@ def _init_state():
13051314
const halo = new THREE.Mesh(haloGeo, haloMat);
13061315
satGroup.add(halo);
13071316
1308-
// Trailing signal cone down to earth.
1309-
const coneGeo = new THREE.ConeGeometry(0.35, 1.4, 20, 1, true);
1317+
// Spotlight beam projecting from the satellite onto the globe.
1318+
// ConeGeometry has its apex at +Y by default; rotating π around X
1319+
// flips it so the apex sits at the satellite end and the base widens
1320+
// toward Earth — reads as a real Earth-observation cone instead of a
1321+
// beam pointing into space. cone.position.y = +0.8 puts the cone on
1322+
// the Earth-facing side of satGroup (in the post-lookAt+rotateX frame
1323+
// local +Y points toward the globe). The base extends slightly past
1324+
// the globe surface; the opaque globe occludes the interior portion
1325+
// automatically, giving a clean "footprint" where the beam hits.
1326+
const coneGeo = new THREE.ConeGeometry(0.6, 1.4, 20, 1, true);
13101327
const coneMat = new THREE.MeshBasicMaterial({
13111328
color: 0x10b981, transparent: true, opacity: 0.12, side: THREE.DoubleSide,
13121329
blending: THREE.AdditiveBlending, depthWrite: false,
13131330
});
13141331
const cone = new THREE.Mesh(coneGeo, coneMat);
1315-
cone.position.y = -0.8;
1332+
cone.rotation.x = Math.PI;
1333+
cone.position.y = 0.8;
13161334
satGroup.add(cone);
13171335
13181336
// --- Mouse parallax ---

0 commit comments

Comments
 (0)