Office Café · 空间数字孪生
由 IMG_0755.mp4 的已复核重建生成的交互网页。界面参考 Kitchen Twin 的场景浏览、扫描对照与关节操作方式,使用本项目的模型、扫描和原视频;所有运行资源随网页提供。
打开网页
在本文件所在目录运行:
python3 serve.py --port 8766
浏览器打开 http://127.0.0.1:8766/。需要现代 Chrome、Edge、Firefox 或 Safari,以及 WebGL 2。首次加载包含约 9.3 MB 的模型。视频和点云按需载入。网页通过 HTTP 服务打开;直接双击 index.html 会遇到浏览器的本地模块限制。
原项目目录也可以运行:
cd /home/hchen/Documents/astraBlenderTest
python3 scripts/serve_twin.py --port 8766
如何使用
| 功能 |
操作 |
| 空间总览 |
拖动旋转,右键或双指平移,滚轮或双指缩放 |
| 自由漫游 |
拖动环视,WASD / 方向键 / 屏幕箭头移动,Esc 返回总览 |
| 俯视布局 |
查看空间安排,拖动平移、缩放 |
| 扫描对照 |
「对照查看 → 扫描 ↔ 模型」,拖动中间分界线或侧栏分界滑块 |
| 原视频对照 |
「原视频 ↔ 模型」,时间轴定位原视频帧,播放按钮同步播放原视频与求解相机 |
| 场景显示 |
切换墙体、顶棚、家具、相机轨迹、扫描点云与跟踪片段;调整剖切高度和亮度 |
| 门与抽屉 |
点击门板开合,或从 16 个关节中选择并调节滑块;也可全部打开 / 关闭 |
| 物体选择 |
点击三维物体,或搜索侧栏物体列表;列表点击会聚焦,显示模型尺寸 |
| 重建记录 |
15 个原相机视角的离线对比;可放大、打开对应实时视角或阅读独立复核报告 |
| 导出文件 |
顶部「下载场景」下载包含 Blender、MJCF、URDF、关节和网格依赖的完整包 |
漫游为自由相机移动,不做碰撞限制。尺寸顺序为网页世界坐标的 X / Y / Z(Y 向上),属于当前模型包围盒尺寸。物体列表包含组合资产,不等同于检测到的真实物体数量。
MuJoCo 摇晃实验
点击顶部「摇晃实验」或打开 shake.html,查看零驱动、1.5 m/s²、5 m/s² 三组实际 MuJoCo 轨迹。支持环绕、暂停、慢放、逐帧定位与完整仿真包下载。方法和剩余碰撞问题见 实验报告。
该派生场景有 62 个自由家具组件和 16 个被动门 / 抽屉关节。浏览器回放离线模拟状态,不运行物理求解器。最大静置漂移仍为 3.08 cm,因此保留为诊断实验,未宣称通过高精度静置验收。
数据与验证范围
assets/scene.glb:由 reconstruction/final/scene.blend 导出的便携 PBR 模型,保留 16 个关节的层级。
assets/scene.json:资产尺寸、关节限位、源文件 SHA-256,以及关闭 / 35% / 完全打开的 Blender 参考变换。
assets/cameras.json:实际求解的 2,103 个相机位姿。帧号从 0 开始,每秒 30 帧。
assets/walkthrough.mp4:原视频的 960 × 540 浏览器副本,保留全部视频帧。
assets/scan.bin:实际 ViPE 测量点云的 165,000 个展示采样点。
assets/instances.bin:123,801 个逐跟踪片段融合点。颜色区分跟踪片段,片段可能重复覆盖同一个物体。
evidence/:独立复核与原相机离线对比。网页版报告仅调整本地附件链接,结论保持原样。
downloads/IMG_0755_reconstruction.zip.part1 + .part2(网页下载按钮会自动合并为 IMG_0755_reconstruction.zip):原始完整重建交付包。
源 Blender SHA-256:
6baf9cbb4758ed712ab6f814e7b26ea3256099f1d903e94ec89aeb745f77686b
独立复核结论为有限度接受的可编辑、带关节程序化重建。尺度来自学习式单目深度,未做物理标定。部分形状、建筑细节、材质、反射与隐藏结构仍为近似。机构、质量、限位与摩擦为推定。
网页保留关节运动,不运行 MuJoCo 或其他物理引擎。网页实时光照和便携 PBR 材质与 Blender 离线渲染有差异。原交付的 798 项配置检查、781 个闭合生成实体和相机序列检查不构成实景测量精度认证。
静态部署
将此目录内容上传到静态托管服务即可,例如 GitHub Pages、Netlify 或 Nginx。保留 assets/、vendor/、evidence/、downloads/ 的相对目录结构和 .nojekyll。主页可以位于域名根路径或 GitHub Pages 项目子路径下,不需要 Node、构建服务或 API 密钥。
GitHub Pages 示例:把此目录内容放入仓库的发布目录,选择该目录作为 Pages 来源。视频服务器应支持字节范围请求,以便快速跳转时间轴;随包的 Python 服务已经支持。
维护与复现
原项目中的脚本:
scripts/twin/export_scene.py:用 Blender 后台导出模型、资产、关节与相机数据,不保存修改到源 .blend。
scripts/twin/export_scan.py:在既有扫描环境下导出对齐点云。
scripts/twin/prepare_docs.py:生成使用说明、复核报告和离线对比网页。
scripts/twin/check_browser.py:Chrome 真实浏览器检查,包含 48 个关节参考矩阵、扫描 / 视频 / 手机操作流程。
scripts/twin/package_site.py:打包纯静态网站并记录文件摘要。
Three.js 0.180.0 及加载器均存放在 vendor/,采用 MIT 许可证,见 第三方许可。