资源推荐
Three.js 3D 示例合集推荐

Three.js 3D 示例合集:从基础场景到完整项目的学习资源

封面

dragonir/3d 是一个基于 Three.js 的 WebGL 页面开发合集,收录了 30 多个不同主题的 3D 可视化示例。

项目的核心目标是提供可运行、可学习的 Three.js 实战案例。每个示例都是独立的 React 组件,包含完整的场景搭建、模型加载、动画控制等代码实现。

项目解决的问题:

  • 为 Three.js 学习者提供从简单到复杂的实战参考
  • 展示 WebGL 在不同场景下的应用方式
  • 提供可直接运行和修改的代码基础

项目不解决的问题:

  • 这不是一个 Three.js 教程或系统课程
  • 不提供封装好的组件库或工具函数
  • 示例代码侧重于效果展示,不一定遵循生产级代码规范

功能与示例内容

项目包含 30+ 个 3D 示例,按主题可分为以下几类:

地球与天体可视化

  • Earth:基础地球模型渲染
  • EarthDigital:数据驱动的数字地球效果,赛博朋克风格大屏
  • Ocean:海洋场景模拟

数字地球效果

游戏与角色

  • Ring:艾尔登法环火焰 Logo 效果
  • Olympic:冬奥会吉祥物冰墩墩与雪容融
  • Zelda:塞尔达传说角色重现
  • Human:元人类角色模型
  • Metaverse:阿狸的多元宇宙开放世界小游戏

艾尔登法环效果

冬奥会冰墩墩

阿狸的多元宇宙

城市与建筑

  • City:数字城市可视化
  • CityLowploy:低多边形风格城市
  • VisualLand:地形可视化

动画与交互效果

  • Floating:悬浮文字动画
  • Scroll:滚动驱动的 3D 布局
  • Comic:3D 漫画效果
  • Gravity:重力模拟效果

节日与创意

  • Lunar:虎年春节主题
  • Heart:心形动画
  • Diamond:钻石渲染效果

虎年春节效果

其他

  • Car:汽车模型展示
  • Cell:细胞结构可视化
  • Live:虚拟主播效果

怎么用

安装方式

项目基于 Create React App 构建,使用 Yarn 作为包管理器。

# 克隆仓库
git clone https://github.com/dragonir/3d.git
 
# 进入目录
cd 3d
 
# 安装依赖
yarn install

运行命令

命令作用
yarn start启动开发服务器,访问 localhost:3000
yarn build构建生产版本
yarn test运行测试
yarn eject导出 CRA 配置(不可逆操作)

使用示例

假设你想学习地球可视化的实现:

  1. 运行 yarn start 启动项目
  2. 在浏览器中打开 localhost:3000
  3. 从首页导航进入 Earth 或 EarthDigital 示例
  4. 查看 src/containers/Earthsrc/containers/EarthDigital 目录下的源码
  5. 修改代码,观察实时效果变化

在线预览

如果只是想查看效果,可以直接访问在线部署版本:

项目结构

src/
└── containers/
    ├── Earth/          # 地球示例
    ├── City/           # 城市示例
    ├── Zelda/          # 塞尔达角色
    ├── Scroll/         # 滚动布局
    └── ...             # 其他 30+ 示例

每个示例都是独立的目录,包含该场景所需的全部代码和资源。


定位与适用场景

  • Three.js 初学者:通过实际案例理解场景搭建、光照、材质、动画等概念
  • 寻找灵感:浏览不同类型的 3D 效果,获取项目创意
  • 快速原型:基于现有示例修改,快速搭建演示效果
  • 面试准备:学习常见 3D 可视化场景的实现方式

总结

dragonir/3d 是一个收录了 30 多个 Three.js 实战示例的开源项目。它的价值在于提供了多种场景类型的完整实现代码,从地球可视化到游戏角色、从城市建模到动画效果。

对于正在学习 Three.js 的开发者,这个项目可以作为参考资源,帮助理解不同 3D 效果的实现方式。但需要注意的是,示例代码更侧重于效果展示,在实际项目中使用时可能需要根据具体需求进行调整和优化。

项目目前有 2.8k Star,持续维护中,部分示例仍在开发。

GitHub 地址:https://github.com/dragonir/3d (opens in a new tab)