@@ -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