一、项目背景:非遗展馆为什么需要"重建"
传统非遗展馆面临三重困境:实物脆弱不可近观、展陈空间有限、讲解依赖人力。本项目以 NeRF / 3DGS 实拍重建为底座,叠加虚实融合交互与 AI 智能体,构建可漫游、可对话、可创作的非遗数字展馆。
| 痛点 | 传统方案 | 本平台方案 |
|---|
| 文物不可近观 | 玻璃展柜 + 图文说明 | 微距无损三维放大,丝线级细节 |
| 展陈空间受限 | 实体展厅面积固定 | 虚拟特展随时搭建、无限扩容 |
| 讲解人力成本高 | 人工讲解员排班 | AI 讲解智能体 7×24 跟随漫游 |
| 残缺文物难展示 | 仅展示残件 | 生成式三维补全 + 虚实对比动画 |
| 观众参与度低 | 单向观看 | 手势拆解、虚拟工坊、生成式文创 |
二、系统总体架构
平台采用"四端 + 一智能层"的分层架构,自下而上依次为重建底座、渲染与空间计算、业务应用、智能体层。
| 层级 | 核心能力 | 关键技术 |
|---|
| 重建底座 | 实拍三维还原 | NeRF、3DGS、多视角几何 |
| 渲染层 | 电影级材质表现 | 光线追踪、PBR、全局光照 |
| 空间计算 | AR 锚定与手势识别 | SLAM、空间锚点、手势追踪 |
| 智能层 | 多模态理解与生成 | 多模态大模型、语音合成 |
| 应用层 | 四端业务闭环 | WebGPU、云渲染串流 |
三、游客端:从"看展"到"对话"
3.1 电影级三维漫游
- 基于 NeRF/3DGS 实拍重建展馆与文物,真实三维还原
- 光追级材质渲染:刺绣丝线反光、木雕纹理、陶釉折射
- 自由漫游 / 自动导览 / 第一人称与环绕观赏多模式切换
- 动态光照与展柜灯光实时模拟
| 漫游模式 | 适用场景 | 交互方式 |
|---|
| 自由漫游 | 深度参观者 | 键鼠 / 手柄 / 手势 |
| 自动导览 | 首次到访 | 剧情路线自动推进 |
| 第一人称 | 沉浸体验 | 视角跟随移动 |
| 环绕观赏 | 单件文物细看 | 拖拽旋转 + 微距缩放 |
3.2 虚实融合交互
- AR 叠加:手机对准展品叠加制作工艺动画与年代信息
- 手势交互:隔空旋转、缩放、拆解文物结构(如皮影关节拆解)
- 虚拟修复演示:残缺文物三维补全动画,虚实对比
- 空间锚定留言:在展馆特定位置留痕
- 虚拟形象漫游:Avatar 代表本人与其他游客同场参观
3.3 沉浸式叙事与讲解
- AI 讲解智能体跟随漫游(语音 + 三维指示动画)
- 剧情化导览:沿时间线在三维场景中演绎非遗传承故事
- 空间音频:走近展品触发对应工艺音效与方言讲解
- 多模态问答:语音/文字提问,三维场景中高亮回答
3.4 互动创作与分享
- 虚拟工坊:三维场景中体验刺绣/陶艺简化交互创作
- 生成式文创:基于展品风格生成个性化三维文创预览
- 漫游轨迹三维回放与精彩瞬间一键分享
四、策展人员端:三维布展与内容运营
| 功能模块 | 核心能力 | 价值 |
|---|
| 三维策展布展 | 拖拽布展、动线仿真、灯光配置 | 布展周期缩短 |
| 数字资产管理 | 模型/原图/点云统一管理 | 资产可追溯 |
| 叙事内容编排 | 时间轴编排、知识库配置 | 内容可复用 |
| 活动与运营 | 虚拟特展、数据看板 | 运营可量化 |
4.1 三维策展与布展
- 在重建展馆中拖拽布置展品,实时预览灯光与视角效果
- 展线三维规划与观众动线仿真(人流热力预演)
- 虚拟展柜 / 展台 / 灯光三维配置
- 多套布展方案三维并排对比
4.2 文物数字资产管理
- 重建模型资产管理(NeRF/3DGS 模型、多视角原图、点云)
- 文物三维档案(年代、工艺、修复史三维关联)
- 模型质量评估与轻量化处理流水线
- 虚实修复版本管理与对比查看
4.3 叙事内容编排
- 导览剧情三维时间轴编排(节点触发动画/语音/特效)
- AI 讲解知识库配置与多语言生成
- 互动体验节点(手势交互/工坊任务)三维配置
- 观众行为三维热力分析与内容优化建议
五、管理员端:平台治理与底座管理
| 治理维度 | 管理内容 | 关键指标 |
|---|
| 重建底座 | 采集任务、GPU 调度、场景拼接 | 重建成功率、单场景耗时 |
| 权限授权 | 展区/展柜细粒度权限 | 越权访问次数 |
| 数据与智能体 | 看板、知识库、模型版本 | 问答准确率、响应时延 |
| 系统配置 | 画质分级、灯光预设、告警 | 帧率、告警响应时长 |
5.1 重建底座管理
- 多视角图像/视频采集任务管理与进度可视化
- NeRF/3DGS 重建任务调度与 GPU 资源管理
- 三维场景拼接、对齐与语义标注
- 展馆空间锚点与 POI 配置
5.2 权限与空间授权
- 基于展区/展柜范围的细粒度权限
- 角色-空间-功能三维授权矩阵
- 操作审计三维回溯(谁在何时对哪个展品做了什么)
5.3 系统与视觉配置
- 渲染画质分级(光追/高性能/流畅)配置
- 主题氛围与灯光预设管理
- 大屏展示布局可视化编排
- 告警与通知策略配置
六、AI 智能体层:平台智能内核
| 智能体 | 输入 | 输出 | 典型场景 |
|---|
| 讲解问答 | 自然语言问题 | 三维高亮 + 语音 | “这件刺绣用了什么针法” |
| 重建与修复 | 模型质量数据 | 补采建议 / 补全模型 | 残缺文物修复预演 |
| 导览叙事 | 观众画像与行为 | 个性化剧情路线 | 动态调整讲解深度 |
| 多模态交互 | 语音+手势+视线 | 三维标注反馈 | 图文混合指令解析 |
6.1 讲解问答智能体
- 自然语言问"这件刺绣用了什么针法"→ 三维高亮 + 语音讲解
- 多轮指代理解(“刚才那件”“旁边这个”)并在场景中定位
- 多语言与方言生成式讲解
6.2 重建与修复智能体
- 自动评估重建质量并给出补采建议
- 残缺文物生成式三维补全与修复方案预演
- 风格迁移生成文创草案并在三维中预览
6.3 导览叙事智能体
- 根据观众画像生成个性化剧情导览路线
- 动态调整讲解深度与节奏(基于停留与互动行为)
- 多智能体协同(讲解 + 引导 + 互动任务)
七、核心代码实现
7.1 3DGS 重建任务调度
import asyncio
from dataclasses import dataclass
from typing import List
@dataclass
class ReconstructTask:
task_id: str
scene_id: str
image_count: int
gpu_memory_gb: int
priority: int = 0
class ReconstructScheduler:
"""基于 GPU 显存与优先级的重建任务调度器"""
def __init__(self, gpu_pool: List[int]):
self.gpu_pool = gpu_pool
self.queue: asyncio.Queue = asyncio.Queue()
async def submit(self, task: ReconstructTask):
await self.queue.put(task)
def _pick_gpu(self, need: int):
for idx, free in enumerate(self.gpu_pool):
if free >= need:
return idx
return None
async def run(self):
while True:
task = await self.queue.get()
gpu = self._pick_gpu(task.gpu_memory_gb)
if gpu is None:
await self.queue.put(task)
await asyncio.sleep(1)
continue
self.gpu_pool[gpu] -= task.gpu_memory_gb
try:
await self._train(task, gpu)
finally:
self.gpu_pool[gpu] += task.gpu_memory_gb
self.queue.task_done()
async def _train(self, task: ReconstructTask, gpu: int):
print(f"[GPU{gpu}] 开始重建 {task.scene_id},{task.image_count} 张视角图")
await asyncio.sleep(0.1)
7.2 讲解智能体的多轮指代解析
from typing import Dict, List
class ReferenceResolver:
"""解析"刚才那件""旁边这个"等指代,映射到场景展品 ID"""
def __init__(self):
self.history: List[Dict] = []
def push(self, exhibit_id: str, name: str):
self.history.append({"id": exhibit_id, "name": name})
def resolve(self, query: str, scene_graph: Dict[str, List[str]]) -> str:
if "刚才" in query or "上一个" in query:
return self.history[-1]["id"] if self.history else ""
if "旁边" in query or "附近" in query:
anchor = self.history[-1]["id"] if self.history else None
neighbors = scene_graph.get(anchor, [])
return neighbors[0] if neighbors else ""
return ""
resolver = ReferenceResolver()
resolver.push("ex_1001", "苏绣双面绣")
scene_graph = {"ex_1001": ["ex_1002", "ex_1003"]}
print(resolver.resolve("旁边这个是什么工艺", scene_graph))
7.3 渲染画质分级策略
const QUALITY_PRESETS = {
raytracing: { shadow: 'high', ao: true, samples: 64, targetFps: 30 },
high: { shadow: 'mid', ao: true, samples: 16, targetFps: 60 },
smooth: { shadow: 'low', ao: false, samples: 4, targetFps: 90 },
};
function pickPreset(deviceScore, networkMbps) {
if (deviceScore > 80 && networkMbps > 50) return 'raytracing';
if (deviceScore > 50 && networkMbps > 20) return 'high';
return 'smooth';
}
const preset = pickPreset(85, 60);
console.log('当前画质档位:', preset, QUALITY_PRESETS[preset]);
7.4 空间锚定留言的数据结构
public class SpatialMessage {
private String id;
private String exhibitId;
private double[] position;
private double[] rotation;
private String content;
private long createTime;
public boolean isVisibleFrom(double[] cameraPos, double maxDistance) {
double dx = cameraPos[0] - position[0];
double dy = cameraPos[1] - position[1];
double dz = cameraPos[2] - position[2];
return Math.sqrt(dx * dx + dy * dy + dz * dz) <= maxDistance;
}
}
八、技术支撑与创新亮点
8.1 技术支撑矩阵
| 技术方向 | 具体方案 | 解决的问题 |
|---|
| 三维重建 | NeRF / 3DGS 流水线 | 实拍还原真实文物 |
| 实时渲染 | 光追 + PBR + 全局光照 | 电影级材质表现 |
| 空间计算 | SLAM + AR 空间锚定 | 虚实精准叠加 |
| 多模态交互 | 多模态大模型 | 语音/手势/视线融合 |
| 大场景承载 | WebGPU / 云渲染串流 | 终端性能解耦 |
| 沉浸音频 | 空间音频 + 虚拟形象 | 临场感提升 |
8.2 五大创新点
| 创新点 | 传统做法 | 本平台做法 |
|---|
| 真实文物重建 | 手工建模"假"文物 | 实拍重建,细节真实 |
| 虚实融合修复 | 仅展示残件 | 三维补全动画对比 |
| 手势拆解结构 | 图文说明 | 隔空拆解皮影关节 |
| AI 讲解跟随 | 固定语音导览 | 智能体跟随对话 |
| 生成式文创 | 通用纪念品 | 展品风格一键生成 |
8.3 视觉亮点
- 光追级材质:丝线反光、陶釉折射、木纹质感
- 展柜聚光灯与全局光照电影级氛围
- 文物微距无损放大与细节呈现
- 虚拟修复补全动画与虚实对比
- AR 虚实叠加与空间标注动效
- 空间音频与剧情化镜头运镜
九、总结
平台以实拍重建解决"真不真",以虚实融合交互解决"近不近",以AI 智能体解决"懂不懂",形成"重建—渲染—交互—智能"的完整闭环。对游客,是从看展到对话;对策展方,是从经验布展到数据驱动;对管理者,是从粗放运维到精细治理。




所有评论(0)