《Unity开发实战》——3.5节创建透明纹理贴图

《Unity开发实战》——3.5节创建透明纹理贴图

大家好,又见面了,我是全栈君。

本节书摘来自华章社区《Unity开发实战》一书中的第3章,第3.5节创建透明纹理贴图,作者 (爱尔兰)Matt Smith (巴西)Chico Queiroz,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.5 创建透明纹理贴图
如果想让玩家的视线穿透一个物体,则需要透明或半透明的材质。塑料薄膜、剪贴画、网格等人工产品是可以用透明纹理贴图制作的。

3.5.1 准备工作
本节会创建一个材质来模拟塑料薄膜,选它的主要原因是这种材质允许我们使用全透明制作边框的rounded borders,也可以使用半透明显示薄膜(film)本身。本节其余部分假设读者已经能够使用图片编辑器创建图片,比如一张有斜面的圆角矩形图片。如果不会操作,随时使用示例代码中名为“0423_03_04”的文件夹中的准备材料。

3.5.2 操作步骤
请按照下面的步骤创建透明材质:
1)创建一个纹理,命名为:slideMaterial。
2)选择此材质。在Inspector视图中,在材质的名称下,使用下拉菜单把Shader的值修改为Transparent/Diffuse(透明/漫反射):
3)用图片编辑器打开基础纹理(本节用Adobe Photoshop讲解下面的步骤)。
4)选择圆角矩形周围的空像素(通过Magic Wand工具,打开Anti-alias(反走样),Tolerance(容忍度)的值设为0)。



15c5ed23775b81b1010c49d10b8091b594d738c9

10)回到Alpha通道,填充选中的矩形亮灰区域(红、绿和蓝的值均在170左右。)



99fe70ee7673cd31c826676135aa15e232598fe5

3.5.3 实现原理
Unity可以读取纹理贴图的4个通道值:R(红)、G(绿)、B(蓝)和A(透明度)。
当用Alpha通道根据每个像素的亮度级别设置材质的透明度时,透明着色器使用RGB通道作为基础纹理。Cutout子分组(Cutout subgroup)中的透明着色器不渲染半透明,而只允许纹理像素是不可见或完全不透明的。

3.5.4 更多内容
Unity 有一系列透明着色器用于实现不同的效果。

  1. 使用Cutout
    透明着色器有一个子分组叫做Cutout,如果你不需要半透明的材质,可以用Cutout着色器。它们的渲染速度更快,并且允许对象投射(cast)和接收(receive)阴影。
  2. 使用凹凸的漫反射(Bumped Diffuse)
    要练习的话,把材质的Shader值修改成Transparent/Bumped Diffuse。然后把0423_03_04文件夹中的slideNormalTexture.png 图片文件作为一个法线凹凸贴图(normal bump map)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108355.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 初次使用Rubymine

    初次使用Rubymine在 Windows 上配置 Redmine 环境后 上一篇有介绍 准备阅读源码 用单纯的文本编辑器阅读代码实在太低下了 非常需要一个类似 VisualStudio 或 SourceInsigh 等高效的代码分析工具 调查了一番 最后决定使用 Rubymine 使用 Rubymine 遇到了一些问题 如何把现有 Rails 项目导入到 Rubymine 中 尝试用 Rubymine 6 3 版本 新建

    2025年10月31日
    3
  • dijkstra算法求最短路_图论的最短路问题

    dijkstra算法求最短路_图论的最短路问题原题链接战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。输入格式:输入在第一行给出两个整数N(0 < N ≤ 500)和M(≤ 5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔。在城市信息之后给出被攻占的

    2022年8月9日
    9
  • pip安装scrapy失败_scrapy框架运行

    pip安装scrapy失败_scrapy框架运行错误如图所示,running setup.py install for Twisted…..errorTwisted依赖库安装报错,重新下载手动安装一下下载网址:https://www.lfd.uci.edu/~gohlke/pythonlibs注意:看下安装的python是什么版本,我安装的python 3.9.0,就下载cp39,64位的下载安装的版本不对,就会报:Twisted-20.3.0-cp38-cp38-win_amd64.whl is not a support…

    2022年8月19日
    9
  • 浅谈ArrayList动态扩容

    浅谈ArrayList动态扩容环境:eclipse,jdk1.8简介ArrayList实现了List接口,继承了AbstractList,底层是数组实现的,一般我们把它认为是可以自增扩容的数组。它是非线程安全的,一般多用于单线程环境下(与Vector最大的区别就是,Vector是线程安全的,所以ArrayList性能相对Vector会好些),它实现了Serializable接口,因此它支持序列化,能够通过序列化传输

    2022年6月10日
    31
  • PyCharm激活码永久有效PyCharm2017.2.6激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2017.2.6激活码教程-持续更新,一步到位PyCharm激活码永久有效2017.2.6激活码教程-Windows版永久激活-持续更新,Idea激活码2017.2.6成功激活

    2022年6月19日
    25
  • 验证码暴力破解测试[通俗易懂]

    验证码暴力破解测试测试原理和方法找回密码功能模块中通常会将用户凭证(一般为验证码)发送到用户自己才可以看到的手机号或者邮箱中,只要用户不泄露自己的验证码就不会被攻击者利用,但是有些应用程序在验证码发送功能模块中验证码位数及复杂性较弱,也没有对验证码做次数限制而导致验证码可被暴力枚举并修改任意用户密码。在测试验证码是否可以被暴力枚举时,可以先将验证码多次发送给自己的账号,观察验…

    2022年4月11日
    230

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号