为什么在风格化移动项目中,mesh terrain 通常比 Unity terrain 更佳选择
Source: Dev.to
介绍
Unity 的内置 Terrain 系统功能强大,背后有多年工具支持:雕刻、绘制、植被、LOD、细节贴图。
但它是基于以下核心假设设计的:
地形是以平滑表面渲染的高度图。
当你的项目 不需要 平滑地形时,这一假设就会成为限制。
核心限制:高度图锁定的拓扑结构
Unity Terrain 本质上是一个高度图网格:
- 顶点密度直接取决于高度图分辨率。
- 整个地形的拓扑结构是统一的。
- 默认生成的法线用于平滑着色。
如果你想要 多面体低多边形外观,就必须与系统抗争。你可以在着色器中伪造平面着色,但:
- 大多数移动平台不支持几何着色器。
- 即使可用,性能敏感的项目也不适合使用它们。
于是出现了不匹配:
- 引擎假设地形是平滑的。
- 美术方向要求多面体几何。
正是这种不匹配促使我去探索 网格地形(mesh terrain)。
什么是网格地形?
网格地形系统 不 依赖 Unity 的内置高度图渲染器。相反,它:
- 从高度数据生成规则网格。
- 明确控制拓扑结构。
- 可以为每个三角形复制顶点,以保证硬边。
- 将多边形密度与高度图分辨率解耦。
使用网格地形,你可以:
- 保持真正的平面着色。
- 控制哪些区域多边形密集、哪些区域稀疏。
- 针对风格化或移动环境进行专门优化。
为什么这对移动平台重要
移动平台会放大这些限制:
- 几何着色器基本不可用。
- 过度绘制和片段成本非常关键。
- 均匀的高顶点密度会浪费性能。
网格地形方法能够:
- 明确分配三角形预算。
- 动态调整多边形密度。
- 在不依赖着色器技巧的情况下获得干净的多面体法线。
因此网格地形特别适合:
- 低多边形游戏
- 风格化环境
- 移动端和 VR 项目
- 需要可预测几何的项目
Polaris 的定位
这次探索最终演变成 Polaris,一个 针对 Unity 的网格地形系统,专为多面体和风格化环境设计。
Polaris 并不是对 Unity Terrain 的包装,而是:
- 将地形生成为网格几何体。
- 支持动态多边形密度。
- 设计上保留平面着色。
- 不依赖几何着色器。
- 面向需要拓扑控制的工作流。
简而言之,Polaris 的出现是因为网格地形能够解决高度图地形无法克服的问题。它不是在 Unity Terrain 上叠加的着色器技巧,而是一个以拓扑为先的地形系统。
权衡(因为总会有权衡)
Unity Terrain 仍有其优势:
- 成熟的生态系统。
- 内置植被和细节工作流。
- 对写实环境的强大工具支持。
对于面向桌面、追求写实平滑景观的项目,结合基于着色器的风格化仍然足够。
但当你的目标是:
- 明确的多面体几何
- 移动端兼容性
- 多边形密度控制
网格地形系统就成为更清晰的解决方案。
最后思考
网格地形并不是普遍 “比 Unity Terrain 更好”。它在以下情况下更合适:
- 几何风格比高度图便利性更重要。
- 需要真正的多面体着色。
- 关注三角形分布。
- 目标平台是移动端或性能受限的设备。
这正是 Polaris 所针对的空间。
如果你想了解从零构建网格地形系统的更长开发故事,我在这里写了原文: