Agent Skills
返回列表
3D 星系可视化

3D 星系可视化

设计多媒体 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_45a9f65a/threejs-galaxy-visualization。

技能介绍

要解决什么问题

把知识图谱或关系数据做成「能转、能点、不糊」的 3D 场景,常见坑是:透明叠加与 Bloom 一起把 GPU 打满、选中节点时全场亮度失控、以及 idle 时仍每帧全量遍历。本技能按 Three.js 实战管线,把场景分层、节点多层渲染和性能开关写成可照着实现的约定。

技能如何工作

  • 场景架构:自后向前依次加入深空环境、相机与 OrbitControls、渲染器,保证背景先画、前景叠加顺序正确。
  • 程序化纹理:用 Canvas 2D 运行时生成 glowTexture、starGlowTexture、spikeTexture,基色为白色 (255,255,255),便于 SpriteMaterial.color 乘出任意色相;Canvas 纹理需设 minFilter = THREE.LinearFilter 避免 mipmap 糊边。
  • 节点四层叠绘:每个数据节点对应 3~4 层 sprite/mesh(核心球、内晕、外光、可选衍射十字),统一 transparent: true、depthWrite: false、THREE.AdditiveBlending,用加法混合做层次而不依赖常驻后处理。
  • 背景系统:螺旋星系约 8000 粒子(四臂、径向幂律密度 + 自定义 ShaderMaterial)、球壳背景星约 1500 粒、9 个星云 sprite;仅在 controls.autoRotate 为真时慢速旋转背景层。
  • 交互反馈:Focus/Dim——选中节点时非邻居约 25% 不透明度,焦点与邻居放大、抬升与微闪烁;连线用 Line2;3D 标签走 Canvas → CanvasTexture + 对象池。
  • 性能:UnrealBloomPass 默认关闭(约 3× fragment 成本),无 Bloom 时用材质参数补偿亮度;_needsRender 脏标记与 hover 脏检查减少 idle 渲染与 O(n) 遍历;粒子总量控制在约 9500 以内。

适用边界与注意点

  • 数据类别到「星型」样式需自行维护 TYPE_STYLE 映射;技能讲的是渲染与交互骨架,不是图数据库 schema。
  • Bloom + 大量 AdditiveBlending 易爆亮与卡顿,务必保留可切换(如按键 B)。
  • 确定性随机用 FNV-1a 对节点字符串哈希,避免每次构建 Math.random() 不一致;核心几何应共享 SphereGeometry(1, 12, 12)。
  • OrbitControls 阻尼需每帧 controls.update(),否则惯性会突然停住。

使用场景

  • 产品路演要把实体关系数据做成可旋转、可点选的 3D 星系图谱,需在浏览器内压住粒子数与 Bloom 带来的 GPU 峰值
  • 图数据接口已就绪,前端要实现节点四层发光叠绘,并在选中某节点时邻域高亮、其余节点压暗到约 25% 透明度
  • 文献或技能引用网络要做沉浸展示,需要螺旋星系背景、球壳星空,且仅在自动旋转开启时慢速转动背景层
  • 展会大屏嵌入 WebGL 场景:默认关闭 UnrealBloomPass,用材质参数补偿亮度,并用脏标记在用户停手后减少无效重绘

适合人员

  • 负责内网或官网「知识宇宙」Demo 的前端,要把数据分类映射到 TYPE_STYLE,并接上 Line2 连线与 Canvas 标签对象池
  • 做过 Three.js 透明叠加的图形向工程师,需要按技能约定处理 depthWrite、AdditiveBlending 与可切换 Bloom
  • 维护浏览器端知识图谱产品的开发者,要在约 9500 粒子预算内实现 Focus/Dim、抬升与微闪烁反馈
  • 要把二维关系图升级为宇宙主题 3D 展示的数据可视化工程师,关注 idle 检测与 hover 时避免全量节点遍历