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. Android超类

    android.test.AndroidTestCase    android写测试类的超类 android.database.sqlite.SQLiteOpenHelper   sqllite的超类

  2. Java爬虫工程师技能列表

    以下仅仅是自己一些粗浅认识.欢迎补充指正.欢迎进群交流! 掌握一半便能够熟练的开发爬虫玩了.自己正在努力中... 一.技能列表 1.掌握java.尤其编程网络部分:李刚的java基础至少看了三遍以上: ...

  3. CentOS 7 网络配置方法

    [root@zookeeper network-scripts]#  vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 输入以下文本: TYPE=Ethe ...

  4. 专题:php页面跳转方法

    php只有一种方法,利用JavaScript的window.location[和window.location.href效果相同]是一种方法,利用html的meta的Refresh是一种方法. 代码 ...

  5. Verify an App Store Transaction Receipt 【苹果服务端 验证一个应用程序商店交易收据有效性】

    转自:http://blog.csdn.net/saindy5828/article/details/6414014 1. 从Transaction 的TransactionReceipt属性中得到接 ...

  6. Android 布局简要范例

    Android的布局决定着实际的UI界面呈现情况,正是这些UI界面的组合与千变万化,才呈现出了各式各样的风格. 而这些基础的布局框架结构很重要,需要玩的很熟悉.我将以前参考的部分代码示例,所做的相关实 ...

  7. git学习笔记12-标签管理-版本

    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照 ...

  8. html bootstrap 表头固定在顶部,表列 可以自由滚动的效果

    该效果主要是依照 bootstrap 的一个样式,class="navbar-fixed-top"; 参考网址为:http://v3.bootcss.com/components/ ...

  9. Scrum Meeting---Seven(2015-11-2)

    今日已完成任务和明日要做的任务 姓名 今日已完成任务 今日时间 明日计划完成任务 估计用时 董元财 完成了服务器实现 5h 服务器与客户端连接测试 4h 胡亚坤 客户端与服务器端的通信 2h 客户端与 ...

  10. iOS - OC iOS 开发体系

    1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation ...