Terrain
Create Neighbor Terrains(创建相邻地形)
Raise or Lower Terrain(地势升高或降低)
Creating Terrain Layers(创建地形图层)
Terrain Layer properties(地形层属性)
Using Colliders with Trees(使用碰撞器结合树)
Make Trees bend in the wind(使树在风中弯曲)
Casting and receiving real-time shadows(投射和接收实时阴影)
Tree and Detail Objects(树和细节对象)
Building Your First Tree(建造你的第一棵树)
Hand Editing Branches and Leaves(手动编辑树枝和叶子)
Unity提供了一系列工具,让你可以创建环境特征,如地形和植被。
Terrain
要添加一个地形游戏对象到你的场景,从菜单中鼠标右键-> 3DObject->Terrain。这也为Project视图添加了相应的地形资源。当你这样做时,景观最初是一个大而平坦的平面。地形检查器窗口提供了许多工具来创建详细的景观特征。
地形编辑工具在Inspector
工具栏提供了五个选项来调整地形:
- 创建相邻的地形瓷砖。
- 雕刻和绘制你的地形。
- 添加树木。
- 添加一些细节,比如草、花和石头。
- 添加一些细节,比如草、花和石头。
选择画笔图标来访问绘画工具,它允许你修改地形。使用光标雕刻地形的高度,或在地形上绘制纹理。从几个内置的画笔形状中选择,或者使用纹理定义自己的画笔。你也可以改变笔刷的大小和不透明度(应用效果的强度)。一旦你定义了属性,你的光标就会变成选中的画笔的形状。单击或拖动地形来创建不同的形状和纹理。
类似于你如何用画笔在地形上作画,你可以添加纹理、树木和细节,如草、花和岩石。您还可以创建额外的连接地形瓷砖,改变整个瓷砖的高度,甚至编写复杂效果的自定义画笔。
Create Neighbor Terrains(创建相邻地形)
创建相邻地形工具允许您创建相邻的地形瓷砖,在Inspector中,点击创建邻近地形图标。
在场景中可以看见有这些绿色框框,一片一片的东西,当我们鼠标点击他们的时候就会自动创建一个Terrain。
启用Fill Heightmap Using Neighbors复选框,用交叉混合的相邻地形贴图的高度贴图来填充新的地形贴图的高度贴图,这确保了新贴图边缘的高度与相邻的贴图匹配。什么意思呢,当我们点击创建出来新的Terrible
从“ Fill Heightmap Address Mode ”下拉菜单中选择一个属性,以确定如何交叉混合相邻瓷砖的高度图:
- Clamp:Unity执行一个交叉混合的高度沿着相邻的地形瓷砖的边缘,与新瓷砖共享一个边界。每个地形贴图最多有四个相邻的贴图:上、下、左、右。如果在四个相邻的空间中任何一个都没有瓷砖,则沿各自边界的高度被取为零。(创建一个普通的地形)
- Mirror:Unity对每个相邻的地形贴图进行镜像,并交叉混合它们的高度贴图来生成新贴图的高度贴图。如果四个相邻空间中的任何一个都没有瓷砖,则该特定瓷砖位置的高度为零。(可以看见当我们点击的时候,创建了一个镜像地形,但是高度不一样)
要创建新的Terrain贴图,请单击现有贴图旁边的任何可用空间。编辑器在与选定地形相同的组中创建一个新的地形贴图,并复制它所连接的贴图的设置。它还创建了一个新的TerrainData资产。
默认情况下,Unity在地形贴图的地形设置中启用自动连接。当Auto Connect被启用时,Terrain系统自动管理相邻Terrain tile之间的连接,并且一个tile自动连接到具有相同分组ID的任何邻居。
在极少数情况下,如果更改了Grouping ID,或者禁用了一个或多个tile的Auto Connect,可能会丢失tile之间的连接。要重新创建Terrain tiles之间的连接,请单击Reconnect按钮。重新连接只连接两个相邻的磁贴,如果它们具有相同的Grouping ID并且两个磁贴都启用了Auto Connect。
在组中连接地形瓷砖允许您使用其他工具来绘制纹理或调整组的高度图,以便没有接缝。在运行时,地形系统会自动混合连接瓷砖的镶嵌和法线贴图。这确保了它们看起来像一个单一的地形,没有接缝或人工制品。
如果你试图在一个笔触中绘制两个不相连的贴图,Unity会将它们视为独立的贴图,所以你所应用的任何效果可能只出现在一个贴图上,或者在每个贴图上显示不同。
Terrain tools
要访问地形绘制工具,单击层次窗口中的地形对象并打开Inspector窗口。在Inspector中,单击绘制地形(画笔)图标以显示地形工具列表。
地形组件提供了六个不同的工具:
- Raise or Lower Terrain:用画笔工具绘制高度图。
- Paint Holes:隐藏部分地形。
- Paint Texture:应用表面纹理。
- Set Height:将高度图调整为特定值。
- Smooth Height:平滑高度图以软化地形特征。
- Stamp Terrain:在当前高度图的顶部加盖一个笔刷形状。
Raise or Lower Terrain(地势升高或降低)
使用升高或降低地形工具来改变地形贴图的高度。
要访问该工具,请单击Paint Terrain图标,然后在下拉菜单中选择 Raise or Lower Terrain。从调色板中选择一个笔刷,然后单击并将光标拖动到地形对象上,以提高其高度。点击并拖动同时按住Shift键降低地形高度。(点击左键来调整高度;按住shift键并左键点击降低。)
Brush Size:使用画笔大小滑块或者快捷键[控制笔刷增大,]控制笔刷变小来控制工具的大小,以创建不同的效果,从大的山脉到微小的细节。
Opacity:当你将画笔应用到地形上时,不透明度滑块决定了画笔的强度。不透明度值为100将画笔设置为全强度,而值为50将画笔设置为一半强度。
使用不同的笔刷来创建不同的效果。例如,用软边笔刷增加高度来创建起伏的山丘,然后用硬边笔刷降低某些区域的高度来切割陡峭的悬崖和山谷。
你也可以使用高度图来编辑地形的高度。有关更多信息,请参见Working with Heightmaps。
Paint Holes(绘画洞)
使用Paint Holes工具隐藏部分地形。它允许你在地形中绘制洞口,如洞穴和悬崖。
要绘制孔洞,单击并拖动光标穿过地形。要清除地形上的洞,按住Shift键点击并拖动。(左键点击画一个洞。按住shift键并左键删除它。)
Brush Size:使用画笔大小滑块来控制工具的大小。
Opacity:当你将画笔应用到地形上时,不透明度滑块决定了画笔的强度。
在内部,Unity使用纹理来定义地形表面的不透明度蒙版。当你使用油漆孔工具在地形上绘画时,它会修改这个纹理。因此,只有当您使用的地形材料剪辑或丢弃基于此蒙版的纹理时,您绘制的任何孔才可见。
因为这个工具使用了纹理,你可能会看到你绘制的洞周围有混叠的边缘,因此,例如,当你制作一个洞穴时,你可能会选择用其他几何形状(如岩石网格)隐藏洞的混叠边缘。
地形洞工作与 lighting, physics, and NavMesh烘烤。Unity在你绘制洞的地方丢弃地形信息,以确保精确的照明、地形碰撞器和烘烤的navmesh。
为了支持物理碰撞器,孔的掩膜纹理的分辨率等于地形的highightmap -1的分辨率。
Paint Texture(绘画纹理)
将选定的材质层绘制到地形纹理上
要配置这个工具,你必须首先点击编辑地形图层按钮来添加地形图层。你添加的第一个地形层用配置好的纹理填充地形。你可以添加多个地形层。然而,每个贴图支持的地形层的数量取决于你特定的渲染管道。有关更多信息,请参阅Rendering performance section on Terrain Layers。
接下来,你必须选择画笔进行绘画。笔刷是基于纹理的资源,它定义了笔刷的形状。从内置的画笔中选择或创建自己的,然后调整画笔的大小和不透明度(应用效果的强度)。
最后,在场景视图中,单击并拖动光标穿过地形来创建平铺纹理区域。您可以跨瓷砖边界绘制,以混合相邻区域的自然,有机的外观。但是要注意,地形系统会将选定的地形层添加到您绘制的任何地形上,这可能会影响上面提到的性能 。
Set Height(设置高度)
左键点击设置高度。按住shift键并左键点击采样目标高度。
当你使用设置高度工具绘制时,它会降低地形当前高于目标高度的区域,并提高低于目标高度的区域。设置高度对于在场景中创建平坦、水平的区域非常有用,例如高原或人造特征,如道路、平台和台阶。
从“Space”下拉菜单中选择一个属性,以指定高度偏移量是相对于“Local”空间还是“World”空间。
- World:选择此选项可将高度偏移量设置为在“高度”字段中输入的值。但是,请注意,设置高度工具不能将地形降低到其变换位置Y坐标以下,即使您输入的值低于Y坐标。当我们没有设置Terrain高度的时候是无法减低高度的,下面是将Terrain提高了400的地形,它可以降低最低也是最初的位置。
- Local:选择此选项以设置相对于地形的高度偏移量。例如,如果在Height字段中输入100,则高度偏移量是地形的变换位置Y坐标和100(
terrain.transform.position.y
+ 100)。您输入的高度值必须从0到地形设置中的地形高度值。
在“Height”字段中输入数值,或使用“Height”属性滑块手动设置高度。或者,按Shift并单击地形以采样光标位置的高度,类似于您在图像编辑器中使用滴管工具的方式。
如果您按下Height字段下的Flatten Tile按钮,它会将整个Terrain Tile调平到您指定的高度。这对于设置一个凸起的地面水平是很有用的,例如,如果你想让景观既包括地面水平以上的山丘,又包括它下面的山谷。如果你按下Flatten All按钮,它会将场景中所有的地形贴图调平。
“Brush Size”值决定了要使用的画笔的大小,而“Opacity”值决定了你要绘制的区域的高度达到设定的目标高度的速度。
Smooth Height (光滑的高度)
平滑高度工具平滑高度图和柔化地形特征。在地形检查器中,选择绘制地形,并从地形工具列表中选择平滑高度。
平滑高度工具平均附近区域,软化景观,减少突然变化的外观;它不会显著升高或降低地形高度。在你用含有高频图案的画笔作画后,平滑是有用的。这些笔刷模式倾向于在景观中引入尖锐,锯齿状的边缘,但是你可以使用平滑高度工具来软化这种粗糙度。
调整模糊方向值来控制要软化的区域。如果你将模糊方向设置为-1,该工具会软化地形的外部(凸)边缘。如果你将模糊方向设置为1,该工具会软化地形的内部(凹)边缘。为了均匀地平滑地形的所有部分,将模糊方向设置为0。什么意思呢,就是如果是-1的话,平滑就会向下降低平滑,同理如果是1的话就是向上提高平滑,0则是不变。
“Brush Size”的值决定了要使用的画笔的大小,而“Opacity”的值决定了工具使你正在绘制的区域平滑的速度。
Stamp Terrain
如果您使用纹理(表示具有特定地质特征(如山丘)的高度图)创建自定义刷,则Stamp Terrain非常有用。(左键点击将画笔印在地形上按住控制键和鼠标滚轮调整高度,按住shift键反转印章。)
使用Stamp Terrain工具,你可以选择一个现有的画笔,然后点击一下就可以应用它。每次单击都会将地形提升到所选画笔形状的设置图章高度。若要将图章高度乘以百分比,请移动不透明度滑块以更改其值。例如,“Stamp Height”为200,“ Opacity”为50%,则将每个Stamp Height设置为100。
Stamp Height不同
Max <–> Add滑块允许您选择是选择最大高度,还是将Stamp的高度添加到地形的当前高度。
- 如果你将Max <-> Add值设置为0,然后在地形上盖章,Unity会将你的印章的高度与盖章区域的当前高度进行比较,并将最终高度设置为更高的值。(可以看见我们点击创建的山丘是无法在已经有的上面添加到顶端的,就是无法将创建出来的山丘增高只能创建出一个新的比他更高的)
- 如果你将Max <-> Add值设置为1,然后在地形上盖章,Unity将你的印章的高度添加到盖章区域的当前高度,因此最终的高度是两个值的总和。 (可以看见当1时就可以继续增高)
启用“Subtract”复选框,以从已盖戳区域的现有高度减去应用于地形的任何戳记的高度。注意,只有当Max <-> Add值大于零时,减法才有效,例如,如果您设置Max <-> Add值为1。如果邮票的高度超过了邮票区域的当前高度,系统将高度调整为零。
Terrain Layers
地形层是定义地形表面质量的资源。地形层包含地形材料用于渲染地形表面的纹理和其他属性。因为地形层是资产,你可以在多个地形贴图上重用它们。
你可以在地形的表面添加纹理来创建颜色和精细的细节。地形游戏对象通常很大,所以最好使用带有纹理的基本地形层,在表面平铺并无缝地重复。你可以使用多个地形层,每个都有不同的纹理,来建立有趣的,不同的地形表面。
你应用到地形上的第一个地形层自动成为基础层,并覆盖整个景观。您可以使用其他地形层绘制区域以模拟不同的地面表面,例如草地、沙漠或雪。为了在草地乡村和沙滩之间创建一个渐变的过渡,你可以选择应用可变不透明度的纹理。
Creating Terrain Layers(创建地形图层)
- 在地形工具叠加中,选择材质模式材质模式工具显示在地形工具叠加的最后。
- 在地形工具覆盖的可用材料模式工具中,选择“绘制纹理”
- 在工具设置叠加中,选择编辑地形图层。
当你选择Create Layer时,Unity打开select Texture2D窗口。在这里,选择要用作地形层漫反射通道的图像。要为地形层分配法线贴图或蒙版贴图纹理,请在项目视图中选择相应的地形层&