网页嵌入 3D 人物实现指南:基于 React 与 Three.js
前言
在 Web 应用中集成 3D 虚拟形象已成为提升用户体验的重要手段,特别是在 AI 助手、虚拟客服等场景中。本文将详细介绍如何在网页中嵌入一个可交互的 3D 人物模型。我们将使用 React 作为前端框架,结合 Three.js 及其生态库(@react-three/fiber, @react-three/drei)进行渲染,并通过 ReadyPlayerMe、Blender 和 Mixamo 完成模型的创建与动画绑定。
技术栈与工具准备
要实现该效果,需要掌握以下工具和库:
- 角色设计:ReadyPlayerMe(在线 3D 捏脸平台)。
- 模型处理:Blender(用于格式转换、材质修复)。
- 动画制作:Mixamo(Adobe 提供的免费动作库)。
- Web 渲染:React + Three.js + @react-three/fiber + @react-three/drei。
步骤一:设计 3D 人物
首先,我们需要创建一个基础 3D 模型。推荐使用 ReadyPlayerMe 平台。
- 访问 ReadyPlayerMe 网站,选择上传自定义图片或从预设中选择角色。
- 调整面部特征、发型、服装等细节,过程类似于游戏中的捏脸功能。
- 确认设计后,导出模型文件。默认导出格式为
.glb。 - 如果不需要复杂的骨骼动画,可以直接将
.glb文件引入项目;若需动画,请继续下一步。
注意:导出的 GLB 文件通常包含网格、材质和纹理信息,是 Web 端加载性能较好的格式。
步骤二:模型文件格式转化与动画绑定
为了让模型动起来,我们需要将其上传至 Mixamo 并下载带动画的文件,随后可能需要再次转换格式。
1. 贴图解压
在将模型导入 Blender 或上传至 Mixamo 之前,务必确保贴图资源完整。
- 打开 Blender,导入
.glb文件。 - 检查材质球,确保所有贴图路径正确。如果贴图丢失,模型会显示为白色。
- 建议将贴图文件解压到当前项目文件夹中,避免相对路径错误。
2. 动画绑定流程
- 登录 Mixamo 账号,上传你的模型文件(支持 FBX 或 OBJ)。
- 系统会自动识别骨骼结构。如果识别失败,需在 Blender 中重新绑定骨骼。
- 选择一个喜欢的动作(如 Idle, Walk, Talk),点击 Apply。
- 下载模型,格式选择
.fbx。 - 格式二次转换:由于 Web 端对 GLB 支持更好,建议使用 Blender 将下载的
.fbx文件再次导出为.glb格式,以便后续在 React 中使用。
步骤三:项目环境搭建
初始化 React 项目并安装必要的 3D 渲染依赖。
npm install three @react-three/fiber @react-three/drei
确保项目中已配置好静态资源加载器(如 Vite 或 Webpack),以便直接导入 .glb 文件。
步骤四:代码实现
1. 资源管理
在 src/utils 目录下创建 model.js 或 model.ts,统一管理模型路径。
import assistantModel ;
agentModel = assistantModel;


