KEN’S CAT LOG

用 Codex 打造萨格勒布的晨、昼、夜 🌅🚋🌙 从 Blender 街景到 Three.js 夜间漫步

这次,我在 Blender 中制作了萨格勒布的耶拉契奇广场,并拍下了它晨、昼、夜三种不同的样貌 🌅🚋🌙

先说最重要的一点!这里展示的不是实拍照片,而是我制作的 3D 场景渲染图。它也不是对实地的完整数字复制,而是一座参考了 360 度照片和地图、仍在持续完善中的城市。

不过,同一座城市只要换一种光线,氛围就会变化这么多,真的很有意思……!✨

清晨:城市苏醒前,略显宁静的时刻 🌅

沐浴在温暖晨间斜光中的骑马雕像与萨格勒布街景。由 Blender 制作的 CG 渲染图。

清晨加入了低角度的暖光,让建筑投下长长的阴影。青铜马雕和看起来还有些惺忪的咖啡座位。空无一人的广场,总有种让人想去散步的感觉,对吧 ☕

这并不是严格复现“当天早上 6 点 45 分的萨格勒布”,而是为了营造晨间感而调整照明的画面。微阴的天空,也采用了先前流程中通过图像生成功能制作的背景。

正午:蓝色电车成了城市的颜色 🚋💙

两辆蓝色电车沐浴在阴天日光中。CG 场景里,它们在相邻轨道上朝相反方向停放。

正午的主角是极具萨格勒布特色的蓝色电车!我参考 TMK 2200 制作了近似模型,并把另一辆也放到另一侧轨道上,让两辆车朝相反方向并排。

不仅是车身,连铰接部、车窗、车门、车轮、车顶设备和受电弓也都作为独立形状制作。当然,它并不是完全按实车设计图打造的精密模型,这也是今后可以继续提升的地方 🔧

正午采用柔和的阴天光线,让蓝色车身和石造街景自然地呈现出来。电车不是悬在“看起来差不多”的位置,而是对齐了从地图中提取出的轨道中心线。

夜晚:我最喜欢的是路灯、星空与石板路的反光 🌙✨

星空下的耶拉契奇广场,暖色路灯与蓝色月光照亮了广场。夜间 CG 渲染图中,石板路反射着光。

我个人最喜欢这一幕夜景!我把暖色路灯和蓝色月光结合在一起,让石板路呈现出微微湿润般的反射。这是为了营造氛围的演出效果,并不是在复现拍摄当天的天气。

路灯不只是贴上一张发光图片,而是将灯具的 3D 模型与照亮周围的光源分开定义。能够通过地图确认位置的路灯共有 39 盏。其中,14 盏被记录为四灯式的路灯,我参考照片为它们加入了螺旋装饰和吊挂式球形灯。

星星也是用于演出的天空,并非真实的星座排列。但对于营造夜游城市的感觉,确实非常有效……!🌌

实际制作过程,大致是这样的 🛠️

所有制作操作都通过 Codex 完成。Blender 操作通过 MCP 的 Python 进行确认,检查时使用渲染图和截图,文章与图片则通过 yasue.org 的 API 发布。

  1. 城市底图:参考 360 度照片,导入 OpenStreetMap 的建筑轮廓和轨道,并将周边建筑立体化。
  2. 细节修正:重新制作骑马雕像中马的颈部、脸部和腿部,人物的手臂、军服,以及底座铭牌。仅凭近景照片曾误判马腿的朝向,后来查看全身照片后进行了修正。
  3. 咖啡座位调整:一句“桌椅增加 10 倍!”一度变成 200 张桌子、400 把椅子,实在太多了 😂 最后缩减为 60 张桌子和 120 把椅子,集中布置在店铺前的 4 个区域。
  4. 台阶与路灯:补上了地图中存在、却在建模时遗漏的台阶。路灯也从随意的等间距摆放,重新调整到地图上的实际位置。
  5. 晨昼夜拍摄:改变相机位置、光线颜色、亮度和反射,实际渲染同一个 3D 场景。这不是在 CG 图上再用 AI 重绘城市的图像。

这次最大的感受是,“增加数量”和“让它更像实地”是两回事。与其大量散布桌子,不如把它们紧凑地集中在店铺前,反而更有城市的味道 ☕✨

接下来,要在 Three.js 中漫步夜晚的城市 🎮

我也实现了一个使用这套 Blender 模型、固定为夜景的 Three.js 查看器。模型被转换为 GLB 格式,并为浏览器压缩了数据;其中带入了建筑、咖啡家具、雕像和两辆电车。

操作方式是 WASD 移动、鼠标环视、按 Shift 快走。还准备了建筑和家具的简易碰撞检测。由于同时计算大量照明会很吃性能,因此采用了优先处理附近路灯的方案。

Web 版本目前仍在作为仅供本人使用的非公开预览准备中。本文图片来自 Blender 版本,Three.js 版本的画质和反射并不会完全相同。

或者也可以打开这里
https://ja.yasue.org/embed/2026-09-06/2956db8fb61c85ad/index.html

还有一些尚未完成的部分,也如实写在这里 📝

骑马雕像离与实物难以分辨的写实程度还有距离,建筑装饰中也仍有重复和推测的部分。咖啡座位的数量与布局、台阶高度,以及部分路灯的形状也都是近似处理。地图数据获取于 2026 年,参考照片则来自 2016 年,二者之间也存在时间差。

这次与其说是一篇“炫耀完成城市”的文章,不如说是用 Codex 制作、比对、修正,再尝试改变光线的制作记录。我觉得,正是这样一点点让城市展现出表情的过程,最有意思 🌃

参考资料 🔗

地图数据:© OpenStreetMap contributors,ODbL。并未转载参考照片本身。文中展示的 3 张图片均由本次制作的 Blender 场景输出。