数字展馆概念的demo项目,本项目中使用的技术栈为three.js
本项目中使用的技术栈为three.js,使用blender进行建模,最后烘焙渲染场景贴图,导出glb地图格式在Web端渲染。
此项目仅为数字展馆概念的demo项目
如何操作?行走:W/S/A/D 移动端行走操作: 虚拟摇杆 跳跃:空格 控制视角:鼠标左键拖动 目录结构说明
- ├── src # 源代码
- │ ├── assets # 资源文件夹(音频、贴图、模型)
- │ │── audio # 音频类(创建位置音频)
- | │── character # 人物角色类(人物模型控制)
- | │── controlManage # 键盘控制类(键盘按键或虚拟摇杆状态管理)
- | │── core # 核心基础类(包括camera、renderer、scene等)
- | │── css3DRenderer # 负责DOM元素与WebGL的内容相结合(渲染电脑屏幕的iframe元素)
- | │── environment # 场景类(创建地图模型、画展贴图、地面镜面反射)
- | │── lib # three.js相关扩展库
- | │── loader # 加载器类(glb、texture、audio等加载器管理)
- | │── rayCasterControls # 射线投射类(角色与画框交互触发检测)
- | │── ui # UI类(负责控制渲染页面的部分UI,例如加载进度页,详情窗口,虚拟摇杆)
- | │── utils # 工具函数
- | | │── Emitter.ts # 事件分发类(各类事件的分发)
- | | └── typeAssert.ts # 类型推导工具函数
- | │── world # 游戏核心类(用于管理游戏世界中的核心元素,包括环境、角色、交互探测和音频等组件)
- | │── main.ts # 页面入口函数
- | └── Constants.ts # 常量定义(定义模型/贴图/媒体资源地址、分发事件名等)
复制代码 feature:- 高性能碰撞检测:
因为这类项目对于物理引擎的应用场景并不多,经过不懈的技术方案调研后使用了一套不依赖于物理引擎的高性能的动态碰撞检测方案。比three.js官网的Octree方案性能还要好上几倍。 - 画展交互:
利用光线投射进行物体探测触发互动效果。 - 位置音频:
加入了位置音频,模拟现实中的听觉传播,使得场景中的音乐更具有空间感,提升浏览体验。
运行To setup a dev environment: - # Clone the repository
- # Install dependencies
- npm i
- # Run the local dev server
- npm run dev
复制代码To serve a production build: - # Install dependencies if not already done - 'npi i'
- # Build for production
- npm run build
复制代码
数字展馆概念的demo项目,本项目中使用的技术栈为three.js
链接:https://pan.quark.cn/s/ba5a81b4439c
提取码下载:
|