zoukankan      html  css  js  c++  java
  • 关于Unity中地形的创建

    地形创建

    Raw图片格式是Unity可以导出的图片格式

    Unity很强大,可以直接使用psd文件

    地形创建实例

    1.创建Unity工程和文件目录
    1:创建一个地形Terrain: GameObject---> 3D Object-->Terrain;
    2: 这个节点包含了两个组件,Terrain和Terrain Collider;
    3: Terrain Collider 地形与物理引擎方面的组件,实现了地形的物理模拟,似的其他的挂载了物理碰撞器的物体能够与地形进行物理交互;
    4: Terrain Collider的参数含义:
      Material: 该地形的物理材质, 通过改变参数可以分别开发出像戈壁滩,软草地之类的效果;通过Create---->Physical Material来创建材质
      Terrain Data: 地形数据,用户存储该地形的地势以及其他的信息;
      Enable Tree Colliders: 开启树木参与碰撞检测;
    5: Terrain 组件中有一排按钮分别对应了地形引擎的各项操作和设置;

    地形高度的编辑

    Raise And Lower Terrain(拉高和拉低地形)

    1: Brushes: 画笔样式,使用不同样式绘制对应的地形;
    2: Brush Size: 画笔大小,其实际含义为画笔直径长度,单位为m;
    3: Opacity: 画笔透明度,值越大,调整的强度越大,反之越小;
    4: 点击和拖动鼠标可以使得鼠标点过的地方突起,拖动的同时按下shift,可以实现下凹的功能;
    5: 没有经过操作的是没有办法拉低的,水平面是动不了的;

    Paint Height(绘制地形高度)

    1: Brushes: 画笔样式。使用不同的画笔样式,可以绘制出相应样式的地形;
    2: BrushSize: 画笔的大小长度为米为单位;
    3: Opacity: 画笔的透明度,值越大,调整的强度越大,反之越小;
    4: Height: 制定高度值;
    5: Flatten: 使得整个地形的高度值都设置为指定的高度值,使得整个上移和下沉;

    Smooth Height(平滑地形高度)

    1: Smooth Height:在处理过程中某些地形比较突兀,山峰过于锐利,需要对地形做平滑处理
    2: Brushes: 画笔样式。使用不同的画笔样式,可以绘制出相应样式的地形;
    3: BrushSize: 画笔的大小长度为米为单位;
    4: Opacity: 画笔的透明度,值越大,调整的强度越大,反之越小;

    地形灰度图和导入地形高度图

    1: Unity将内置的地形引擎将地形的高度信息以灰度的形式保存到一张灰度图里面;

    2: 优点:   (1)存储空间小; (2) 和其他的地形工具配合使用;

    3: 灰度图的使用:

        (1) 打开Photoshop, 设置图片的宽度为33x33(1 + 32 * x, 当x = 1时为33);

        (2) 制作高度图片后,将图片保存为Raw的格式;

        (3) 点击上图所示按钮Terrain Setting---->Heightmap---->Import Raw,导入生成的Raw格式的灰度图terrain.raw(第59),查看效果;

        (4) 也可以把当前的地形导出高度图给其他的人使用Terrain Setting---->Heightmap---->Export Raw;

    地形纹理绘制

    Paint Texture(绘制地形纹理)

    1: 设置好地形的贴图,画笔经过的地方,都会将纹理贴到对应的地形上;

    2: Brushes: 画笔样式;

    3: Textures: 可绘制的纹理;

    4: BrushSize: 画笔大小;

    5: Opacity: 画笔透明度,值越大调整的强度就越大,反之越小;

    6: Target Strength: 画笔涂抹的强度值,改值得范围为0~1,代表了地形原来的混合比例;

    7: Unity也支持psd图片的格式(Photoshop的源文件格式),打包的时候会生成图片。方便了开发;

      要使用外界的地形纹理

        a.导入纹理贴图文件CliffAlbedoSpecular.psd和GrassFrond01AlbedoAlpha.psd到res文件夹下

        b.点击Paint Texture下的Edit Textures---->把psd图直接拖进框框里面

        c.新加入的纹理可以绘制地形

    Place Trees(种树)

    1: 可以通过涂画的方式来对树木进行种植,只要提供单个树目,就可以铺设;

    2: Place Trees 参数:

        Trees: 树木对象的预制体对象,可以网上下载或者导入自带的Environment资源包,然后Edit Trees管理预制体,这里只能是添加树的预制体;

        Brush Size: 画笔大小,单位为米;

        Tree Density: 植树密度,每次植树时参生树木的棵数;

        Tree Height: 树木的高度,可以指定也可以随机分配;

        Lock Width to Height: 是否锁定横纵比例,保持原始高度;

        Tree Width: 树木的宽度。

    Place Details(植草)

    1: 功能与Place Trees相似;

    2: Place Details 参数:

        Brushes: 画笔样式;

        Brush Size: 画笔大小,单位为米;

        Details: 纹理对象列表,可以点击Edit Details管理,这里是添加草的纹理,也可以添加草的网格。

        Opacity: 画笔的透明度, 值越大,强度越大;

        Target Strength: 画笔的涂抹强度,该值的范围为0~1。

    地形设置
    TerrainSettings

    1: Draw: 是否显示地形;
    2: PixelError: 像素误差,地形的绘制精度,值越大细节越少;
    3: Base Map Dist 基础图距, 当与地形距离超过该值时,则以低分辨率来显示,就是摄像头近的时候地形网格变密集,远的时候网格变稀疏,等于这个距离参数;
    4: Cast Shadows:是否进行阴影投射;
    5: Materials: 材质类型:标准Standard,漫反射Diffuse,高光Specular,自定义Custom(自己指定材质);
    6: Reflection Probes: 反射探头的类型:关闭Off,Blend Probes混合探头,Blend Probes And Skybox混合以及天空盒探头,Simple一般;
    7: Tickness:物理引擎中该地形可碰撞的厚度;
    8: Draw: 是否显示花草树木;
    9: Bake Light Probes For Tree: 烘培光照探头到树木上;
    10: Detial Distance: 细节距离,与相机间的细节可见的距离值,超过这个值摄像机不显示到屏幕;
    11: Collect Detail Patches: 进行细节补丁的收集;
    12: Detail Density: 细节的密度程度;
    13: Tree Distance: 树木的可视距离;
    14: Billboard Start: 标志板的起点,以标志版形式出现的树木与摄像机的距离;标志版就是只拿一个纹理贴图,没有Mesh网格,但是它永远正对摄像机,看起来就像3D物体一样,既达到效果,又提高性能。
    15: Fade Length: 渐变长度;
    16: Max Mesh Trees:允许出现的网格类型的树木的最大数量;
    17: Speed: 风吹过草地的风速;
    18: Size: 模拟风能影响的范围;
    19: Bending:草被风能吹弯的程度;
    20: Grass Tint: 草地总着色量的值;
    21: Terrain Width/Height/Length 地形的宽度/高度/总长度;
    22: Heightmap Resolution地形灰度值(高度)的精度;
    23: Detial Resolution: 细节精度值,越大,细节越精细;
    24: Detial Resolution per patch: 每小块地形设置的精度值;
    25:Control Texture Resolution: 将不同的纹理插值绘制到地形上时设置的精度值;
    26: Base Texture Resolution:在地形上绘制基础纹理时采用的精度值;

    27:Heightmap:导入地形和导出地形

  • 相关阅读:
    【iOS CocoaPods篇】iOS CocoaPods一些特别的用法 指定版本、版本介绍、忽略警告
    【iOS CocoaPods篇】iOS 10.10 10.11 10.12 安装升级CocoPods
    iOS程序中的内存分配 栈区堆区全局区(转)
    retain和strong、assign和weak的区别(转)
    (ios实战):retain,copy,assign及autorelease ,strong,weak(转)
    malloc()与 alloc()区别 (转)
    iOS开发--KVC&KVO
    iOS开发之支付功能概述(转)
    disptch_after 自递归
    makeObjectsPerformSelector 方法的用法
  • 原文地址:https://www.cnblogs.com/HangZhe/p/7265709.html
Copyright © 2011-2022 走看看