http://blog.csdn.net/myarrow/article/details/42709113

1. 简介

1.1 TerrainComposer(TC)

一个Unity扩展工具,可用于创建AAA质量的Unity地形。

1.2 WorldComposer

是Unity3d扩展工具,可从现实世界中提取数据。它可以单独运行或作为TerrainComposer的扩展。

WorldComposer有一个独一无二阴影删除工具。卫星图像(它使用Microsoft卫星地图,因为Google卫星地图有Logo,而它没有)总是有阴影的,如果在游戏或模拟器中直接使用卫星图像,为配合此阴影,需要把太阳放在一个固定的位置。WorldComposer的阴影删除算法使效果看起来更好,且允许有白天和黑夜周期。

WorldComposer像Google地图一样提供滚动和缩放功能,你可以创建多个区域,每个区域显示真实世界的几公里。卫星图像可以导出到缩放级别19,每个像素的分辨率为0.3米。海拔数据可以导出到缩放级别14,这是每个像素的分辨率10米。
          WorldComposer仅输出海拔高度图(elevation heightmaps)卫星图像(satellite images),使用它就可以创建看起来像真实世界的地形。
          当于TerrainComposer组合使用时,可混合/修改高度图,或增加perlin噪点以增强细节,如把卫星图像与图片纹理进行混合,增加云的阴影等等。还可在上面放置树、草和对象,以进行无限制的调整和编辑。

1.3 RTP Relief Terrain Pack

主要是搭配Terrain Composer用来设置地形的材质 ( 是Unity中最好的Terrain Shader)

1.4 Ufs Flight Simulation Engine Forum

则是用来模拟空战游戏或是飞航效果。

2. 基本概念

2.1 Heightmap(高度图)

通常Heightmap高度图储存成Gray Scale Image也就是常说灰度图。越白该点就越高,纯黑表示最低点,纯点表示最高点。8位灰度图有256阶。16位灰度图有65536阶。如果依然精度不够用的话(例如绘制大型场景),那么可以使用标准的RGB位图来储存高度图,那么精度就是256的3次方=16777216阶。同理还可以再升为RGBA。 
      Heightmap可以用3D软件(Unity的地形也可以)来绘制,或者用Photoshop来绘制

高度图主要用在3个地方。

(1) 地形  Terrain

(2) 凹凸纹理 Bump Map

(3) 置换贴图 Displacement mapping

Unity3d自带地形编辑器,可以绘制地形。地形的起伏即高度信息可以用高度图(Heightmap)储存。 既可以导入raw后缀的HeightMap生成地形,也可以在Unity3d里绘制好地形导出raw后缀的Heightmap。HeightMap比起用3D地形模型节省很多储存空间。

2.2 烘焙(bake)

把物体模型放进场景之后, 引擎会计算光线,光线照到你的物体的表面形成反射和阴影。 如果不烘焙, 游戏运行的时候,这些反射和阴影都是由GPU和CPU实时进行计算。在执行烘焙之后,这些反射和阴影都记录到模型里了,变成了新的贴图,运行的时候,GPU和CPU不需要进行对环境光效果进行实时运算了。

2.3 着色器(Shader)

Shader是运行在GPU上的一段程序。

可以让程序员去通过编写代码去参与到GPU渲染图形的具体流程中去,去制作一些精美的特效和动画甚至是让模型发生奇怪的形变;简单点就是可以把它理解成一种对呈现到屏幕上画面的一种美化工具。

  编写Shader目前比较知名的是基于DirectX的HLSL和基于OpenGL的GLSL,而我们Unity用的ShaderLab是基于Nvida和Microsoft一同开发的CG(C for Graphic)语言,从名字上我们就能知道,只是一门类C的语言,如果你接触过C语言或者C++,甚至是JAVA,C#那对他的基本语法一定不会陌生。CG语言他是跨平台的,他可以基于OpenGL也可以DirectX来运行,也就是说他是工作在DX和OpenGL上层的抽象语言,这三种语言在某些具体方面可能有性能和扩展性上的区别,但是对于背后的实质技术并无过大区别。

  Unity3D使用的并不是完全的CG语言,从官方的API可知Shader分为三大类:

1)Fixed function shader(固定渲染管线 Shader):

现在已经很少使用,一般用来做默认处理,以一种固定的模式去处理渲染流程,但是他完全使用ShaderLab语法让你很简单的去修改一些参数,功能有限,很多Unity内置的默认效果用的是这个Shader。

2)Surface Shader (表面Shader):

这个Shader是Unity官方文档里用的最多的了,而且在国外很多的UnityShader学习教材里也很多用它来举例子,这个Shader其实和第三种已经很像了,只是不需要自己来写所有的片段着色器代码,Unity给你自带了很多封装好的,如果你想要自己写也可以,它与第三种最大的区别在于它的光照模型不能确定到底是外面哪个光源。另外在Surface Shader中的同一个SubShader中不可以使用多个Pass。

3)Vertex and Fragment Shader(顶点和片断Shader):  这类Shader很好很强大,顶点着色器和片段着色器完全由我们自己来控制,这样子我们就能最大化使用我们掌握的东西,当然这类Shader也是最需要时间学习的。

在一个shader中我们主要通过两个部分来参与渲染,顶点着色器(Vertex)和片段着色器(Fragment),他们两个参与的时机不同,VertexShader是在顶点变换的时候,而FragmentShader是在光栅化到将最终计算完成的像素值写入帧缓冲区。在VertexShader中我们可以对模型顶点实施一些坐标转换甚至形变,也可以通过计算和赋值把一些片元默认并不含有的属性带入FragmentShader来进行一些需要的操作。而在FragmentShader中我们可以做的就很多了,很多光照处理都是在这里进行的(当然在VertexShader中也可以进行光照计算,不过效果不是十分好),而且也可以做一些比较复杂的色彩变换和处理。

unity3d WorldComposer1 卫星地图生成地形的更多相关文章

  1. unity3d 随机生成地形之随机山脉

    利用Fractal Noise生成地形,再加上山体shader,外加雪shader Noise生成结果 noise 生成主要参考这篇文章,就不再赘述 Value3D: Perlin2D: Fracta ...

  2. 卫星地图下载软件WebImageDowns

    卫星地图下载软件WebImageDowns一款基于网络服务器的多线程卫星地图下载软件.支持多种网络地图.软件可以高速下载您所指定的任意经纬度范围的卫星地图,并可将所下载的卫星地图进行无缝拼接,使您可以 ...

  3. 关于google电子地图跟卫星地图位置不重合

    再做项目时,用到了google地图的显示位置,就是在网页上插入事物在地图上的位置,点击卫星地图跟电子地图时发现不是重合,网上GOOGLE了下,说是加密的问题给偏移了500米左右,用google测量工具 ...

  4. Unity3d导出场景地图寻路

    Unity3d导出场景地图寻路(金庆的专栏)Unity3d中用无渲染的透明盒子摆出地面和阻档区域.        this.renderer.enabled = false;所有这些盒子设为Navig ...

  5. 广州高清卫星地图 用百度卫星地图server下载 含标签、道路数据叠加 可商用

    广州高清卫星地图的地图展示图片各自是15级别.17级别.19级别的地图.一般来说17级别的地图图片就行用于商用.地图包包括一整张高级别的图片,如要全图浏览请用专业图片处理软件PS等打开. 一般来说互联 ...

  6. 在CAD中插入谷歌地球卫星地图

    本文主要介绍如何在CAD中插入谷歌地球卫星地图,作为参照光栅图像.谷歌地球卫星地图使用“迈高图-地图数据下载器”(以下简称:迈高图)下载.迈高图会给出相关插入参数(插入点和缩放比例),保证插入卫星地图 ...

  7. Unity3d 随机地图生成

    2D解析图: 3D地形: 嘿嘿.

  8. UE4/Unity3d 根据元数据自动生成与更新UI

    大家可能发现一些大佬讲UE4,首先都会讲类型系统,知道UE4会根据宏标记生成一些特定的内容,UE4几乎所有高级功能都离不开这些内容,一般来说,我们不会直接去使用它. 今天这个Demo内容希望能加深大家 ...

  9. 电子地图/卫星地图下载并转存为jpg图片

    1.下载水经注万能地图下载器破解版 http://download.csdn.net/download/hyb2012/8714725,此软件为绿色免安装且免注册 2.下载后解压缩后,运行sgwn.e ...

随机推荐

  1. ADO,NET 实体类 和 数据访问类

    啥也不说,看代码. --SQl中 --建立ren的数据库,插入一条信息 create database ren go use ren go create table xinxi ( code ) pr ...

  2. (4)Redis 资料

    Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景. Redis Home http://redis.io/ MSOpenTech/re ...

  3. django cycle标签

    django 模板系统 有很多标签,其中cycle我觉得不好理解,至少网上文档也不好理解. 这些标签可以通过渲染模板文件而获得我们预期的效果和文字,常用的有如下这些标签: 标签:{% 标签名 %}{% ...

  4. 如何重置CentOS/RHEL 7中遗忘的根用户帐户密码

    你有没有遇到过这种情况:想不起来Linux系统上的用户帐户密码?要是你忘了根用户密码,情况就更为糟糕.你无法执行任何面向整个系统的变更.要是你忘了用户密码,很容易使用根帐户来重置密码. 可要是你忘了根 ...

  5. 向sql server 导入数据库

    在sql server 中选择数据库.右键,还原数据库 选择源设备,点击添加,选中相应的数据库文件. 在目标数据库栏选择相应的数据库名称 点击下一步.

  6. 瞧,这就是UE4 C++

    1.虚幻中的类前缀你会见到U,A,F,以下就是很好的罗列其中的意义 U: UObject继承过来的,例如UTexture A: AActor继承过来的,例如AGameMode F: 其他的类和结构,例 ...

  7. Cheatsheet: 2013 06.01 ~ 06.22

    .NET Git for Visual Studio and .NET developers How to download multiple files concurrently using Web ...

  8. linux、windows下导入、导出mysql数据库命令

    一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构:[不是mysql里的命令]mysqldump -u用户名 -p密码 数据库名 > 数据 ...

  9. [转老马的文章]MODI中的OCR模块

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2012.07.02更新:2012.07.09补充非简体中文版内容 自从基于MODI的DjVuToy.FreePic2Pdf. ...

  10. Java开发中经典的小实例-(随机数)

    import java.util.Random;//输出小于33的7个不相同的随机数public class probability {    static Random random = new R ...