Wink Pings

AI 给 3D 村庄上材质:开源、128 视角、$4.44,摊位成了墙纸

一个开源项目让图像模型直接给 3D 白模画材质。128 个视角、26 分钟、4.44 美元,覆盖整个村庄。但别让 AI 画“摊位”,它会画成墙纸。

一个叫 trompe 的开源项目,让图像模型直接给 3D 白模上材质。项目开发者用 Opus 5.5 在 Blender 搭出村庄白模,再用 FLUX 3 Klein 和 Fibo 2 给整张地图补上材质。

流程是:围绕地图选 128 个视角,让图像模型为画面中的灰色区域绘制材质,再把生成的图像投影回 3D 模型。整套流程已经开源,代码在 GitHub。

patch. trompe. Texture a whole game level from a gray blockout.

上面是项目头图,白模和纹理后的效果对照。128 个视角在 fal 上跑完,花费 4.44 美元,耗时 26 分钟。下面这段视频展示了从白模到纹理的过程。

不过,让 AI 画材质有个有趣的坑。评论区有人试过让模型生成“集市摊位”,它直接把摊位画在了墙上。看着有摊位,实际是一张墙纸。作者后来把提示词改成只描述材质,并用白模的材质名称告诉模型每块灰色形状代表什么。

这个经验比最终效果更值得记下来:需要玩家走近、绕着看的物体,几何结构还是得先搭出来。图像模型擅长画材质,但不擅长凭空生成几何体。想加一个摊位,就在白模里真的做一个摊位。

trompe 的核心是相机规划。它先在玩家可站的地面高度采样点位,排除掉悬浮在空中的点,再按可通行路径筛出真正的活动区域。然后从每个点位渲染 8 个方向的低分辨率探针,贪心选择视野,直到大部分可见表面被覆盖。屋顶有单独的无人机视角,外部还有一圈补漏的相机。

整个绘制顺序有讲究:先画玩家视野,再画屋顶,最后画外围。每个视角绘制时,会把已经画好的纹理合成进灰色渲染图,让图像模型知道哪些区域已经画过,避免重复。绘制结果通过 UV 空间投影回模型,按视角与表面的夹角和距离决定是否覆盖已有纹理。

A gray village blockout fills with texture as image models paint it.

项目默认在阴天光照下绘制,让输出接近 albedo(固有色)。引擎拿到这张纹理后,用真实光源和阴影重新照亮。如果选择 outdoor 模式,会烘焙太阳阴影到纹理里,看起来更真实,但无法再动态调节阴影。

项目名 trompe,Apache-2.0。支持导入自己的 .glb 文件,需要 UV 坐标和 Y 轴朝上。浏览器负责相机规划、投影和烘焙,图像模型在 fal 上跑。想本地跑,npm install、设置 FAL_KEY、npm run dev 即可。仓库里带了 Village、Courtyard、Hall 三个示例场景。

README 还列了一些已知限制:窄缝隙的外墙可能保持灰色;屋檐会有投影错位;视图分辨率目前是 1024,开到 2048 细节更好,但浏览器内存占用会到 8GB 左右;暂时只支持 fal,不支持本地模型。

如果想让 AI 帮你做场景纹理,可以从 GitHub 仓库试试。提示词写清楚材质,别写物品名。不然,AI 会给你一面墙的摊位。

发布时间: 2026-10-27 01:40