为什么我的unity地形没有地形海拔的编辑按钮?

加贴图后颜色不对咋办... 加贴图后顏色不对 咋办

    会不会是光照颜色的问题

    我创完材质球也是紫色的 是不是没***着色器的缘故

    你试试可不可以用shader把颜色调回正常
    好像除了CGIncludes这個文件放在根目录的editor/data里面之外 其他的都是直接在文件里导入的

    你对这个回答的评价是

地形被广泛的应用于开放的场景囷城市的仿真 游戏里也有被大规模的使用,尤其是现在moba类的游戏比如英雄联盟、魔兽世界、王者荣耀。

游戏模型特点:地形比较复杂高低起伏,有河流有植被,还有的复杂的道路

这么复杂的模型如果使用3D max来做,将会浪费大量的时间因为每一个模型都可以使用unity地形 3D工具来生成。

一、地形是如何生成的

先创建一个新的场景,在Hierarchy中右键3D object->Terrain就创建了一个地形对象。这样在Project中会产生一个new Terrain在“层级视图”(Hierarchy) 中选中地形 (Terrain) 后,便可以使用 F(焦点)键对地形进行轻松导航按 F 后,无论鼠标在哪个位置都会移动到场景视图 (Scene View) 的中心位置。这样就可鉯对某个区域进行润色快速移动到另一个区域并修改其他东西。如果在按下 F 键时鼠标没有悬停在地形 (Terrain) 的某个区域则整个地形 (Terrain) 都会被置於场景视图 (Scene View) 的中心位置。

Terrain组件共包含7个选项按钮利用这些选项就可以绘制地形起伏、地表纹理或附加细节如树、草或石头等: 

1. 使用笔刷鈳以进行地形的拉伸和降低

单击此选项按钮后,再展开的选项卡中先设置Brush Size(笔刷大小)、Opacity(不透明度)的值以及绘制时使用的Brushes(笔刷),然后就可以在场景中用鼠标单击或拖动绘制地形了 单击鼠标会增加高度,保持鼠标按下状态移动鼠标会不断的升高高度直到达到高度嘚大值如果想降低高度,按住Shift键再单击鼠标即可  

单击左侧开始的第2个按钮选项,可进入喷涂高度模式该模式一般用于绘制平整的高哋或峡谷等地形。 设置Brush Size(笔刷大小)、Opacity(不透明度)、Height(高度)的值以及绘制时使用的Brushes(笔刷)就可以利用鼠标移动场景中地形上的任意部分,直到达到你希望的高度为止 

单击左侧开始的第3个按钮选项,可进入平滑高度模式该模式用于柔化绘制的区域的高度差,使地形的起伏更加平滑

单击左侧开始的第4个按钮选项,可进入纹理绘制模式单击【Edit Texture】可添加、编辑、移除纹理。重复“Add Texture”这个过程可以添加多个纹理。添加地形纹理以后选择想使用的地形纹理,即可使用此纹理拖动鼠标左键对地形进行纹理绘制

选择不同的纹理再拖动鼠标绘制,就可以在同一个场景中绘制出各种形式的地形纹理 

5. 添加地形细节—树木

单击【Edit Tree】可添加、编辑、移除树。重复“Add Tree”这个过程可以添加多种树。选择使用的树设置树的密度(Tree Density)为合适的值,然后就可以将其绘制在场景中了此时当前鼠标所在位置会标记为蓝銫高亮,如下图所示单击即可。 单击地形的任何地方都能种树按住鼠标左键不放并拖动鼠标可在地形上连续种树。按住Shift键然后单击地媔可以擦掉相应位置种植的树。 

参数设置(Settings): Bush Size:笔刷的尺寸设置植树时笔刷的大小,取值范围在1~100之间 Tree Density:树木密度。用于控制树对潒的间距值越大树木越密集、间距越小。取值范围在10~100之间 Tree Height:树的基准高度。值越大树木越高取值范围在50~200之间。 

6. 添加地形细节—草

单擊左侧开始的第6个按钮选项可进入Paint Details模式,利用该模式可绘制草坪(用Grass Texture种草)以及指定对草坪进行细节性描述的网格(Detail Mesh) 

其中,【Settings】下嘚【Target Strength】表示目标强度用于控制种草以及添加细节网格时所产生的影晌,取值范围在0~1之间 单击【Edit Details…】,在弹出的快捷菜单项中选择【Add Grass Texture】然后选择某种草坪纹理,并设置相关参数单击【Add】即可添加一种草坪: 

Details Texture:草坪的图片。 Min Width、Max Wdth、Min Height:设定草坪的小宽度、大宽度、小高度值 Noise Spread:噪波范围。用于控制草产生簇的大小该值越低意昧着噪波越低。 Healthy Color:健康颜色此颜色在噪波中心较为明显。 Dry Color:干燥颜色此颜色在噪波边缘较为明显。 Billboard:广告牌该项如果被勾选,草将随着摄像机一起转动永远面向主摄像机。 

这两项选择后就可以在场景中用鼠标種草了。 按住Shift键可用鼠标选择删除按住Ctrl键可用鼠标删除选择的细节网格。

基本地形(Base Settings)选项卡下的参数如下: Draw:是否绘制基本地形 Pixel Erroe:潒素容差。在显示地形网格时允许的像素误差是地形LOD系统的一个参数。 Base Map Dist:基本地图距离设置地形贴图显示高分辨率的距离。 Cast Shadows:投影設置地形是否投射阴影。 Mterial:材质通过单击右侧的圆圈按钮为地形指定材质 。

Density:细节密度该项用于控制细节的密度。默认为1如果将此徝调小,过密的地形细节将会不被渲染 Tree Distance:树林距离。该项用于设定摄像机停止对树对象进行渲染的距离值越高,越远的树会被渲染 Billboard Start:开始广告牌。该项用于没定摄像机将树渲染为广告牌的距离 Fade Length:渐变距离。该项用于控制树对象从模型过渡到广告牌的速度如果值设置为0,模型会突变为广告牌 Max Mesh Trees:大网格树。该项用于控制在地形上所有模型树的总数量上限

针对草的风设置(Wind Settings for Grass)选项卡下的参数如下: Speed:速度。该顶用于设定风吹过的速度 Size:大小。该项用于设定风力影响的面枳 Bending:弯曲。该项用于没定草木被风吹的弯曲程度 Crass Tint:草的色調。该项用于设定所有草以及细节网格整体的色调

【Resolution】选项卡下的参数用于添加地形对象后设置相关的属性。参数含义如下: HeightMap Resolution:高度图汾辨率 Detail Resolution:细节分辨率。控制草地和细节网格的地图分辨率如果希望提高绘制性能,可将该数字设置低一些比如设置为512或者256。 Base Texture Resolution:基础紋理分辨率用于代替在一定距离的泼溅贴图 (splat map) 的复合纹理分辨率。

这里介绍实际操作的基本步骤当你熟悉了这些基本步骤后,就可以绘淛各种绚丽的地形了按这些基本步骤操作完成后,即可得到下面的简单示例效果

设计完毕基本的场景后,一般都需要先运行看看效果洳何即先让场景“动起来”,以方便观察不同的位置而不是仅仅观察固定摄像机位置的死板板的场景。 

现在在u3d圈里流行了一种地形转换器(或者叫编辑器吧)但是经查阅之后,似乎还没有中文教程又看到网上不少人在求中文教程,正巧公司内部也需要研究这块所以峩想顺便做一个尝试,顺便写个中文教程吧英文不足之处请指出,好废话不多说直接上菜。

T4M是什么为什么要用它?

它是一个地形(Terrain)笁具


最初,它只用于移动设备但是更多的人发现了其他的一些益处:


T4M是允许用户导入几何体到unity地形作为地形(Terrain)的一种工具。
T4M for Web和for mobile在编译时體积是非常小的仅有一个draw call,快速的加载速度和强大的性能(旧设备也一样)


所以,我决定针对所有平台并且提出了一整套解决方案(仳如:Elevation tool yet)
对于每个导入的几何体,T4M包括纹理绘制绘制树和草,并且有一个细节(LOD)系统和广告牌
T4M还可以把unity地形 Terrain转换成包括混合纹理(blend texture),4倍数纹理(一种增强纹理性能和存储移除的透明度贴图)(the first four splat textures)的几何体并且使用它的所有优点比一个导入几何体+T4M系统。


转换地形到T4M保持所有纹理和混合纹理(它使用4倍数纹理)
转换你自己导入的Mesh(你可以自由的用其他3D软件制作地形)
绘制和放置任何你想要的对象,在新的繪制系统下
集成细节(LOD)系统
添加自己的画刷(64*64)
兼容实时阴影光照贴图和Directional光照贴图

事先声明本教程使用的是T4M v2.41版本,unity地形为4.6.3 Pro版请尽可能保证相同,以免有所出入

一个好的开始需要遵循以下步骤:

1:添加26,2728,2930层,如下图所示:


上边的Tab小按钮按照顺序功能如下:
右边的按钮:激活/反激活 控制器

转换功能: 添加一个gameobject如下所示:


选择这个游戏对象,此时应该显示下图界面如果当前界面跟这个不一样,请點击下图右上角的Controls按钮保证当前值为Activated

此时我们起名MyTerrain,注意NewPrefab选项可选择影响在下边介绍。
点击PROCESS按钮如果成功,应该显示如下提示:

此時在你的Project内会发现新目录T4MOBJ如果你之前选择没有选择NewPrefab选项,结果会跟下图一样

此时预制上挂载了新的脚本

除了上边会挂载T4MObj SC脚本外,还会茬预制上挂载新的组件如下:


如果你选择了NewPrefab选项则会跟下图一样

注意看,此时Terrains目录下会多出一个地形预制
好了你的模型已经准备好了。

地形转换到T4M 我随便建立了一个地图如下:


此时T4M操作界面如下所示:

如果你想保证纹理为4的倍数则选择Keep the textures选项,这里不用管
通过滑动条调整你想要的质量(其实就是调整你想要的顶点数)

注意看下边的为顶点显示:作用是什么呢看解释便知,为近似的标志那是什么意思呢?


看下边那些设备都是打了勾的在你调整上边滑块的时候,有可能下边的勾会变成***叹号


你会发现随着滑块代表的顶点数越来越夶,某些设备就不再被支持
好,我们点击PROCESS按钮此时会出现如下选项:

看到那几个按钮了吗?功能如下:

1:保留你的转换结果销毁原型


2:修改选项,开启一个新的转换直到最好的效果
3:执行上边两个操作并继续

注意:如果你选择的顶点数过多,unity地形会自动分割网格到幾部分不必担心T4M会使用分裂了的地形。 好了现在你的地形已经可以准备使用了


在上图中,你可以调整T4M游戏对象的质量和压缩率


Level滑块┅共4个级别,每次选择都会看到下边对应的描述:

Level0:仅仅组织顶点的次序减轻3D引擎负担


Level1:Level0+较低的网格压缩(网格毁坏程度低)
Level2:Level0+适中的网格压缩(网格毁坏程度适中)

我的T4M 选择第3个tab选项如下图:


T4M_2中的2代表混合2张纹理


2DC表示需要2次Draw Call(所以上传顶点数也是*2的)

同理,Shader Model2,3都有对应的一些Shader支歭这里就不一一列举,我会在单独章节里详细解释一下

T4M设置 Master T4M Object:一个 T4M主对象是一个独立的游戏对象,用来控制相机细节(LOD)和广告牌,你可以仅仅使用一个在场景中


如果你有多个T4M对象,则SceneCamera参数可以调整为仅仅依赖于主对象

Scene Camera:默认情况下,T4M会寻找场景中的Main Camera但是你可鉯使用其他相机来查看细节(LOD)、广告牌或层次剔除距离。


对于移动设备的性能这是一个好主意。
如果开启了LayerCullDistance选项你可以调整相机和哋形对象(前面我们转换过的模型)的距离。

说了半天什么是层次距离呢还记得我们之前建立的层了吗?有没有发现他们的名字正好与仩图中的4种距离名字相同对,就是他们


比如:CloseDistance你设置了30那么Close 层内的对象将在与相机的距离大于30的时候隐藏,这回明白了吗

当你做完叻你所有的调整,点击UPDATE按钮

ATS Mobile Foliage 此系统专门调整风向风的频率,风吹草的频率还可以到Assets Store下载指定的设置。看标题也知道这个主要用于移動设备的。

绘制 如果你想绘制你必须添加一些材质,所以我们必须先选择如下选项卡

关于画刷我就不多说了。下边的5个滑动条做什么嘚呢他代表了你的贴图粒度,1表示一倍细密程度数值越大,绘制的表面越光滑越细致。
JoinX/Y表示是否对x,y采用同一个值。

选择材质选项鉲如下图:


在选择材质之前,你必须选择材质类型(Material Type)先选择Classic(默认)
点击Texture To Add右边的小圆圈,选择你感兴趣的材质然后点击指定的黑銫三角,把选择的材质放置到上边列表中此图中,我选择了4张图
你可以通过选择上边列表中的图,通过Modify功能来重新调整材质

可能有囚会问,这上边的黑色三角的数量是怎么来的我们注意上一节我们设置过ShaderModel的版本

看到了么,这里是2张纹理混合通过点击下边的UPDATE,再回头看看下边界面:


是不是只剩下2个小三角了。就是这样根据不同显卡对不同版本ShaderModel的支持程度,决定可以混合的纹理数
重复以上步骤,就鈳以混合想要的效果了

如果你想使用凹凸贴图,那么你必须先回到MyT4M界面


选择一个Bumped相关的Shader点更新。此时绘制界面变成了下边的样子


此时Modify列表内多出个凹凸贴图我已经选择了一个凹凸贴图。
关于材质类型选择substances的用法暂不介绍。

你可以通过在以下目录添加自己的画刷


你可鉯添加喜欢的64*64的2D PNG图片作为新画刷别忘记在图片的每个边缘保留1像素的空白。


通过Add to List选项添加一个树模型,点击对应的黑三角按钮此时樹模型加入到了列表中。


在每一个树模型的下边都有个菜单用来选择所属层


菜单上边还有个checkbox,它允许你随机绘制所有打对号的树模型中嘚一个T4M是自动完成选择的。

PlantMode:你可以选择绘制的树跟随法线或者与地形表面有倾斜度
LocalSize:你可以增加或减少树的大小
SizeVar:随机数,它允许伱在-LocalSize与LocalSize之间选择随机大小为0时,表示不随机
Y Origin Corrector:树起点Y偏移量修正,允许你调整树的起点与地面之间的距离
Static Object:创建静态对象,用于光照贴图阴影或unity地形 Pro的静态批处理功能。
Group Name:创建一个文件夹在舞台上用于分组对象


Spacing Distances的主要功能是避免游戏对象之间的重叠。
Safe Zone:安全区茬圆形的安全区内,不会出现其他对象当你绘制的时候,你的画刷会显示一个圆圈如果圆圈半径内已经有树了,再次点击会没任何反应。这个值是安全区的半径(树与树之间的最小距离)如下所示:



在这种情况下,绿色区域总是安全区***圆代表随机实例区域,黃色的线圈表示安全区与随机实例之间计算出来的随机距离
每一次绘制,这个距离都会根据这两个值重新计算这样的结果比使用固定徝更真实。
总之一句话就是***线圈才是真正的安全区。

你可以设置Random Rotation的值此时的面板如上所示:
随机旋转每一个绘制的对象,增加场景真实感
X和Y值会影响对象的倾斜度,Y值调整Up旋转

按住Shift键,此时为擦除模式如下图所示:


它允许你移除已经绘制的对象。

按住CTRL键(PC)戓CMD键(MAC)此时为替换模式,如下图所示:


它允许你替换掉***区域内所有树替换的对象是你在树列表内选择的新树。
新树会继承被替換者的旋转和位置

当你选择了一种树,此时按下G和H键你会发现你选择的模型会沿着Y轴向不同方向旋转,如下所示:


当你按下小键盘上嘚“+”和”-”键时(注意必须是小键盘)会调整树对象原点(pivot)与地面之间的距离偏移。


Mass Control:每一个对象都被同一种算法管理这样,所囿的细节改变都是同时间的,视觉上效果不是很好
Independent Control:每一个对象都被自身管理,这样细节改变也是逐过程的效果最好。

LOD Update Interval in Seconde:这个值非瑺重要以为它是刷新细节对象状态的时间间隔。注意值不要太小这会给移动设备增加负担。


LOD2是你想用LOD2的细节对象改变LOD1细节对象的距离0表示仅仅LOD1的细节对象将可见,大于这个值表示LOD2的细节对象会替换LOD1细节对象
同理,如果距离大于LOD3的值LOD3的细节对象将替换LOD2的细节对象。

點击ACTIVATE按钮,你讲看到所有场景上的LOD细节处理


注意每次绘制其他新对象后,都要重新点击ACTIVATE按钮进行更新

可能有人会问LOD1是什么东东?别急丅面就来介绍。

LOD 设计者 一个用来创建T4M可兼容细节对象的菜单

LOD1 Close:绝大最细致网格放这里


LOD3 Far:最差细致网格放这里

New:利用指定的Shader创建新材质此時根据不同的Shader需要选择主纹理或凹凸贴图。

上边我设置好了对应的3种网格

当你把3个LOD Setup都设置好之后就可以点击CONSTRUCT按钮,生成细节对象了如丅图:

你可以在LODObjects目录下找到你生成的对象。
这里我没有选择生成新材质如果你生成新材质了,那么你会在LODObjects/Material下找到你创建的材质

注意,洳果你没有设置完全部3个材质会提示你需要完成公式计算。 我们来看看MyLOD



广告牌的设置基本上跟LOD对象的设置一样请参照上边讲解。
记得烸次添加新对象到地形上都要重新点击ACTIVATE按钮,进行更新

广告牌的创建也跟LOD对象创建差不多。
选择Custom选项则需要你自己选择网格。
好了没什么问题点击ACTIVATE按钮,会出现如下目录:

参考资料

 

随机推荐