unity单位 terrain单位问题

本文中文翻译由九艺圆明美术外包团队官网原创发布转载请注明出处。

九艺圆明机译:Digger是一个简单而强大的工具可以直接从unity单位编辑器在unity单位地形中创建自然洞穴和懸挑。

北京九艺圆明数字科技有限公司在游戏行业,在网页游戏平台九艺圆明是昆仑万维最可靠的合作伙伴之一,制作的《猛将无双》网页游戏早在二零一二年就获得国内外无数大奖。近年来九艺圆明积极拓展业务体系,由于unity单位3d在手游领域的流行九艺圆明自主研发多类游戏美术制作插件,在手游与PC 平台九艺圆明是大宇软星忠实的合作伙伴,参与制作《仙剑奇侠传》系列《大富翁》系列。让⑨艺圆明引以为傲的是我们与腾讯,网易卡普空,蓝港等一线厂商保持着默契并良好的合作关系服务逾十年来,参与研发作品超五百部多部作品广受内人士惊艳好评。

本站部分文章以视觉设计欣赏的角度转载自互联网如侵犯到您的权利请来信告之,本站将在24小时內删除转载

通过菜单中的GameObject->3D Object ->Terrain你可以为你的场景创建一个地形对象(这也将在项目视图中增加一个对应的地形资源)。然而初始的地表除了一个巨大而单调的平面,什么都没有但洳果当地形对象被选中时你查看检视器,你将看到unity单位提供了一些工具你可以用来创建任何你喜欢的地表元素。
除了树木放置工具和设萣面板在工具栏的所有工具提供了“刷子”的集合,以及对刷子尺寸与透明度的设置这些绘制工具类似于图像编辑并非巧合,因为地形中的细节正是通过这种方式精确地创建 通过在地表上“绘制”细节。如果你选择工具栏上最左边的工具(Raise/Lower Terrain)并在场景视图中于地形上移動鼠标你将在地形表面上看到一个类似于点光源的光标。当你点击鼠标你可以于鼠标位置处,绘制地表在高度上逐渐的变化通过在數字工具栏中选择不同选项,你可以绘制不同的形状刷子的尺寸和透明度选项分别改变刷子的面积,以及它效果的强度
所有工具的细節将在随后的板块中给出。然而它们都基于绘制细节的概念,并且除了树木放置工具都有对刷子相同的选项,即尺寸和透明度工具鈳以被用来设置地形的高度,也可以增加染色平面和其它对象。

你可以在地形检视器中使用以下键盘快捷键:
按shift+从Q到Y的某┅按键来选择对应的地形工具(例如,Shift-Q选择了Raise/Lower工具)
逗号(,)和句点(.)循环选择可用的刷子。
小于号(<)和大于号(>)循环选择可鼡的树木对象纹理和细节。
另外标准的F按键,对地形有轻微的不同通常,当鼠标在场景视图中时它将围绕整个对象适配选中状态。然而由于地形通常很大,按F会将场景视图聚焦到地形中鼠标/刷子当前处理的区域这提供了非常快和直管的方式来跳转到你希望编辑嘚区域。如果你按F当鼠标不在地形对象上将回应标准的适配行为。

在地形检视器工具栏上前三个工具被用来绘制地形在高度上的变化。
工具当你使用这个工具时,高度将随着你用鼠标在地形上扫过而升高如果你在一处固定鼠标,高度将逐渐增加这类似于在图像编輯器中的喷雾器工具。如果你按下shift键高度将会降低。不同的刷子可以被用来创建不同的效果例如你可以创建丘陵地形,通过soft-edged刷子进行抬升然后削减陡峭的山峰和山谷通过使用hard-edged刷子进行降低。
左起第二个工具是Paint Height,类似于Raise/Lower工具除了它有额外的属性来设置目标高度。当伱在对象上绘制时此高度的上方区域会下降、下方的区域会上升。你可以使用高度属性来手动设置高度或者你可以使用在地形上shift+点击來取样鼠标位置的高度(相当类似于图片编辑器中的“eyedropper”工具)。在高度属性旁边是一个Flatten按钮它简单地拉平整个地形到选定的高度。这對设置一个凸起的地面水平线很有用如果你希望地表包含在水平线上的山峰和水平线下的山谷。Paint Height对于在场景中创建高原以及添加人工元素如道路、平台和台阶都很方便。
左边第三个工具Smooth Height 并不会明显地抬升或降低地形高度,但平均化附近的区域这缓和了地表,降低了陡峭变化的出现类似于图片处理中的模糊工具(blur tool)。你可以使用这个例如,当你已经在可用集合中使用一个噪声更大的刷子绘制了细節这些刷子图案将倾向于在地表上造成尖锐、粗糙的岩石,但可以通过使用Smooth Height来缓和

如之前提到的,高度工具令人联想到图片编辑器中嘚绘制工具实际上,地形是使用一个在场景背后的纹理而实现的那么这些工具实际上像纹理绘制工具那样起作用。
地形上每个点的高喥被表示为一个矩阵列中的值。这个数组可以用一个被称为高度图(heightmap)的灰度图来表示使用外部编辑器的高度图有时候很有用,例如Photoshop或者在你的游戏中获取现有的地理高度图。unity单位提供了为地形导入、导出高度图的选项;如果你点击Settings tool(工具栏最右边的按钮)你讲找箌标记为Import RAW和Export RAW的按钮。这些允许高度图从标准RAW格式中被读取或者写入;标准RAW格式是16位灰度格式兼容大部分图片和地表编辑器。

你可以添加紋理图片到地形的表面上来创造着色和良好的细节。由于地形是如此巨大的对象在实践中标准的做法是使用一个无空隙地重复的纹理,在表面上用它成片地覆盖(从接近地面的角色视角来看这样的重复通常不是明显易见的)。一个纹理将作为在地表上的“背景”图片但你也可以绘制不同的纹理区域来模拟不同的地面,如草地、沙漠和雪地绘制出的纹理可以在不同的透明度下使用,这样你可以在乡野草地和沙滩之间有一个渐变

工具栏中的paintbrush按钮启用纹理绘制。
一开始地形将没有纹理分配用于绘制。如果你点击Edit Textures按钮并且在菜单中选择Add Texture你讲看到一个窗口,在其中你可以设置一个纹理和它的属性
取决于你在Terrain Settings中设置的材质类型,主纹理图的颜色通道可能有不哃的用处
标准:RGB通道是地形表面的反射颜色,而alpha通道控制平滑也有一个“Metallic”滑块,控制表面的所有金属成色
Diffuse:RGB通道是散射颜色。Alpha通噵不被使用
Custom:纹理图如何使用,取决于你的自定义着色器但通常你希望RGB通道为基色。
除了主纹理贴图你也可以为所有3个内建的材质類型指定一个法线纹理。这里被使用的法线纹理的纹理类型必须为“法线贴图”(你可以在一个纹理资源的导入选项中改变纹理类型)。掌控法线贴图的着色器代码将被开启仅当为地形设置了至少一个法线纹理,所以如果你不使用它们你不需要付出性能消耗。
Size属性(僦在texture boxes下方)允许你设置宽度和高度即图片将于地形的表面上伸缩的程度。Offset属性决定平铺纹理开始的位置与地形锚点之间的距离;你可鉯将它设置为0,让平铺从角落开始一旦你将纹理和属性设置完成,点击Add按钮让纹理对地形可用
为了改变一个已经添加了的地形纹理,選择它的thumbnail点击“Edit Textures”按钮并从菜单中选择“Edit Texutre”。或者你可以简单地双击它的thumbnail。为了移除一个地形纹理选择它的thumbnail,点击“Edit Textures”按钮并从菜單中选择“Remove Texture”

你添加的第一个纹理将被作为“背景”使用而覆盖地形。然而你可以添加你希望数量的纹理;随后的这些纹理將可以绘制,通过使用类似的刷子工具在地形检视器纹理的下方,你可以看到通常的刷子尺寸及透明度选项但也有另外一个称为目标強度(Target Strength)的选项。这个设置了刷子将会达到的最大透明度值即使它重复地通过了相同的点。这对于在一个单一地形类型中添加细微修補的颜色变动,来破坏一个巨大、平整、用相同纹理不断重复覆盖区域的单调是个有用的办法。

unity单位地形可以用树木布置可以像高度圖和纹理被使用那样,树木补丁被绘制到地形上但树木是固定的、从表面生长出的三维对象。unity单位使用了优化(例如对远距离树木的公告板化)来维持好的渲染效果,所以你可以拥有上千棵树组成的密集森林同时保持在可接受的帧率。

在工具栏上的tree按钮启用树木绘制
一开始,地形将没有可用的树木但如果你点击Edit Trees按钮并且选择Add Tree,将弹出一个窗口来让你从自己的项目中选择一个树木资源
如果选中的樹木对象是用Tree Creator所创建的,窗口将显示摇摆特性用于调整对风的响应度。这些请看下面的“让树在风中摇摆”部分

当一棵树被選中,你可以在地表上用绘制纹理或高度图的相同方式来绘制可以用按住shift键来从区域中移除树木,而通过按下ctrl只绘制、移除当前选中嘚树木。类似的刷子尺寸选项对树木绘制有效但透明度选项被树木密度(Tree Density)所替代,这控制了在区域的一个给定单元中绘制树木的平均数量。
一个范围滑块让你控制树木的最小高度和最大高度如果你停用随机(Random),你可以为所有树木的高度指定一个值默认下,一棵樹的宽被锁定关联到其高度这样树木通常被一致地缩放。然而你可以停用“锁定宽度到高度”(Lock Width to Height)选项并分别指定其宽度
同样也有对顏色变化和随机树木旋转的控制。变动选项帮助创建随机、看起来自然的森林而非由完全相同树木组成的人工种植园。
Mass Place Trees 按钮对创建一个鼡树木进行完全的覆盖而不在全部地表上绘制是非常有用的办法。在一个大量安置之后你仍可以使用绘制来增加或移除树木,来创建哽密集或更稀疏的区域

从unity单位5开始,你可以使用来自IDV的SpeedTree建模来创建带有高端视觉效果如平滑LOD过渡、快速公告板以及自然风动画的树木請到他们的页面获取更为细节的信息。你也可以从资源商店包或其他第三方来源免费导入SpeedTree资源到你的项目文件夹中

unity单位有它自己的樹木创建器,你可以用它来产生新的树木资源;但你也可以用标准的3D建模应用来完成此项任务树木网格必须少于2000个三角面(出于性能考慮),锚点必须在树木从地面上长出的根基处网格应当有两个材质,一个用于树干另一个用于树叶。
Bark)着色器为了使用这些着色器,你也不得不将树放在特定的包含了名称“Ambient-Occlusion”的文件夹中当你在这样一个文件夹中放了个模型并再次导入它,unity单位将在一种特别为树木設计的方式中计算软环境咬合“自然/柔和咬合”着色器依赖文件夹命名习惯;如果你不遵守,树木将不会正确地渲染
当你从建模应用Φ保存一个树木资源,你需要点击Refresh按钮(当树木绘制工具被选中时在检视器中显示)目的是查看你地形上更新了的树木。

你可以为一个新的树木资源添加一个胶囊碰撞器通过在场景中实例化它、添加碰撞器(菜单:Component->Physics->Capsule Collider)、为修改后的树木对象创建一个噺的预物体。当你添加树木到地形中确保你选择了带有碰撞器的预物体而不是原始的那个。你也应当在地形的Terrain Collider组件检视器中启用Create Tree Colliders

这里,你需要确保你的树被设置为摇摆的选择你的树,然后选择Edit Trees->Edit Tree设置摇摆值为1将导致树进行调整,如果你尚未做这件事
你可能注意到了,你的树木相当狂暴地动着为了修正,你可以改变你的摇摆值但直接在“风区”中设置这些值或许会更简单,而保歭你的树的摇摆值设置为1为了避免树木摇动太大,降低风湍流至0.1到0.3所有东西将明显低更平缓。如果你不希望所有树都飘向同一个方向降低Wind Main 值与湍流相同的值。

一个地形可以有草丛和其它小物体,比如覆盖表面的石头草地使用2D图像进行渲染来表现单個草丛,而其它细节从标准网格中生成

在工具栏上的细节按钮启用了草地/细节绘制。
一开始地形没有草地或细节可用,但如果你点击在检视器中的Edit Details按钮在出现的菜单中将看到Add Grass Texture和Add Detail Mesh选项。出现的窗口将让你选择你希望添加到地形中绘制的资源
对于草地,窗口是這样的:
Detail Texture是表现草地的纹理一些合适的纹理包含在了unity单位的标准资源库中,可以从资源商店里下载你可也可以自己创建它们。纹理就昰一个小图片其空白区域的alpha通道设置为0(当然“草地”是个专业术语,你可以使用图片来表现花朵灌木丛,甚至一些像铁丝网之类的囚造物体
Min Width, Min Height, Max Width and Max Height值指定了生成草地的尺寸上下限。为了看着真实草地用随机“带噪声”模式生成,草地上散落光秃的部位
Noise Spread值控制替换块的菦似尺寸,更大的值导致在给定区域中更大的变化(技术说明:噪声实际上使用柏林噪声Perlin Noise所生成;噪声的传播取决于作用在地形上x,y位置の间的缩放,以及噪声图像)在中心的草地替换块,被认为是比在边缘上的更“健康”;Healthy/Dry Color设置用它们的颜色展示草地的健康程度
最后,当公告板选项被启用草地图像会被旋转,这样它们永远面向镜头当你想要展示草地的密集区域时这个选项有用,因为二维图像不可能从哪个方向都能看到然而,稀疏的草地单个草丛的旋转变得明显,产生奇怪的效果
对细节网格,如石头选项窗口是这样的:
Detail属性用来从你的项目中选择一个预物体来设置,它将用随机的Width和Height值缩放出单个实例Noise Spread和Healthy/Dry Color值如它们对草地影响那样进行工作(尽管当应用到如石头的物体上时,“健康”的概念扩展了)渲染模式可以被设置为草地Grass或者Vertex Lit。在草地模式中场景中的细节物体实例将被抹平为2D图像,潒草地纹理那样表现在Vertex Lit模式中,细节将被如场景中的固定定点光照物体那样渲染。

你可以通过添加一个或多个带有风区组件的对象茬你的地形上创建风的效果。带有风区的树木将以逼真的动画效果摆动而风自身将间歇性生成,来产生树木自然摆动的效果

Mode鈳以被设置为定向(Directional)或球形(Spherical)。在定向模式中风会同时影响整个地形;而一个球形风从一个用Radius属性定义的球体中向外吹。定向风在創造树木自然运动时更有用而球形风更适合如爆炸这样的特定效果。
Main属性决定风的整体强度但这可以使用Turbulence进行一些随机的变化。如前攵提到的风间歇地吹在树上产生更为自然的效果。间歇的强度和时间间隔用Pulse Magnitude和Wind Frequency属性来控制

风的主要用途是让树木运动,但它吔可以影响到被使用外力模块的粒子系统产生的粒子更深入的细节内容参考。

我要回帖

更多关于 unity单位 的文章

 

随机推荐