2019-12-25 17:35:54 tangshenq17565 阅读数 14
  • unity3D-游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    13006 人正在学习 去看看 宋晓波

如何用通过Unity 3D生成真实地形

使用Unity3D制作真实地形的两种方法:

 

1、在SceneView中使用height tools直接绘制;

2、使用外部工具制作的heightmaps;

 

具体操作如下:

1、准备一块DEM数据,格式为img或tiff,并准备好Global Mapper和Photoshop两款软件;

2、在Global Mapper 14.1中文版中“文件”->“打开数据文件”,选择DEM数据文件,比如test.img,然后弹出对话框选“全是”;

image.png

打开后如图所示:

image.png

3、打开地形文件后,在工具栏下拉列表中选择“梯度渲晕”,在此列表框后面有一个“启用/取消晕渲”的按钮,我们需要取消渲染;

image.png

4、此时显示的是此dem数据的灰度图,如下:

image.png

我们可以导出这幅图;点击“文件”->“输出光栅/图像格式”,弹出对话框内选择JGP,然后点确定,又弹出一个框,还选确定,弹出下一个框。

image.png

5、在此对话框内设置jpg的属性;采样间距可以自己填写,值越小,图片经度越大,若不知道怎么选择可以先按默认值,后期看图片分辨率,根据需要在重设此参数,“图像品质”也可自行选择,而“光栅输出的带设置”中必须选择“灰度(1 8-字节带)”,下面的“生成世界文件”和“生成投影文件”可以不勾选,此文件对导入地形无关;

6、此时生成了一个“test.jpg”;我们用photoshop进行打开编辑;打开图片后选择“图像”->“画布大小”;单位选择像素,长宽值填写值需要是2的指数次幂比如1024或2048(我用的Unity版本中导入的图片大小貌视不能大于2048,否则会出错),这时我将宽度和高度均设置为2048(这里需要将长宽设置成一样值),点击确定;

image.png

7、导出raw文件;选择“文件”->"存储为",格式中选择raw,“保存”生成一个test.raw的文件;

image.png

8、打开Unity,在"Terrain"->"Create Terrain"中创建地形,然后点击“Terrain”->"Import Heightmap - Raw",导入刚生成的raw文件;

点击“设置”:

image.png

“Import Raw”在这儿:

image.png

9、在弹出对话框中进行设置,Depth选择8bit,Width选择2048,Height输入2048,ByteOrder根据自己的情况选择Mac或Windows,地形x,z先默认2000,y是高度,表示地形最高处的高度,我写200,直接点击“Import”即可以导入该地形;

10、如果原来地形有地貌,可以在Globalmap中使用地貌导出一张jpg文件作为Unity中可导入的纹理,按地形大小贴到导入的这块地形上。

这里的x,y要和之前地形的x,y大小保持一致才可以完整贴到地形上。

(PS:如果导入图片后发现图片和地形位置不对应可以在ps里对图片进行翻转和旋转等操作,进行调整)

2017-08-04 11:03:27 qq_35040828 阅读数 8417
  • unity3D-游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    13006 人正在学习 去看看 宋晓波

本方法是在http://blog.csdn.net/lingbaoer1234/article/details/45242371基础上进行操作,具体如下:

Unity3D手册中介绍了两种地形制作方法:

1、在SceneView中使用height tools直接绘制;

2、使用外部工具制作的heightmaps;

生成真实地形,需要用到heightmaps方法,具体操作如下:

1、准备一块DEM数据,格式为img或tiff,并准备好Global Mapper和Photoshop两款软件;

DEM下载地址:http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp

将全球分为24×72的大小格网。如下图所示:


然后在网页中选择要下载的区域,下载的格式有GeoTiff和ASCII两种格式,其中海洋部分没有高程数据,所以大部分是没有的。

 

2、在Global Mapper打开DEM数据文件,操作为中“File”->“Open Data File”,选择DEM数据文件,比如test.tiff,然后弹出对话框选“全是”;

 

3、打开地形文件后,在工具栏下拉列表中选择“Gradient Shader”,在此列表框后面有一个“Enable/Disable Hill Shader”的按钮,我们需要取消渲染;


4、此时显示的是此dem数据的灰度图,如下:


5、将图片到处为JPG,操作过程如下,在弹出的选择对话框中选择JPG:


6、在此对话框内设置jpg的属性;采样间距可以自己填写,值越小,图片经度越大,若不知道怎么选择可以先按默认值,后期看图片分辨率,根据需要在重设此参数,“Image Quality”也可自行选择,而光栅输出的带设置中必须选择灰度(1 8-字节带),下面的“World File”和“PRJ File”可以不勾选,此文件对导入地形无关;然后选择保存文件名即可;


7、此时生成了一个“test.jpg”;我们用photoshop进行打开编辑;打开图片后选择“图像”->“画布大小”;单位选择像素,长宽值填写值需要是2的指数次幂比如128、256、1024或2048(我用的Unity版本中导入的图片大小貌视不能大于2048,否则会出错),这时我将宽度和高度均设置为128(这里需要将长宽设置成一样值),点击确定;

注意:这里新建的画布大小最好比原来的要小,否则大的部分会被填充;



8、在PS中导出raw文件;选择“文件”->"另存为",格式中选择raw,“保存”生成一个test.raw的文件;

 


9、打开Unity,5.X版本的操作为创建地形:

     

10、在创建的地形中导入刚生成的raw文件;

     

然后选择前面生成的RAW文件;


 

11、在弹出对话框中进行设置,Depth选择8bit,Width和 Height选择你RAW像素大小,比如我的是128,ByteOrder根据自己的情况选择Mac或Windows,地形x,,是地形的大小,y是高度,表示地形最高处的高度,这些后面可以进行调整,最好成比例,直接点击“Import”即可以导入该地形;




12、如果原来地形有地貌,可以在Globalmap中使用地貌导出一张jpg文件作为Unity中可导入的纹理,按地形大小贴到导入的这块地形上。


这里的x,y要和之前地形的x,y大小保持一致才可以完整贴到地形上。

 

最后效果图如下:

 

 

(PS:如果导入图片后发现图片和地形位置不对应可以在ps里对图片进行翻转和旋转等操作,进行调整):



2009-07-26 00:10:00 lfhfut 阅读数 12103
  • unity3D-游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    13006 人正在学习 去看看 宋晓波

  Unity3D手册中介绍了两种地形制作方法:

  一、在SceneView中使用height tools直接绘制

  二、使用外部工具制作的heightmaps

 

 

  直接绘制地形很简单,不过只适合小面积地图的制作,对于真实游戏项目来说,这样拉地形实在太复杂,一般我们都会使用外部工具,比如PS,比如max来制作高度图,然后导出为一张灰度图,在引擎中将其转换为地形。


  Unity3D也支持了这种做法,即导入HeightMap的方式,不过对HeightMap的格式有一个限定,必须是16bit的RAW格式灰度图,但是除此之外手册中再没有更多的描述。


  没关系,Unity3D提供了将地形导出为HeightMap的方法,我们可以做一张小地图将其导出来,看一看就知道了。


  如下图所示,将地形长宽高都设定为2个单位,地形精度设定为33,这个数值是能够设置的最小值了。这样就表示在一个单位内会有17个高度值,即16条边。然后把这个地形导出为16bit Raw格式文件。



 


  按照上面的数据,这个raw文件将会由33 * 33个16bit数据构成,所以文件大小应为 16 * 16 * 2 = 2178字节。导出来的文件也确实如此,证明我们的推断是正确的。


  注意这里的Heightmap Resolution一定是2的n次幂加1,至于为什么会这样,找一个介绍HeightMap的文档看一下就明白了。


 

  既然验证了我们的推断是正确的,那试着在PS中创建一张HeightMap放到Unity3D中看看。我们创建的HeightMap大小为129 * 129象素,如果我们让一个Unity3D单位由4个象素点构成,那么地图大小则为 (129 – 1) / 4 = 32,即32 * 32,高度值不需要太大,高为12就够了。


  导入到Unity3D中后刷上一层Texture,再种上几棵树,最终的效果看上去是这样:


 


  还不错,其实我没这么好的艺术细胞,在PS里摆弄了半天后,还是决定到网上去找一张现成的HeightMap (囧)



  好了,场景制作应该不会有大问题了,下一步,看看怎么放两个会动的东西进去吧。

2013-08-26 11:29:19 Ralfkaka 阅读数 1231
  • unity3D-游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    13006 人正在学习 去看看 宋晓波
Unity3D手册中介绍了两种地形制作方法:
  一、在SceneView中使用height tools直接绘制
  二、使用外部工具制作的heightmaps
  直接绘制地形很简单,不过只适合小面积地图的制作,对于真实游戏项目来说,这样拉地形实在太复杂,一般我们都会使用外部工具,比如PS,比如max来制作高度图,然后导出为一张灰度图,在引擎中将其转换为地形。
  Unity3D也支持了这种做法,即导入HeightMap的方式,不过对HeightMap的格式有一个限定,必须是16bit的RAW格式灰度图,但是除此之外手册中再没有更多的描述。
  没关系,Unity3D提供了将地形导出为HeightMap的方法,我们可以做一张小地图将其导出来,看一看就知道了。
  如下图所示,将地形长宽高都设定为2个单位,地形精度设定为33,这个数值是能够设置的最小值了。这样就表示在一个单位内会有17个高度值,即16条边。然后把这个地形导出为16bit Raw格式文件。
unity3d中地形的制作 - 六道小U - =六道异次元之Ω空间=
 
 
按照上面的数据,这个raw文件将会由33 * 33个16bit数据构成,所以文件大小应为 16 * 16 * 2 = 2178字节。导出来的文件也确实如此,证明我们的推断是正确的。
  注意这里的Heightmap Resolution一定是2的n次幂加1,至于为什么会这样,找一个介绍HeightMap的文档看一下就明白了。
  既然验证了我们的推断是正确的,那试着在PS中创建一张HeightMap放到Unity3D中看看。我们创建的HeightMap大小为129 * 129象素,如果我们让一个Unity3D单位由4个象素点构成,那么地图大小则为 (129 – 1) / 4 = 32,即32 * 32,高度值不需要太大,高为12就够了。

 
2018-12-11 16:18:21 www2111 阅读数 297
  • unity3D-游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    13006 人正在学习 去看看 宋晓波

 

如何用通过Unity 3D生成真实地形

发布时间:2018-06-27 版权:

 

使用Unity3D制作真实地形的两种方法:

1、在SceneView中使用height tools直接绘制;

2、使用外部工具制作的heightmaps;

 

具体操作如下:

1、准备一块DEM数据,格式为img或tiff,并准备好Global Mapper和Photoshop两款软件;

2、在Global Mapper 14.1中文版中“文件”->“打开数据文件”,选择DEM数据文件,比如test.img,然后弹出对话框选“全是”;

image.png

打开后如图所示:

image.png

3、打开地形文件后,在工具栏下拉列表中选择“梯度渲晕”,在此列表框后面有一个“启用/取消晕渲”的按钮,我们需要取消渲染;

image.png

4、此时显示的是此dem数据的灰度图,如下:

image.png

我们可以导出这幅图;点击“文件”->“输出光栅/图像格式”,弹出对话框内选择JGP,然后点确定,又弹出一个框,还选确定,弹出下一个框。

image.png

5、在此对话框内设置jpg的属性;采样间距可以自己填写,值越小,图片经度越大,若不知道怎么选择可以先按默认值,后期看图片分辨率,根据需要在重设此参数,“图像品质”也可自行选择,而“光栅输出的带设置”中必须选择“灰度(1 8-字节带)”,下面的“生成世界文件”和“生成投影文件”可以不勾选,此文件对导入地形无关;

6、此时生成了一个“test.jpg”;我们用photoshop进行打开编辑;打开图片后选择“图像”->“画布大小”;单位选择像素,长宽值填写值需要是2的指数次幂比如1024或2048(我用的Unity版本中导入的图片大小貌视不能大于2048,否则会出错),这时我将宽度和高度均设置为2048(这里需要将长宽设置成一样值),点击确定;

image.png

7、导出raw文件;选择“文件”->"存储为",格式中选择raw,“保存”生成一个test.raw的文件;

image.png

8、打开Unity,在"Terrain"->"Create Terrain"中创建地形,然后点击“Terrain”->"Import Heightmap - Raw",导入刚生成的raw文件;

点击“设置”:

image.png

“Import Raw”在这儿:

image.png

9、在弹出对话框中进行设置,Depth选择8bit,Width选择2048,Height输入2048,ByteOrder根据自己的情况选择Mac或Windows,地形x,z先默认2000,y是高度,表示地形最高处的高度,我写200,直接点击“Import”即可以导入该地形;

10、如果原来地形有地貌,可以在Globalmap中使用地貌导出一张jpg文件作为Unity中可导入的纹理,按地形大小贴到导入的这块地形上。

这里的x,y要和之前地形的x,y大小保持一致才可以完整贴到地形上。

(PS:如果导入图片后发现图片和地形位置不对应可以在ps里对图片进行翻转和旋转等操作,进行调整)

没有更多推荐了,返回首页