← 主页Blender 场景页白膜控制页编辑与动态建模页深度与相机页

3D 场景浏览器:参考照片、生成视频和 Astra 搭的三维场景放在一起看

每张参考照片对应一个 GPT-6 Astra 写 Blender 脚本搭出的房间。可以在浏览器里环绕、漫游、点物体看属性、推拉物体(物理仿真),并让 3D 相机跟着生成视频逐帧同步

2026-10-09 · 10 个场景 + 闭环扩展版 + 关节版卧室 · three.js + Rapier 物理(WebAssembly),全部在本地浏览器运行 · 场景按需加载,单个场景 0.5–3 MB

加载中…

参考照片
参考照片
生成视频 同一条相机轨迹:左转 40°、回正、再左转 55° 并下俯 12°

下载这个场景的 3D 资产

    GLB 已把 Astra 的程序化材质颜色烘焙进 baseColor(原始导出是灰色),Draco 压缩,Blender 和 three.js 都能直接打开。.blend 是 Astra 脚本搭出的原始文件。仿真包是导出器生成的 MuJoCo MJCF + URDF(每个部件一个凸包碰撞体,质量取 mass_kg)。

    版本:

    加载中…

    全部场景一览

    每一列是一个场景:参考照片、可选的生成视频、Astra 搭的三维场景(含逐轮版本)和下载。点「打开」在上面的浏览器里查看。

    说明

    这些场景是怎么来的

    • 每个场景都是 GPT-6 Astra 只看一张参考照片和测量表,写一个完整的 Blender Python 脚本搭出来的:几何、材质、灯光全部程序化生成,没有贴图。脚本 → 渲染 → 和照片对照打分 → 修改,循环 3 轮左右(卧室 4 轮)。「第 N 轮」就是循环里每一轮的结果。
    • 闭环扩展版:视频模型沿轨迹生成后,把第一次转过去才看到的内容(第 54 / 198 帧)交给 Astra 补建进场景,再重新渲染控制视频(「Astra 闭环」那一行视频)。餐厅用的是单独的扩展版 dining_hz。
    • 关节版卧室:仿真那一轮让 Astra 把床头柜的 4 个抽屉和房门拆成活动部件,写出关节轴、枢轴点和行程。
    • 物体按「编号_类别_部件」命名;类别、能否移动、质量(mass_kg)来自 Astra 在脚本里写的自定义属性。

    浏览器里做了什么、没做什么

    • 坐标:Blender 是 Z 轴向上、单位米、原点在参考相机正下方的地面上;加载时绕 X 轴转 −90° 变成 three.js 的 Y 轴向上。参考相机和视频轨迹用 K.json 的内参和 traj_rot(OpenCV 坐标的相机到世界矩阵,第 0 帧是参考相机)换算。
    • 物理:可移动的实例(不含挂墙、吊顶类)是动态刚体,质量取 mass_kg,每个部件一个凸包碰撞体(仿真实验里稳定性最好的做法);墙、地板和其他固定物体用三角网格碰撞体。被子、毛巾这类软物体只跟着下面的家具一起动,不参与碰撞。物体初始是「休眠」的,被拖动或撞到才开始受力,避免一加载就因为部件穿插而散开。
    • 同步:视频时间 × 帧率 → 输出帧 → 该方法记录的 frame_to_traj → 轨迹帧的相机位姿。三维场景只按第 0 帧照片搭建,转到照片外的区域时,视频和场景的内容本来就可能不同(这正是闭环扩展要解决的)。
    • 已知局限:门扇和房间之间不检测碰撞(转到 90° 会穿过墙,MuJoCo 里门转到约 46° 就会碰到踢脚线);未打实例标签的小物件(书、杯子等)算作固定物体;漫游的碰撞用的是简化的胶囊体;手机上只支持触摸环绕,不支持漫游。