unity3d WorldComposer1 卫星地图生成地形
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 卫星地图生成地形的更多相关文章
- unity3d 随机生成地形之随机山脉
利用Fractal Noise生成地形,再加上山体shader,外加雪shader Noise生成结果 noise 生成主要参考这篇文章,就不再赘述 Value3D: Perlin2D: Fracta ...
- 卫星地图下载软件WebImageDowns
卫星地图下载软件WebImageDowns一款基于网络服务器的多线程卫星地图下载软件.支持多种网络地图.软件可以高速下载您所指定的任意经纬度范围的卫星地图,并可将所下载的卫星地图进行无缝拼接,使您可以 ...
- 关于google电子地图跟卫星地图位置不重合
再做项目时,用到了google地图的显示位置,就是在网页上插入事物在地图上的位置,点击卫星地图跟电子地图时发现不是重合,网上GOOGLE了下,说是加密的问题给偏移了500米左右,用google测量工具 ...
- Unity3d导出场景地图寻路
Unity3d导出场景地图寻路(金庆的专栏)Unity3d中用无渲染的透明盒子摆出地面和阻档区域. this.renderer.enabled = false;所有这些盒子设为Navig ...
- 广州高清卫星地图 用百度卫星地图server下载 含标签、道路数据叠加 可商用
广州高清卫星地图的地图展示图片各自是15级别.17级别.19级别的地图.一般来说17级别的地图图片就行用于商用.地图包包括一整张高级别的图片,如要全图浏览请用专业图片处理软件PS等打开. 一般来说互联 ...
- 在CAD中插入谷歌地球卫星地图
本文主要介绍如何在CAD中插入谷歌地球卫星地图,作为参照光栅图像.谷歌地球卫星地图使用“迈高图-地图数据下载器”(以下简称:迈高图)下载.迈高图会给出相关插入参数(插入点和缩放比例),保证插入卫星地图 ...
- Unity3d 随机地图生成
2D解析图: 3D地形: 嘿嘿.
- UE4/Unity3d 根据元数据自动生成与更新UI
大家可能发现一些大佬讲UE4,首先都会讲类型系统,知道UE4会根据宏标记生成一些特定的内容,UE4几乎所有高级功能都离不开这些内容,一般来说,我们不会直接去使用它. 今天这个Demo内容希望能加深大家 ...
- 电子地图/卫星地图下载并转存为jpg图片
1.下载水经注万能地图下载器破解版 http://download.csdn.net/download/hyb2012/8714725,此软件为绿色免安装且免注册 2.下载后解压缩后,运行sgwn.e ...
随机推荐
- 2016年11月18日 星期五 --出埃及记 Exodus 20:9
2016年11月18日 星期五 --出埃及记 Exodus 20:9 Six days you shall labor and do all your work,六日要劳碌作你一切的工,
- C# DataTable的详细用法
在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...
- 【leetcode❤python】387. First Unique Character in a String
#-*- coding: UTF-8 -*- class Solution(object): def firstUniqChar(self, s): s=s.lower() ...
- UVALive 6508 Permutation Graphs
Permutation Graphs Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit ...
- Using Text_IO To Read Files in Oracle D2k
Suppose you want to read a file from D2k client and want to store its content in Oracle database. Bu ...
- 502 Proxy Error The proxy server received an invalid response from an upstream server
Proxy Error The proxy server received an invalid response from an upstream server. The proxy server ...
- Beaglebone Black–智能家居控制系统 LAS - 用 UART 连接 ESP8266 (ESP-01 版)
这是一块便宜 (¥12.5)的 WiFi 模块,3.3V ,芯片是乐鑫科技(Espressif)出品.它本身是很多玩法,比如这个 NodeMCU (淘宝有套件焊接好一整套的带 USB 接口的,搜 es ...
- More Effective C++ (1)
简单分析总结了more effective c++ 的前十个条款: 剩下的条款to be continue~ 1.仔细区分指针和引用引用必须不能指向空,指针可以指向空,指针初始化是记得赋空值,重载某些 ...
- PHP爬虫抓取网页内容 (simple_html_dom.php)
使用simple_html_dom.php,下载|文档 因为抓取的只是一个网页,所以比较简单,整个网站的下次再研究,可能用Python来做爬虫会好些. <meta http-equiv=&quo ...
- SAP接口编程 之 JCo3.0系列(05) : Exception Handling
JCO3.0的Exception,常用的Exception如下: JCoException 继承自java.lang.Exception,是JCo3中Exception的基类. JCoRuntimeE ...