在 3D 渲染领域,高斯溅射(Gaussian Splatting,GS)技术以其实时性和高保真度脱颖而出,通过数百万 3D 高斯原语表示场景,实现新型视图合成。然而,当应用于无限扩展场景如开放世界游戏或 VR 环境时,传统 GS 模型在模块化重复渲染中易产生边界伪影:相邻块间颜色、几何不连续,导致视觉跳变。
GSWT(Gaussian Splatting Wang Tiles)巧妙融合 Wang Tiles 算法,解决这一痛点。Wang Tiles 是一种经典无缝纹理生成方法,方形瓦片边缘编码颜色或特征,拼接规则确保相邻边缘匹配,从而无限平铺无接缝。将此理念迁移至 GS:每个瓦片为独立 GS 模型(含位置、协方差、不透明度、SH 颜色系数的高斯云),训练时强制边缘高斯分布一致,实现无缝过渡。
核心观点:GSWT 不只平铺纹理,更在 3D 空间保持几何与外观连续,支持动态 LOD 与无限缩放。相较纯 GS 重复,瓦片多样性(10-50 个瓦片)避免周期性重复;相较 NeRF,渲染速度提升 100x 以上,适用于实时应用。
证据源于工程实践:在 HN 讨论中,原型展示无限草地场景,PSNR 达 32dB,无可见伪影。Yunfan Zeng 的研究背景支持此创新,其 NeRF 加速经验奠基 GS 优化。
落地实现聚焦可操作参数与清单。以 Python+PyTorch 为基础,流程如下:
-
数据准备:采集纹理区域多视图图像(COLMAP SfM 预处理,相机位姿误差 < 0.5°)。瓦片尺寸 32x32 像素(或 64x64 高配),覆盖 1m² 场景。
-
瓦片集训练:
- 初始化:SfM 点云膨胀为 10^6 高斯 / 瓦片。
- 损失函数:渲染损失(L1 + D-SSIM,权重 0.8:0.2) + 边缘约束(相邻视图边缘像素差异 < 1%,阈值 0.95)。
- 优化:Adam lr=1e-2,迭代 3e4,batch=1,显存 24GB。
- 多样性:遗传算法生成 50 瓦片候选,选边缘匹配度 > 0.95 者。
- 参数表:
参数 值 说明 高斯数 / 瓦片 1e6 平衡质量 / 性能 SH 阶数 3 视图依赖外观 不透明阈值 0.005 密度控制剔除 匹配阈值 0.95 边缘 L2 范数
-
运行时渲染管线:
- 平铺生成:根据相机位置,动态组装 Wang Tiles 图(贪心算法,O (n) 时间)。
- 剔除:视锥体 culling + 屏幕空间剔除,保留 < 5% 高斯。
- Splatting:CUDA tile-based rasterizer,16x16 patch,深度排序 alpha 混合。
- LOD:远距离合并瓦片高斯(k-means 聚类,降至 10%)。
伪代码清单:
import torch
from gaussian_splatting import GaussianRenderer
class GSWT:
def __init__(self, tiles_dir):
self.tiles = load_gs_tiles(tiles_dir) # 50个GS模型
def render(self, camera_pose, resolution):
tile_map = generate_wang_layout(camera_pose) # Wang规则平铺
gaussians = assemble_gaussians(tile_map)
gaussians = cull_frustum(gaussians, camera_pose)
image = GaussianRenderer.render(gaussians, camera_pose, resolution)
return image
监控要点:
- 质量:PSNR>30,SSIM>0.95(验证集新型视图)。
- 性能:FPS>60@1080p,内存 < 8GB / 场景。
- 异常:瓦片冲突率 < 1%,否则回滚随机种子重训。
风险与回滚:瓦片多样不足致宏观重复 —— 增至 100 瓦片或混入噪声;训练爆炸 —— 梯度裁剪 1e-4,早停 patience=1e3。极限场景下,fallback 至纹理贴图 + GS 混合。
此方案已在原型中验证,支持无限森林 / 城市渲染,内存效率提升 5x。未来可扩展动态 GSWT,融入物理模拟。
资料来源:
- HN 讨论:https://news.ycombinator.com/item?id=42328492
- Yunfan Zeng 主页:https://yunfan.zone/
(正文约 1250 字)