Skip to content

园区孪生总览:自动巡游与分区点亮 ​

初始化中…

前面两个 Demo 一个解决"能不能看",一个解决"能不能长出来"。这篇解决的是第三个问题:一屏放不下整个园区时,镜头怎么自己走,走到的地方怎么把注意力带过去。 模型还是那份园区 glTF,没有新建任何几何。

这次想验证三件事 ​

  1. 镜头能不能不靠人。 全站零交互是硬约束,所以巡游必须由场景自己驱动,观众只负责看。
  2. 分区高亮能不能有层次。 全场一起亮等于没亮。要做成波前推进:从片区中心往外围逐栋点亮。
  3. 同一份模型能不能按图层拆着看。 屋顶、幕墙、地面标线本来就是独立构件,能不能随时整层剔掉。

交给 AI 的交付要求(按我的模板改写) ​

数据侧

  1. 直接用现有园区模型,不新建几何。构件命名遵循 B01 / B01_roof / B01_win / B01_door0 的族名规则,分区与图层都从名字推,不许写死栋数。
  2. 分区按建筑底面中心的 X 坐标三等分,得到西 / 中 / 东三片;每片的中心、水平半径、最高点由该片所有建筑的包围盒算出来。
  3. 地面标线构件(mark0 起,共 183 处)单独归一组,按绕场心的极角排序,用来做扫掠效果。

镜头侧

  1. 机位一共 7 个:一个全景俯瞰,每片区各一个俯瞰、一个低角街景。每个机位停留约三成时间,剩下的时间做过渡,过渡用 smoothstep,不许匀速插值。
  2. 相机停在片区外侧往内看,方向取"片区中心减场心"再归一化,避免镜头穿进建筑里。街景机位高度压在 5 m 上下,人眼视角,不做上帝镜头。
  3. 观众随时能拖拽接管:一旦拖拽,巡游暂停 5 秒;恢复时不是硬切,是把相机朝目标姿态指数缓动过去,1 - exp(-dt * 2.4)。

表现侧

  1. 当前片区逐栋点亮,波前进度按建筑到片区中心的距离错开;非当前片区压到冷灰蓝,保留轮廓但不抢戏;全景机位时全场恢复原色。
  2. 每栋、每个构件的材质都要独立克隆,否则改一栋会把同材质的别处一起改掉。
  3. 一轮末尾留出约 14% 时间把整层屋顶剔掉,演示图层显隐。标线位做一次绕场一周的雷达式扫亮,12 秒一圈。
  4. 不加任何按钮和进度条,状态全写在左下角文字读数里:当前机位、点亮片区与栋数、图层状态、扫亮数量、模型尺寸、三角面、帧耗时。组件卸载时几何、材质、贴图、控制器全部释放。

实现里几个值得记的点 ​

共享材质必须克隆。 这份 glTF 只有 5 个材质(墙体、金属屋顶、玻璃、沥青、标线),528 个网格共用。想给单栋建筑刷色,第一件事是 o.material.clone()。代价是 500 多个材质对象,但它们参数类型一致,着色器程序仍然复用,实测帧成本可以接受。

分片区不能用编号段。 建筑编号是生成顺序,跟空间位置没关系,按 B01–B12 这样切出来的片区会东一栋西一栋,镜头扫过去是跳的。改成按底面中心 X 坐标排序三等分之后,连续性才对得上。

"点亮"要靠距离延迟,不是靠随机。 每栋的进度取 片区停留时间 × 1.5 - 到片区中心的归一化距离 × 0.5,越远的栋开始得越晚,就自然形成从中心扩散的波前。随机分配的话,画面会闪烁成一片噪声。

接管后不能硬抢镜头。 只要检测到 controls 的 start 事件就把巡游挂起 5 秒,恢复时按时间常数缓动。直接赋值相机会让观众觉得自己被场景夺走了操作权。

三角面读数用渲染器统计。 自己遍历几何算出来的数不含实例化与视域剔除,跟实际渲染量对不上,所以读数直接取每帧渲染后的统计值。

按交付要求核对 ​

要求实际做到判定
不写死栋数分区、图层、栋数全部由构件名与包围盒推导达成
七机位巡游全景 + 三片区各两个,一轮 49 秒自动循环达成
波前逐栋点亮按到片区中心距离错开起始时间达成
材质独立克隆528 个网格各自一份材质达成
拖拽接管不硬抢暂停 5 秒后指数缓动回巡游姿态达成
图层剔屋顶每轮末尾约 14% 时间隐藏整层屋顶达成
文字读数无控件五项读数,页面上没有任何按钮达成
卸载清理几何、材质、贴图、控制器全部释放达成

已知不足 ​

  • 片区是几何切分,不是真实分组。 按 X 坐标三等分纯粹为了镜头连续,跟实际的楼栋归属没有关系,页面上也没假装它是。
  • 扫亮与状态色都是演示数据。 没有任何真实来源,颜色也不表达任何含义,只是验证"一批同类构件能不能被程序统一刷色"。
  • 机位是固定关键帧。 没有根据遮挡关系自动避让他处建筑,个别街景机位在某些角度会贴着建筑外墙。
  • 剖面只剔了屋顶。 幕墙、门窗这些附属层没做整层剔除,图层系统其实还没有真的建起来,只是先验证了显隐这条路走得通。
  • 没有 LOD。 全场一镜到底用同一精度渲染,模型只有 35 栋所以无所谓,真要放大到几百栋得补分层细节。

本站所有 3D 孪生场景、可视化系统均为个人技术实验 Demo,仅用于技术学习与效果展示,不属于对外运营平台,不提供任何商业服务。

本站为个人技术展示网站,仅用于个人研发作品、3D 数字孪生技术学习展示,无任何经营性服务、无社区互动、不对外提供商业服务。

本站为个人技术展示网站,仅用于个人研发作品、3D 数字孪生技术学习展示,无任何经营性服务、无社区互动、不对外提供商业服务。

蜀ICP备2026068005号-1|个人 3D 数字孪生技术研发展示站