本文内容
未来的工作
对于任何有兴趣进一步发展地形系统的人来说,地形系统都有许多可以改进的地方。您可以通过 Discord 上的 #sig-content 频道与 O3DE 社区联系,讨论任何地形改进或想法。我们很乐意提供帮助!
大规模改进
这类改进需要架构解决方案,以提供广泛的新功能。
支持 3D 几何图形
无论是通过体素、位移贴图、网格摄取、光线追踪还是其他技术,都可以将应用程序接口和渲染器扩展为使用全 3D 方法,而不是基于高度场的方法。这将使系统能够支持洞穴、拱门、悬崖几何以及其他垂直或重叠地形特征,而这些特征是纯粹的高场方法所无法支持的。
应用程序接口扩展可能包括重新定义当前的应用程序接口,以提供出现在给定查询输入位置下方的最高海拔地形数据,然后添加更多的应用程序接口,以提供存在于给定查询位置或其下方的_所有_地形数据。
GPU 计算支持
地形系统建立在梯度组件之上,而梯度组件的所有计算都在 CPU 上进行。然而,GPU 可以以更优化的方式执行类似的批量计算。对支持 GPU 端计算的梯度系统进行全面检查或更换,可以将地形系统的性能提高几个数量级。需要注意的主要问题是,CPU 仍需要向物理、广义光线投射和其他系统提供数据,而且在 GPU 功能有限或不具备 GPU 功能的设备(低端手机、无头服务器等)上仍有可能使用地形系统。
附加功能
这类改进可逐步添加到系统中,而不会从根本上改变系统目前的运行方式。
三角形分割方向
目前,地形总是以相同的统一方向对每个四边形进行三角剖分。可以用启发式方法为每个四边形选择最佳方向。甚至可以采用多种启发式方法:每个四边形相同的方向、每个四边形交替的方向或基于顶点高度的每个四边形最佳选择。这一决定应在地形系统级别进行控制,以便向地形调试器、地形物理、地形渲染、地形光线投射等提供一致的信息。
改进形状到高度的工作流程
目前,直接从原始形状组件创建地形高度有些不直观。最好的选择是使用Shape Falloff Gradient或Surface Altitude Gradient,但这两种方法都存在问题。Shape Falloff Gradient根据形状与方框底部的距离创建落差,而不是根据形状的世界位置创建落差,因此很难控制。表面高度渐变不支持落差,自动刷新也不起作用。可以改进这两个组件中的任何一个,或者添加一个新的组件,以便更轻松地将具有落差的形状放置到世界中,并将其转化为高度渐变。
遮罩/混合
在Terrain Layer Spawner和Terrain Macro Material添加控制,允许对每个图层进行遮罩和混合,而不是完全替换数据。这样就能更轻松地为弹坑等创建小型地形 “印记”。
一流的 “洞 ”支持
现在可以通过创建一个没有地平面的高优先级地形层生成器来创建孔洞,无论孔洞的大小如何。不过,如果能有额外的创作控制,可以直接将洞放入渐变数据中,或者通过第二个 alpha 通道,或者通过Terrain Height Gradient List 组件上的单独渐变,那就更好了。
改进地形纹理
在地形纹理中增加一些功能会更好:
- Decals - 既有用于表面标记的印记,也有可沿样条线方向重复的纹理,或用于路径和道路等形状的纹理。
- Parallax Occlusion Mapping (POM) 支持 - 改善小表面细节的照明。
- Triplanar mapping - 改进垂直表面纹理的应用。
网格混合
任意网格应能通过高度、颜色和表面混合 “植入 ”地形表面,以帮助网格与地形更完美地融合。