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. Form1是父,form2是子,2的出现(覆盖在1的上面)不耽误1的操作

    //在form1的点击事件中 form2 f2=new form2(); f2.owner=this;//很重要 f2.show();

  2. Android BroadcastReceiver广播接受者

    静态注册 配置清单表注册:只要曾经注册过哪怕关闭也能调用  方式一:sendBroadCastReceive   广播的步骤:       发送  无序广播,普通广播       (1).发送方    ...

  3. 求解数组环中最大子数组和的问题(java)

    //石家庄铁道大学 信1405-1 班 唐炳辉 在上一次作业中,对于普通数组的最大子数组的求解问题的基础上,将普通的数组变成一个首尾相接的环,求这个环的最大子数组.类似的,只要改变普通数组的数组位置, ...

  4. 02scala基础

    1.数组操作 1.定长数组:val nums = new Array[Int](10) val s=Array("tom","lisi") *在jvm中,Sca ...

  5. Cheatsheet: 2015 03.01 ~ 03.31

    Web The Architecture of Algolia's Distributed Search Network No promises: asynchronous JavaScript wi ...

  6. linux unzip命令

      zip文件是一种常用的压缩文件格式,WinZip.WinRar等压缩软件都支持zip文件格式,就连java的jar包也是zip格式的,Firefox插件xpi文件也是zip格式的.Linux在zi ...

  7. HDU 5810 Balls and Boxes(盒子与球)

     Balls and Boxes(盒子与球) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

  8. jQuery 预习视频

    1.事件补充 <input type="button" onclick="CheckAll('#edit_mode','#tb1');" value=&q ...

  9. CSS笔记(一)CSS规则

    CSS是层叠式样式表(Cascading Style Sheets)的缩写,定义了如何显示HTML元素. CSS规则由两个主要的部分构成:选择器 + 一条或多条声明. 每条声明由一个属性和一个值构成. ...

  10. 异步上传图片,光用jquery不行,得用jquery.form.js插件

    异步上传图片,光用jquery不行,得用jquery.form.js插件,百度一下下载这个插件,加jquery,引入就可以了 <form id="postbackground" ...