把个人作品集做成一个动态的宇宙系统到底有多硬核
很多人做作品集的时候,思维还停留在“写几个 About Me 段落,堆几个项目卡片”的静态网页逻辑里。但我最近看到一个非常有意思的实战案例,作者没有去做那种千篇一律的单页滚动网站,而是直接用 Three.js 撸出了一个“恒星系统”模型。这种把个人特质映射到天文概念上的做法,确实比单纯展示技术栈要高级得多。
我顺手研究了一下他的技术实现思路,如果你也想折腾这种效果,核心难点不在于模型本身,而在于自定义 Shader 的编写。比如要实现像 KELT-9b 那种高温铁蒸汽的大气效果,你得在
下一篇
用 Claude Code 写代码居然能顺便赚点 Anthropic →
这个项目最硬核的地方在于它不是简单的 3D 模型堆砌,而是通过高度定制化的 Shader(着色器)来模拟真实的物理质感。比如他用 GLSL 写的星体大气层效果,还有那种带有铁蒸汽感的行星表面,这在 Web 端渲染里是非常吃性能且考验数学功底的。
从技术栈组合来看,这是一套非常标准的现代前端高性能渲染工作流:
- 核心渲染层: 使用
Three.js作为底座,配合React Three Fiber (R3F)和Drei来管理场景组件。这种组合比原生 Three.js 开发效率高得多,能把 3D 对象直接当成 React 组件来写。 - 视觉增强: 为了达到那种“太空深邃感”,他用了
React Three Postprocessing来做 Bloom(发光)和 Vignette(暗角)处理,这是提升 WebGL 质感的关键。 - 状态与逻辑: 复杂的相机路径(Camera Journey)和星体交互,是通过
Zustand来做全局状态管理的,这比用传统的 React Context 要轻量且响应更快。 - UI 交互: 仪表盘和 HUD 界面是用
Tailwind CSS v4写的,这种“3D 场景 + 2D 覆盖层”的架构是目前高阶 WebGL 项目的标准解法。
我顺手研究了一下他的技术实现思路,如果你也想折腾这种效果,核心难点不在于模型本身,而在于自定义 Shader 的编写。比如要实现像 KELT-9b 那种高温铁蒸汽的大气效果,你得在
fragment shader 里写大量的噪声函数(Noise functions)来模拟流体动态。另外,这哥们儿居然还给这个 3D 网站写了 12 套 Playwright 测试用例,甚至用了 Python 驱动测试,这种严谨程度确实有点开发者“卷”过头的味道,但也确实保证了在复杂渲染场景下的稳定性。
虽然目前移动端适配还有点闪烁问题,但这种从零构建“微型宇宙”的思路,对于想在前端领域进阶的同学来说,绝对是一个值得拆解学习的实战模版。
# 核心依赖参考
npm install three @types/three @react-three/fiber @react-three/drei zustand tailwindcss 免费 AI 工具箱 · 全部完全免费
