读书频道 > 软件开发 > 其他综合 > Unity游戏开发实战(原书第2版)
3.2.3 绘制纹理
2015-11-30 15:59:55     我来说两句 
收藏    我要投稿   
这是一本介绍Unity引擎的书。它解释了Unity需要提供什么,以及不管你要用它做什么都会用到的一些Unity最佳实践。如果你是一名爱好者或者学生,你或许可以按部就班从第1章开始阅读。如果你想通过本书来判断Unity是  立即去当当网订购

当你对地形高度有了个基础的感觉之后,是时候开始添加一些颜色和细节了。在图形上涂上颜色与在地形上绘制高度的方式差不多:你将图块纹理上传到工具中,然后在场景视图中,使用相同的画笔和控制方式来将纹理直接涂在地形上。最快速的涂纹理的方式是使用标准资源包(Standard Assets)中提供的那些纹理。

提示 本书并不包含如何创建你自己的图块纹理的内容,但是网上有很多教程教可以学习。在附录D中,有一些链接和其他有帮助的教程。

本章开始的时候,当你创建项目时引入了地形资源包(Terrain Assets)。这个资源包中有一些预先做好的地形资源,所有这些资源都放在你项目中的标准资源(Standard Assets)文件夹下。在项目视图中展开标准资源文件夹,打开其中的地形纹理(Terrain Texture)文件夹,这个包中配有四个可用的纹理:两个草皮纹理、一个泥土纹理和一个演示悬崖面纹理。

由于纹理是涂在地形上面的,Unity实际上并不拷贝纹理细节,取而代之的是Unity会创建一个溅射图。溅射图会显示某个位置上四种纹理中每一种的含量。当Unity给地形创建纹理页面的时候,是分成四块的。这并不奇怪,因为标准的纹理是四种纹理的集合。例如,如果你有五种纹理,Unity还需要为第五种纹理而重新创建一个溅射图,并且会开放三个额外栏。基于这个原因,你可以尝试重做你的纹理,这样你就只需要四种纹理,或者创建另外三种纹理来使用可利用的空间。

在开始往地形上涂纹理的时候,确保地形在层级视图中已经被选中,然后在审查器中选择涂纹理(Paint Texture)按钮,这个按钮看起来像一个画笔。如图3.10所示。

这种模式与绘制地形高度模式的一个明显的区别是包含了纹理,以及与纹理相关联的编辑纹理(Edit Texture)按钮。点击这个按钮可以添加、编辑和移动可用纹理,将纹理涂在地形上。此外还可以点击该按钮,然后选择添加纹理(Add Texture)打开添加地形纹理对话框,如图3.11所示:

你需要做的第一件事是选择一个纹理,然后将其变成地形溅斑,方式有两种:点击方框,然后从窗口中选择一个纹理,或者从项目视图中拖曳一个纹理到纹理二维槽中。如果你选择前者,会列出你的资源文件夹(Assets)下所有可用的纹理(这也强调了命名约定的重要性)。你可能会发现直接从项目视图中找到纹理,然后拖出来会比滚动列表来得更加容易一点。
  
 
 

提示 这种类型的对话框在Unity中非常常见。这种对话框尝试给你一些有帮助的说明,解释期待的游戏对象是什么样的,比如是一个二维纹理(当前这种情况中)等。Unity不会让你给一个资源指定一个不能正常工作的类型,比如你不能将一个模型指定到纹理框中。

你还可以引入一个你已经有的普通地图,普通地图又称为块形映射(bump map),会引起亮点随场景中的灯光而出现在不同的角度。如果你正在研究一种反光很高的瓷砖或者金属面的话,这会很有用的。

对于你上传到地形的第一个纹理,你应该有点理解。在上传纹理的时候,Unity会在地形上铺上这种纹理,因此请确保这的确是你想覆盖在主要地形上的东西,不然的话你会发现自己在做很多无用功。选择一个草皮(小山上的)是一个很好的初次选择,然后将纹理块尺寸设置成适配地形的尺寸。尺寸较小,单独的一块纹理会很小,因此在地形上会重复很多块,如果尺寸较大,铺满地形需要的纹理块就会变少。纹理块的大小取决于你的纹理本身,小的可能只有4个单位大,大的可能有4096单位那么大。当前这种情况,用默认的15×15就可以了。当你完成之后,点击添加按钮(Add)。

提示 如果你把纹理铺到地形上之后,发现自己不喜欢这个纹理块的尺寸,你可以点击“编辑纹理”按钮(Edit Texture),或者在审查器中双击纹理来再次打开对话框,你可以修改纹理尺寸,直到满意为止。

现在你的地形已经是一片绿色了,可以通过添加其他三种纹理来在地形上面再加点花样。用和添加第一种纹理相同的方式,选择Standard Assets > Terrain Assets > Terrain Texture 文件夹。在审查器中点击一个非草皮纹理,选择一个画笔然后开始在场景视图中绘画,如图3.12所示。


 

一个好的经验法则是,从一个低透明度、低目标强度的纹理开始,把颜色一浅层一浅层地涂上去,直到你满意为止。如果你不喜欢,你可以随时撤销笔划,最好的地形都是很好的混合了多种纹理的,也就是说使用一些很薄的涂层。你还可以尝试一下不同种类的画笔形状,来更加简单地画一些不同形状。

事实上,你并不是在画纹理,而是纹理映射在地形上的透明背景图层。当你往地形中添加一种新的纹理时,Unity主要是在溅射图上创建了一个灰度纹理,和高度图非常类似。灰度图中的明暗表示的是高度值,而这里的明暗表示的是纹理应该被涂在哪里,这也是为什么你上传的第一个纹理会覆盖所有的地形,因为Unity将其默认值设置为全白,这就意味着纹理会覆盖所有的区域。每一种纹理都默认为黑色(或者完全透明),然后你需要慢慢画一些你想呈现的东西。

小贴士

在绘制高度图时,一个很有趣的技术是使用导入的纹理(比如 Google Map的抓图)来作为引导,导入一个纹理来作为地形溅射,然后确保纹理块的尺寸和地形尺寸完全一致,然后你可以使用纹理的颜色信息来作为手绘地形高度和具体信息的一个指引,然后基础颜色已经给你提供好了。

如果你角色自己控制不好纹理,可以检查一下地形设置工具(Terrain Setting)的分辨率设置(Resolution)中的控制纹理分辨率(Control Texture Resolution)设置。纹理分辨率尺寸小的话(比如512像素),可以节约存储空间,但是这种时候有一些很小的细节上可能不够精确。如果你觉得自己的纹理已经严重失真了,可以看看这个设置下面的基础纹理分辨率(Base Texture Resolution)设置。再一次提醒,分辨率较大的时候需要占用非常大的存储空间,容易影响性能。

提示 如果你觉得好玩,现在就可以用预先做的第一人称镜头来运行一下你的游戏。从标准资源(Standard Assets)中抓一个第一人称控制器资源(First Person Controller),放到场景视图中,确保是放在地形上的。然后点击“运行”按钮来开始游戏。你可以使用WASD和空格键来移动,移动鼠标来环视四周。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.2.2 用画笔绘制高度
下一篇:3.2.4 摆放树木
相关文章
图文推荐
Python语言及其应用
2.2.1 Java Buffer
3.9 OpenCL错误处理
3.6.3 查询和管理内
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站