举荐:将 NSDT 场景编辑器退出你的 3D 工具链
3D 工具集:NSDT 简石数字孪生
https://www.mvrlink.com/unity3d-trees/
树可应用相似于绘制高度贴图和纹理的形式在地形上绘制树。然而,树是从外表成长的 3D 对象实体。Unity 应用优化(比方针对远处树的公告牌)来保持良好的渲染性能。这意味着能够实现茂密森林(领有数以千计的树),而依然放弃可承受的帧率。
有树的地形绘制树工具栏上的 Paint Trees 按钮可用于绘制树:
Paint Trees 按钮地形最后没有可用的树原型。为了开始在地形上绘制,须要增加树原型。单击 Edit Trees 按钮,而后抉择 Add Tree。在此处,可从我的项目中抉择树资源,并将其增加为__树预制件__以便与画笔联合应用:
Add Tree 窗口为便于进行原型设计,SpeedTree 在 Asset Store 上的收费 SpeedTrees 包 中提供了四种 SpeedTree 模型。或者,您也能够创立本人的树。如果所导入的树预制件反对 Bend Factor__,__Add Tree 窗口将显示用于调整风响应性的 Bend Factor 属性。SpeedTree Modeler 创立的树没有 __Bend Factor__;只有 Tree Editor 创立的树才有。请参阅下文对于__让树在风中蜿蜒__的局部。配置 Settings 中的设置(如下文所述)后,能够依照与绘制纹理或高度贴图雷同的办法在地形上绘制树。若要从区域中移除树,请在绘制时按住 Shift 键。若要仅移除以后选定的树类型,请在绘制时按住 Control 键。设置抉择要搁置的树之后,可调整其设置以便自定义树的地位和特色。
树的设置属性性能 Mass Place Trees 创立一批整体笼罩的树,但不绘制在整个地形上。批量搁置树后,依然能够应用绘制性能来增加或移除树,从而创立更密集或更稠密的区域。Brush Size 管制可增加树的区域的大小。Tree DensityTree Density 管制 Brush Size 定义的区域中绘制的树均匀数量。Tree Height 应用滑动条来管制树的最小高度和最大高度。将滑动条向左拖动绘制矮树,向右拖动绘制高树。如果勾销选中 Random,能够将所有新树的确切高度比例指定为 0.01 到 2 的范畴内。Lock Width to Height 默认状况下,树宽度与其高度锁定,因而始终会平均缩放树。然而,能够禁用 Lock Width to Height 选项,而后独自指定宽度。Tree Width 如果树宽度未与其高度锁定,则能够应用滑动条来管制树的最小宽度和最大宽度。将滑动条向左拖动绘制细树,向右拖动绘制粗树。如果勾销选中 Random,能够将所有新树的确切宽度比例指定为 0.01 到 2 的范畴内。Random Tree Rotation 如果为树配置 LOD 组,请应用 Random Tree Rotation 设置来帮忙创立随机天然的森林成果,而不是人工种植的完全相同的树。如果要以雷同的固定旋转来搁置树,请勾销选中此选项。Color Variation 利用于树的随机着色量。仅在着色器读取 _TreeInstanceColor 属性时无效。例如,用 Tree Editor 创立的所有树的着色器将读取 _TreeInstanceColor 属性。Tree Contribute Global Illumination 启用此复选框可向 Unity 批示树影响全局光照计算。创立树可通过两种办法来新建树模型。应用 IDV, Inc. 提供的 SpeedTree Modeler 来创立具备高级视觉效果(例如,平滑的 LOD 过渡、疾速公告牌以及自然风动画)的树。无关更多详细信息,请参阅 SpeedTree Modeler 文档。或者,应用 Tree Editor 来创立树模型。在外部,地形引擎通过确定树预制件的根游戏对象上是否存在 LOD 组来辨别这两种类型的模型。SpeedTree 预制件具备 LODGroup 组件,但 Tree Editor 预制件没有该组件。创立树时,将锚点定位在树的基部(树破土而出的地位)。性能取决于树模型的多边形数,因而请确保在平台上进行测试,并在必要时创立更简略的树。另外,对于 Tree Editor 树,每个网格都正好有两种材质:一种用于树体,另一种用于树叶。用 Tree Editor 创立的树必须应用__天然 / 软遮挡树叶 (Nature/Soft Occlusion Leaves)__ 和__天然 / 软遮挡树皮 (Nature/Soft Occlusion Bark)__ 着色器。要应用这些着色器,必须将树放在名为 Ambient-Occlusion 的特定文件夹中,否则树无奈正确渲染。将模型放入此文件夹并将其从新导入时,Unity 会应用一种专为树设计的形式计算软__环境光遮挡__。如果在独自的 3D 建模应用程序中更改导入的树资源,则须要单击 Editor 中的 Refresh 按钮来查看地形上更新后的树:
Refresh 按钮地位留神:在 3D 建模程序中导入并扭转 SpeedTree 模型后,再将其从新导出(扩大名为 .fbx 或 .obj),可能会失落 SpeedTree 模型附带的自然风动画性能。将碰撞体用于树能够将胶囊碰撞体 (Capsule Collider) 增加到树资源。首先,单击树资源旁的 > 以关上预制件。
而后,抉择 Add Component > Physics > Capsule Collider 来增加碰撞体。单击预制件名称旁的 < 以返回到场景。还必须在 Terrain Collider 组件中启用 Enable Tree Colliders。
让树在风中蜿蜒风区能够蜿蜒树木以模仿风的间接影响。此性能仅可用于通过 Terrain 菜单搁置的树。为此,请抉择地形,单击 Inspector 中的 Paint Trees 按钮,而后抉择 Edit Trees > Add Tree__,再抉择树预制件。如果未在 Unity 中创立树,请将 Bend Factor__ 设置为 1。单击地形以搁置选定的树。具备 Bend Factor 的基于地形树通过蜿蜒和摇晃(依据风区的 Turbulence 和 Main 属性值),对风区做出反馈。Turbulence 设置用于管制树叶的飘动。减小该值可使飘动特效晦涩。Main 值用于管制风的次要作用力。要创立风区,请抉择 GameObject > 3D Object > Wind Zone。如果风区的 Mode 为 Directional__,则其绝对于树的地位无关紧要。树将向风区方向摇晃。然而,如果风区的 Mode__ 为 Spherical__,则其 Radius__ 必须与树的半径重叠。这样会产生多方向的阵风,风力从核心到边缘衰减。在默认设置下,诸如阔叶树 (Broadleaf) 预制件(在 Standard Assets Environment 包中提供)之类的树能够安稳而真切地摆动。然而,如果您应用本人的树预制件,可能须要调整 Wind Zone 属性值。如果树预制件的树干彻底弯向一侧,请尝试减小 Main 值。或者,如果树预制件的树枝适度蜿蜒或舒展,请减小 Turbulence 值。树细节级别 (LOD) 过渡区对于树编辑器树,Unity 的 LOD 零碎应用 2D 到 3D 过渡区域将 2D 广告牌与 3D 树模型无缝交融。这能够避免 2D 和 3D 树忽然弹出,这在 VR 中至关重要。请留神,广告牌树木不会接管部分照明,例如点光源和聚光灯。它们应用定向光源,但广告牌上的照明仅在您旋转摄像机时更新。对于 SpeedTree 树,请参阅 LOD 和 LOD 组 (LOD Group) 文档以理解对于配置 LOD 组件的更多信息。