《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)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 算法时间复杂度的计算

    算法时间复杂度的计算一、算法时间复杂度定义在进行算法分析时候,语句总的执行次数T(n)是关于问题规模n的函数,进而分型T(n)随着n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间度量记作:T(n)=O(f(n)).它表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度.其中f(n)是问题规模n的某个函数.简单来说T…

  • 详细讲解 移植Uboot到ARM9开发系统上

    详细讲解 移植Uboot到ARM9开发系统上首先了解ARMer9开发系统硬件设计上和三星原装SMDK2410之间的区别。让uboot在ARMer9开发系统上跑起来,目前只需要关注如下的硬件区别,解决了下面这个问题,uboot就可以在ARMer9开发系统上正常地从串口输出,进入提示符。很多命令都可以使用,当然有些命令需要做修改。 SMDK2410:norFlash是AMD的1M的;ARMer9:是IntelE28F

  • Python字符串中删除特定字符的方法

    Python字符串中删除特定字符的方法这篇文章主要介绍了Python字符串中删除特定字符的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧分析在Python中,字符串是不可变的。所以无法直接删除字符串之间的特定字符。所以想对字符串中字符进行操作的时候,需要将字符串转变为列表,列表是可变的,这样就可以实现对字符串中特定字符的操作。1、删除特定字符特定字符…

  • idea如何集成svn_集成吊顶步骤分解图

    idea如何集成svn_集成吊顶步骤分解图idea从项目窗口跳到打开项目选项窗口操作之后即可跳到如下界面第一步:下载svn的客户端,通俗一点来说就是小乌龟啦!官网下载地址:Downloads·TortoiseSVN下载之后直接安装就好了,但是要注意这里,选择安装所有的命令行客户端工具,默认是不安装的,如果不安装,svn中的bin目录下就会没有svn.exe,这个待会会用到,所以一点要注意哦。(都是坑啊)然后就下一步下一步就安装好了。第二步:如果已经搭建好了svn服务的话,就要开始在idea中配置相关.

  • 银行家算法程序c语言,银行家算法代码c语言编写[通俗易懂]

    银行家算法程序c语言,银行家算法代码c语言编写[通俗易懂]《银行家算法代码c语言编写》由会员分享,可在线阅读,更多相关《银行家算法代码c语言编写(4页珍藏版)》请在人人文库网上搜索。1、defineM100#includeintmaxMM,allocationMM,needMM,availableM;inti,j,n,m,r;voidtestout()/算法安全性的检测intk,flag,v=0;intworkM,aM;charfi…

  • Java常用开发工具有哪些?

    Java常用开发工具有哪些?Java常用的几个开发工具。下面这些工具或许功能和作用不同,但是有着一个共同的主旨,那就是——它们都是为了给Java编码和开发提供卓越的支持。常用源码编辑工具介绍Java源代码本质上其实就是普通的文本文件,所以理论上来说任何可以编辑文本文件的编辑器都可以作为我们的Java代码编辑工具。比如:Windows记事本,MacOSX下的文本编辑,Linux下的vi、emacs、gedit、DOS下的edit等。但是这些简单工具没有语法的高亮提示、自动完成等功能,这些功能的缺失会大.

发表回复

您的电子邮箱地址不会被公开。

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