《Unity开发实战》——3.11节禁用材质剔除

3.11 禁用材质剔除
当创建一个透明或半透明对象的时候,可能想看它的内部表面。但是默认情况下Unity的透明着色器让其不可见。本节将编辑Unity中的内置透明着色器以让其对用户可见。

3.11.1 准备工作
请从网址 http://unity3d.com/unity/download/archive下载Unity的内置shaders的源码以便完成本节的学习, 还需要一个带有透明通道的纹理,在文件夹0423_03_10中可以找到名为grid.tga的图片。

3.11.2 操作步骤
请按照下面的步骤禁止材质剔除:
1)打开带有Unity内置shaders源码的压缩包,解压DefaultResources文件夹中名为AlphaTest-BumpSpec.shader的文件到桌面上。
2)复制AlphaTest-BumpSpec.shader 重命名为 AlphaTest-DoubleSided. Shader,并打开。
3)把第一行修改成: Shader "Transparent/Cutout/DoubleSided" {。
4)添加下面的代码:

3.11.3 实现原理
Cull Off 命令让Unity渲染物体的前后表面,虽然对于Cutout shader来说用着还行,但用透明着色器的其他类型可能导致不可预料的结果。

3.11.4 更多内容
这里有一些附加的资源和解决方案:

  1. 学习更多关于shaders的知识
    Unity的文档中有几篇关于shader编程的文章,链接为http://docs.unity3d.com/Documentation/ Components/ SL-Reference.html。
  2. 通过编辑对象的geometry解决问题
    可以通过复制3D模型的表面得到类似的结果,然后翻转新几何体的法线。
时间: 2024-09-20 00:41:18

《Unity开发实战》——3.11节禁用材质剔除的相关文章

《Unity开发实战》——导读

目 录 前 言 第1章 Unity 4.X 入门1.1 引言1.2 安装Unity 4.X1.3 设置首选项1.4 了解和优化用户界面1.5 把Unity中创建的资源另存为Prefab1.6 了解Unity中的Content1.7 导入自己的Content1.8 导入Unity的包到项目中1.9 导入自定义包到项目中1.10 从项目中导出自定义包1.11 添加自定义包到Unity的包快捷列表中1.12 使用项目浏览视图 第2章 使用摄像机2.1 引言2.2 创建画中画效果2.3 在不同摄像机之间

《Unity开发实战》——3.2节创建反射材质

3.2 创建反射材质金属.车漆,以及光滑的塑料表面都是一些很常见的需要反射的材质的例子.幸运的是,Unity内置了反射着色器(reflective shader),配置好以后就可以帮我们实现想要的效果了. 3.2.1 准备工作本节需要准备两个纹理贴图:Base Map(底图)和Reflection Cubemap(反射立方图).底图得是一张RGBA的图片,alpha通道可以把反射级别指定成从完全不透明(黑色)到完全反射(白色).反射立方体贴图可能是由六块纹理组成,或者像本节教程这样,只有一个单独

《Unity开发实战》——3.3节创建自发光材质

3.3 创建自发光材质自发光材质可以用于模拟很多对象,从LED手机显示屏到未来主义的Tron套装上.本节我们将学习如何配置自发光材质以及它的纹理贴图. 3.3.1 准备工作因为本节将创建一个LCD显示屏的例子,所以请读者确认已经安装这种字体.如果尚未安装,可以在网站www.dafont.com下载几个免费的LCD字体. 3.3.2 操作步骤请按照下面的步骤创建自发光材质:1)创建一个材质,命名为LCDMaterial.在Project视图中点击Create下拉菜单并选择Material(材质)是

《Unity开发实战》——3.9节鼠标悬停时高亮显示材质

3.9 鼠标悬停时高亮显示材质高亮对象是让玩家知道这个对象可以交互的最有效的方式.在拼图游戏和点击式冒险游戏中很有用,3D用户界面中也可以用. 3.9.1 准备工作本节中需要一个 3D 模型和一个 2D 纹理贴图,也可以直接导入0423_03_08文件夹中名为highlight的包. 3.9.2 操作步骤请按照下面的步骤实现鼠标悬停时高亮材质:1)导入包,并打开highlightScene 场景.2)在Hierarchy 视图中,选择 3D 对象让其高亮(名为highlightCube).3)在

《Unity开发实战》——3.10节通过循环加载一组材质实现动画纹理(例如模拟视频)

3.10 通过循环加载一组材质实现动画纹理(例如模拟视频)还可以让对象的材质有动画效果,比如一个模拟的飞船控制间的计算机屏幕,或者绘制一个可点击的物体作为按钮引起玩家的注意.Unity专业版提供一个把视频作为纹理的解决方案(免费版没有这个功能),也可以用代码实时修改对象的纹理. 3.10.1 准备工作需要一组图片作为播放序列,最好命名也是有序的,比如computerScreen1.png.computerScreen2.png等. 3.10.2 操作步骤请按照以下步骤实现动画纹理:1)创建一个新

《Unity开发实战》——1.11节添加自定义包到Unity的包快捷列表中

1.11 添加自定义包到Unity的包快捷列表中如果有那么几个包你经常导入到其他项目中,最好将它们添加到Unity的包快捷列表中. 1.11.1 准备工作为了完成本教程,得有一个自定义的包(什么样的包都可以).如果只是测试,可以在示例代码文件夹中找到文件夹名为0423_01_09-11里的内容. 1.11.2 操作步骤请按照下面的步骤把包添加到快捷列表中:1)使用文件管理器(Windows下的资源管理器,Mac下的Finder).浏览相应的包并用Ctrl+C或Command+C快捷键复制要添加的

《Unity开发实战》——3.4节创建高光纹理贴图

3.4 创建高光纹理贴图有些表面可能既有光滑的区域,又有粗糙的区域,为了达到这个效果,可以使用高光贴图(specular maps). 3.4.1 准备工作为了便于讲解,本节将创建一个生锈的金属材质来演示specular属性如何增强现实.如果读者还没有用于生成高光材质的基础纹理,示例代码中名为"0423_03_03"的文件夹中有本节需要用到的素材. 3.4.2 操作步骤请按照下面的步骤创建高光材质:1)创建一个新的材质,命名为:rustyMetalMaterial.2)选择此材质.在I

《Unity开发实战》——2.3节在不同摄像机之间切换

2.3 在不同摄像机之间切换在很多类游戏中,在多个摄像机间切换是很常见的功能,如:竞速游戏.体育游戏.大富翁/策略,还有很多其他的游戏.本节将介绍如何用键盘切换摄像机. 2.3.1 准备工作示例代码的0423_02_01_02文件夹中有名为 "basicScene"的包是专为本节准备的,包中有一个基本的level. 2.3.2 操作步骤请按照下面的步骤实现可切换的摄像机:1)把basicLevel包导入到Unity中.2)在Project视图中,打开02_01_02文件夹下的basic

《Unity开发实战》——3.8节通过GUI实时组合纹理

3.8 通过GUI实时组合纹理avatar的自定义往往包括选择一个或多个纹理来定义外观.本节中将实现一个GUI,此GUI通过组合两个纹理通道让玩家创建自己的avatar. 3.8.1 准备工作本节需要的3D对象和图片文件在0423_03_07 文件夹的selectTexture 包中. 3.8.2 操作步骤请按照下面的步骤叠加纹理:1)把为名selectTexture 的包导入到项目中.2)打开名为 selTextScene的场景.3)创建基础纹理:在Project 视图中,用下拉菜单创建一个材