项目概述
这个植被项目覆盖一片温带混交林的近景区域,包含四种乔木、两种灌木与一套地表覆盖层。目标是让森林在中近距离同时具备照片级可信度与可控的性能开销,单株乔木的面数上限设定为 32,000。
与硬表面资产不同,植被的可信度来自“生长逻辑”而不是造型精度。整个流程的组织方式也据此调整:先确定物种与生长规律,再进入叶片与枝条的具体制作,最后在 SpeedTree 中完成组装。
参考与物种分析
参考阶段按物种建立档案,每个物种记录四类信息:叶片形态与尺寸区间、枝条分叉角度、树冠整体轮廓、树皮纹理特征。这些档案在后续制作中充当验收标准,任何偏离都需要有明确理由。
物种分析中最容易被忽略的一点是叶片的簇生方式:真实树木的叶片并不是均匀分布在枝条上,而是以簇为单位聚集,簇与簇之间存在明显的空隙。这个规律直接决定了后续叶片卡片的空间分布策略。
叶片制作
叶片贴图基于扫描素材处理,每片叶子输出三个通道:基础色、透光度与遮罩。透光度通道单独制作而不是从基础色推算,因为不同物种的透光差异极大,这是照片级植被最关键的一项数据。
叶片网格采用单面卡片加背面剔除,法线使用双面渲染修正。每张叶片图集承载 12 至 16 个叶片变体,包含健康叶、枯黄叶与破损叶三种状态,以支持季节与生长阶段的变化。
枝条结构与生长逻辑
枝条制作遵循从主干到末梢的分级逻辑:一级枝决定树冠轮廓,二级枝决定体积分布,三级枝承载叶片簇。每一级的分叉角度、粗细衰减与长度比例都在参考档案中有对应区间。
枝条分级的三项约束
- 一级枝数量控制在 7 至 11 根,避免轮廓过于平均
- 相邻分叉角度差不小于 25 度,防止出现规律性重复
- 末梢枝条必须朝光源方向偏转,形成自然的趋光读数
树皮材质与枝条共用一套平铺贴图,通过 UV 缩放差异区分粗糙度:主干使用大尺度缩放保留深裂纹,末梢使用小尺度缩放呈现光滑的年轻表皮。这个处理方式让整株树只占用一套贴图资源。
SpeedTree 组装
SpeedTree 中的组装从树冠轮廓开始,先放置一级枝确定整体形态,再逐级向下补充分叉与叶片簇。整个过程中持续开启剪影显示模式,确保树冠在任何角度都不会出现明显的空洞或过密区域。
叶片簇的密度按高度分布:树冠顶部密度最高且叶片尺寸偏小,中部密度中等,下部因光照不足而稀疏并带有更多枯黄状态。这种垂直分布是森林可信度的核心,也是性能优化的天然依据。
组装完成后进行 LOD 生成,四级 LOD 的面数比例设定为 100%、55%、28%、12%,叶片在第三级开始合并卡片,最远级退化为树冠整体代理网格。
材质与风
材质使用 Unreal 的 SpeedTree 着色器模型,透光度通过次表面散射近似实现,粗糙度按叶片年龄区分:新叶粗糙度低、表面反光明显,老叶粗糙度高并带有细微的蜡质衰减。
风的设置分为两层:主干使用低频大幅度摆动,周期在 6 至 9 秒之间;末梢与叶片使用高频小幅度抖动,并通过材质中的相位偏移避免整片森林同步摆动。同步摆动是最容易被识别的破绽。
植被的动效不需要精确的物理,只需要正确的频率差与相位差。
风动参数与材质分开调试:先让主干在最低风速下产生可见位移,再逐步叠加末梢频率,避免整体像刚体一样摆动。
引擎表现与最终效果
进入引擎后,森林通过植被绘制系统按密度图分布,乔木、灌木与地表覆盖层分三层管理。近景区域关闭 Nanite 而使用传统 LOD,因为叶片的透射与双面法线在 Nanite 路径下的表现仍不稳定。
最终的性能数据为:近景 40 株乔木加 120 株灌木,在 1440p 分辨率下植被渲染耗时约 3.1 毫秒,满足整体 16.6 毫秒预算的要求。密度分布与 LOD 距离是这个结果的主要贡献因素。
回顾整个流程,最重要的经验是把生长规律前置:当物种档案、枝条约束与垂直密度分布都被明确定义之后,SpeedTree 中的组装就从创作变成了执行,返工率大幅下降。