前面都讲了怎么画,没有写怎么贴图,上一篇提到了法线,今天这篇会说说平面图形的贴图。
我们完全按照第一篇的图形的顺序来进行贴图。
为了更好的观察,我们使用这张图片来进行贴图(可以右击保存):
三角形的贴图是最简单的,因为我们画的三角形就简单,直接根据点来选取:
首先说下贴图的坐标系:如下图
然后看我们的三角形的坐标:
理论上,我们直接舍去三角形Vertices坐标的z就可以了,然后贴图就应该是图中的黄色三角形内的区域,下面我们验证下:
可以看到和我们预想的一样。
正方形的贴图就比较简单了,直接是整张图片,就是把画正方形的四个点的z值舍去变成二维坐标就可以了。
圆的贴图,稍微复杂一点,涉及到坐标轴的转换,我们先说下逻辑思路:
从图片的讲解中就可以看到我们队x,y的处理,就是我们脚本中需要对我们的坐标进行的处理,好了代码如下:
是不是跟我们预想的一样,哈哈。
圆环的做法和圆的贴图取法是一样的:
不过我们需要取的半径是内圆的半径,不然就会重复贴图了。
就是取得贴图中的圆环部分。
总得来说,平面图形的贴图还是比好好理解的,你也可以试试其他图形的贴图
最后给出所有贴图的合照,哈哈
2、点击进入Asset的Editor文件夹里面,右键新建(create)一个"c#script", 把这个新建的cs代码改名为"ExportTerrain",双击它用文本编辑器打开,把本文附件txt中的代码复制进去,关闭,保存。
3、完成后,菜单栏会多出一个“terrain”选项,点它,就会有导出obj选项。过程中弹出关于api的对话框选是就可以了。
Unity Terrain是什么呢?它在窗口中看起来像一个Mesh,有很多的网格。
Mesh好理解,但是这个Texture是什么呢?
根据官方文档的以上描述,我们可以知道,Unity内部是用一个二维数组(rectangular array)来存储Terrain每个点的高度的。而每个点的高度又是从一张灰度图(heightmap)里采样的。
以左下角为原点,向右向上为正。如下图,白色正方体所在的位置为世界坐标系的原点。选中的Terrain在世界坐标系中,坐标和原点重合,position=(0,0,0)。可以看到,虽然移动工具在Terrain的中心,但是Terrain的左下角和position重合。
(2)将Terrain左下角的五分之一面积的高度设置为0
需要注意的是,即使是在运行时修改了Terrain的height,效果也是永久的,因为这里修改的实际上heightmap,图像已经改变。
答案就是使用Raycast
!我们可以从heightmap上的每一个点发射一条射线,如果这条射线和road模型相交了,就可以得到交点处的坐标值。我们就可以将heightmap上的该点的高度设置为交点的y值了。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。