VibeCoding 能做到什么程度?我用它做了一座 3D 数字博物馆

如果把传统博物馆搬到浏览器里,会是什么样?

不是简单地把一张张文物图片放到网页上,也不是做一个传统的图文展示页面。

我更希望它是一座真正可以"走进去"的博物馆

可以在展厅中漫游,可以旋转和缩放文物,可以点击文物查看介绍,也可以通过热点去了解一件文物身上的细节。

于是,我做了这个开源项目:

中国古文物数字博物馆(cultural-relics-museum)

项目使用 Vue 3 + Three.js + Vite 构建,以"夜馆 · 朱金"为视觉主题,目前包含 15 件模拟藏品,并针对 PC 和移动端分别设计了数字展厅体验。

一、为什么想做一个数字博物馆?

传统博物馆最大的魅力,是"人在现场"。

站在一件青铜器面前,你可以看到它真实的材质、轮廓和细节。

但现实中的博物馆也存在一些天然限制:

  • 有开放时间
  • 有物理空间限制
  • 文物不能随意触碰
  • 很多细节需要依靠展板和讲解
  • 不同地区的人也很难随时到现场参观

而 Web 恰好提供了另一种可能。

如果文物已经完成数字化,那么它就可以从博物馆的玻璃展柜里走出来。

可以被旋转、被放大、被聚焦,也可以加入动画、热点、导览和互动。

这也是我做这个项目最初的想法:

不是把博物馆"搬到网页",而是尝试让网页本身成为一座博物馆。

二、打开网页,先进入一座三维展厅

整个项目没有采用传统列表式的文物展示方式,而是设计了一套完整的三维展厅。

中央采用类似"圜丘"的环形布局,将文物围绕中央空间进行陈列。

通过展台、径向光轨、中庭光池以及灯光层次,让整个空间拥有一种偏东方、偏仪式感的视觉氛围。

这样读者第一眼就能理解:这不是一个普通的文物展示网站,而是一个真正的 Web 3D 展厅。

三、文物不只是"看",还可以交互

进入展厅之后,可以直接点击不同的文物。

选中之后,相机会自动聚焦到对应藏品,同时右侧展示文物相关信息。

目前项目设计了:

  • 文物分类
  • 年代
  • 材质
  • 出土地
  • 文物简介
  • 前世今生
  • 知识点
  • 细节热点

除此之外,还加入了几个比较有意思的 3D 交互。

1. Orbit 旋转缩放

可以围绕文物自由旋转和缩放,从不同角度观察模型。

2. 自动旋转

选中文物后,可以让模型缓慢自转。

相比静态图片,这种方式能够更加直观地展示文物的整体造型和纹饰。

3. 相机聚焦

点击某一件文物之后,相机会自动移动到合适的位置。

不需要用户自己调整摄像机。

4. 展厅漫游

项目还加入了相机漫游逻辑。

相机会按照藏品列表依次飞向不同的展品。

这就有点像:

给数字博物馆增加了一名"虚拟导览员"。

四、最有意思的一个功能:文物细节热点

如果只是让模型旋转,其实还不够。

真正值得关注的,是文物身上的细节。

所以项目加入了类似 Sketchfab 的热点交互。

当相机聚焦到某件文物之后,可以出现编号热点。

点击热点,就能够查看对应位置的细节介绍。

这意味着:

3D 模型负责"看",热点负责"讲"。

以后如果继续扩展,还可以进一步接入:

  • AI 文物讲解
  • 语音导览
  • 多语言介绍
  • OCR
  • 文物知识图谱
  • AI 图片识别
  • 文物相似度搜索

这样,一个简单的 Three.js 3D 展厅,就可以逐渐演变成真正的数字文博应用。

五、Three.js 是这个项目真正的核心

这个项目最核心的部分,其实不是 UI。

而是背后的 Three.js 三维场景。

目前项目使用:

  • Vue 3.5
  • TypeScript
  • Vite 8
  • Three.js r185
  • OrbitControls
  • CSS2DRenderer
  • Tween.js
  • Pinia
  • Element Plus
  • Tailwind CSS

其中 Three.js 主要负责整个数字博物馆的三维世界:

复制代码
Vue 3
  ↓
页面 / UI / 数据
  ↓
Three.js
  ↓
Scene
Camera
Renderer
Light
Model
Controls
  ↓
3D 文物数字展厅

模型资源则采用 GLTF / GLB,并结合 Draco、KTX2/Basis、Meshopt 等技术进行加载和优化。

项目还使用 HDR 环境贴图增强金属、釉面等材质的视觉表现。

这也是我觉得这个项目比较适合作为 Three.js 实战学习案例 的原因。

它不是单独演示某一个 Three.js API,而是尝试把:

场景 + 模型 + 材质 + 灯光 + 相机 + 动画 + 交互 + UI

组合成一个完整的 Web 3D 应用。

六、PC + 移动端双端适配

数字博物馆如果只能在电脑上浏览,体验其实还是会受到限制。

所以项目同时设计了两套展厅:

复制代码
/pc
/m

七、项目开源,欢迎一起继续完善

目前这个项目已经开源,采用 MulanPSL-2.0 许可证。

如果你刚好也在研究:

  • Three.js
  • Vue 3
  • WebGL
  • Web 3D
  • 数字孪生
  • 数字文博
  • 国风 3D
  • VibeCoding

那么这个项目可以作为一个比较完整的参考案例。

项目地址:

https://github.com/zhangbo126/cultural-relics-museum

https://gitee.com/ZHANG_6666/cultural-relics-museum

如果你对 Three.js 数字博物馆、数字文博或者 Web 3D 开发感兴趣,也欢迎一起交流

相关推荐
zabr1 小时前
Agent少问你,不代表控制更少
架构·aigc·ai编程
k4m7v2pz1 小时前
Bevy 0.18.1 雨雪天气粒子系统排障实录:四个“想当然“如何让 3D/2D 粒子全部不可见
3d·游戏开发·3d渲染·bevy·天气粒子·2d渲染
孟健2 小时前
Fable 5.1 实测:15.84 美元,Pro 用户该买吗?
ai编程
ajassi20003 小时前
AI语音智能体开发日记(十五)智能体LCD屏幕GIF动画显示方案——从GIF到BMP的完整实战
人工智能·ai·ai编程
戴西软件3 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
Jmyd01233 小时前
实训室的 3D 模型涉及肖像文物,数据安全与合规怎么做?
安全·3d·数据安全·虚拟实训
ServBay3 小时前
Claude 账号可能被盗刷,而你毫无察觉
api·ai编程·claude
用户7565061786115 小时前
开发 Nemu 的第四天:真实 Beta 如何把一帧判断改造成状态机
aigc·ai编程
空想兔6 小时前
AgentPulse:实时监控所有的 OpenCode Agent 跑到哪一步了
react.js·ai编程
大刚测试开发实战7 小时前
用例写不完、回归跑不动?我把最磨人的活交给 TestHub,KPI 反而稳了
ai编程·测试·claude