Skip to content

Commit 0a88526

Browse files
ten9876claude
andcommitted
Experience: less glow on the feature atlas
Node halos are about half the size and a third of the brightness (still brighter on hover and when selected), the nodes themselves are dimmed to half, and the atlas core glow is halved — so a screen full of features no longer washes out under the bloom. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent ae073e1 commit 0a88526

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

‎experience/src/world/atlas.js‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ export function createAtlas(engine, features, categories, onSelect) {
1616
const logo = new THREE.Sprite(new THREE.SpriteMaterial({ map: logoTex, transparent: true, depthWrite: false }));
1717
logo.scale.set(26, 26, 1);
1818
root.add(logo);
19-
const core = new THREE.Sprite(new THREE.SpriteMaterial({ map: glowTexture(), color: '#3aa7ff', transparent: true, opacity: 0.6, depthWrite: false, blending: THREE.AdditiveBlending }));
20-
core.scale.set(90, 90, 1);
19+
const core = new THREE.Sprite(new THREE.SpriteMaterial({ map: glowTexture(), color: '#3aa7ff', transparent: true, opacity: 0.3, depthWrite: false, blending: THREE.AdditiveBlending }));
20+
core.scale.set(70, 70, 1);
2121
root.add(core);
2222

2323
const rings = [];
@@ -40,10 +40,10 @@ export function createAtlas(engine, features, categories, onSelect) {
4040
const node = new THREE.Group();
4141
node.position.set(Math.cos(a) * r, 0, Math.sin(a) * r);
4242
const color = new THREE.Color(cat.color);
43-
const orb = new THREE.Mesh(new THREE.IcosahedronGeometry(f.aether ? 2.6 : 1.9, 1), new THREE.MeshBasicMaterial({ color, toneMapped: false }));
43+
const orb = new THREE.Mesh(new THREE.IcosahedronGeometry(f.aether ? 2.6 : 1.9, 1), new THREE.MeshBasicMaterial({ color: color.clone().multiplyScalar(0.5), toneMapped: false }));
4444
node.add(orb);
45-
const halo = new THREE.Sprite(new THREE.SpriteMaterial({ map: glowTexture(), color, transparent: true, opacity: 0.55, depthWrite: false, blending: THREE.AdditiveBlending }));
46-
halo.scale.set(16, 16, 1);
45+
const halo = new THREE.Sprite(new THREE.SpriteMaterial({ map: glowTexture(), color, transparent: true, opacity: 0.2, depthWrite: false, blending: THREE.AdditiveBlending }));
46+
halo.scale.set(9, 9, 1);
4747
node.add(halo);
4848
const label = labelSprite(f.name, { height: f.aether ? 4.2 : 3.2, color: f.aether ? '#eaf2fb' : '#c4d4e8', sub: f.status === 'roadmap' ? 'roadmap' : null, subColor: '#f0a35e', bg: 'rgba(6,11,19,0.6)', border: f.aether ? cat.color : 'rgba(120,190,230,0.25)' });
4949
label.position.y = f.aether ? 6.5 : 5.5;
@@ -64,14 +64,14 @@ export function createAtlas(engine, features, categories, onSelect) {
6464
const near = engine.camera.position.distanceTo(ATLAS_CENTER) < 460;
6565
for (const n of nodes) n.label.visible = near;
6666
if (!frozen) rings.forEach((r) => { r.spin.rotation.y += r.speed * r.dir * dt; });
67-
core.material.opacity = 0.45 + 0.15 * Math.sin(t * 1.5);
67+
core.material.opacity = 0.22 + 0.06 * Math.sin(t * 1.5);
6868
nodes.forEach((n) => {
6969
const lit = n.active ? 1.35 : n.hover ? 1.2 : 1;
7070
const want = (focusIds && !focusIds.has(n.feature.id) ? 0.35 : 1) * lit;
7171
const s = n.node.scale.x + (want - n.node.scale.x) * (1 - Math.exp(-6 * dt));
7272
n.node.scale.setScalar(s);
7373
n.label.material.opacity = focusIds && !focusIds.has(n.feature.id) ? 0.35 : 1;
74-
n.halo.material.opacity = (n.active ? 0.9 : 0.5) * (0.8 + 0.2 * Math.sin(t * 3 + n.node.position.x));
74+
n.halo.material.opacity = (n.active ? 0.5 : n.hover ? 0.35 : 0.16) * (0.85 + 0.15 * Math.sin(t * 3 + n.node.position.x));
7575
});
7676
});
7777

0 commit comments

Comments
 (0)