Gaea怎么将地形数据正确导入到Unity?

前面都讲了怎么画,没有写怎么贴图,上一篇提到了法线,今天这篇会说说平面图形的贴图。

我们完全按照第一篇的图形的顺序来进行贴图。

为了更好的观察,我们使用这张图片来进行贴图(可以右击保存):


三角形的贴图是最简单的,因为我们画的三角形就简单,直接根据点来选取:

首先说下贴图的坐标系:如下图


然后看我们的三角形的坐标:


理论上,我们直接舍去三角形Vertices坐标的z就可以了,然后贴图就应该是图中的黄色三角形内的区域,下面我们验证下:


可以看到和我们预想的一样。

正方形的贴图就比较简单了,直接是整张图片,就是把画正方形的四个点的z值舍去变成二维坐标就可以了。


圆的贴图,稍微复杂一点,涉及到坐标轴的转换,我们先说下逻辑思路:


从图片的讲解中就可以看到我们队x,y的处理,就是我们脚本中需要对我们的坐标进行的处理,好了代码如下:


是不是跟我们预想的一样,哈哈。

圆环的做法和圆的贴图取法是一样的:

不过我们需要取的半径是内圆的半径,不然就会重复贴图了。


就是取得贴图中的圆环部分。

总得来说,平面图形的贴图还是比好好理解的,你也可以试试其他图形的贴图

最后给出所有贴图的合照,哈哈


}

2、点击进入Asset的Editor文件夹里面,右键新建(create)一个"c#script", 把这个新建的cs代码改名为"ExportTerrain",双击它用文本编辑器打开,把本文附件txt中的代码复制进去,关闭,保存。
3、完成后,菜单栏会多出一个“terrain”选项,点它,就会有导出obj选项。过程中弹出关于api的对话框选是就可以了。

}
  • :这个项目提供了一个API文档,可以查看每个函数的含义,比起自己去看源码寻找,方便很多。此外,由于这个项目不提供源码,所以需要使用反编译dll文件。反编译的效果还是不错的,大部分代码是可以看懂的。

Unity Terrain是什么呢?它在窗口中看起来像一个Mesh,有很多的网格。


Mesh好理解,但是这个Texture是什么呢?

根据官方文档的以上描述,我们可以知道,Unity内部是用一个二维数组(rectangular array)来存储Terrain每个点的高度的。而每个点的高度又是从一张灰度图(heightmap)里采样的。

以左下角为原点,向右向上为正。如下图,白色正方体所在的位置为世界坐标系的原点。选中的Terrain在世界坐标系中,坐标和原点重合,position=(0,0,0)。可以看到,虽然移动工具在Terrain的中心,但是Terrain的左下角和position重合。


(2)将Terrain左下角的五分之一面积的高度设置为0

需要注意的是,即使是在运行时修改了Terrain的height,效果也是永久的,因为这里修改的实际上heightmap,图像已经改变。

3.如何获取道路模型的高度,以及需要修改的heightmap区域

答案就是使用Raycast!我们可以从heightmap上的每一个点发射一条射线,如果这条射线和road模型相交了,就可以得到交点处的坐标值。我们就可以将heightmap上的该点的高度设置为交点的y值了。

4.如何Smooth地形,使得高度变化不那么突兀?

}

我要回帖

更多关于 怎么把cad地形图导入su 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信