为Unity3D创建素材(1):图片、着色器、材质球


图片

Unity3D支持使用大部分位图格式作为图片素材,甚至包括带图层和图层效果的.psd格式文件。

但在实际使用中,并不推荐直接使用非通用的文件格式。这是因为对于任何格式的图片素材,Unity3D在导入时都会自动执行一个转换过程,如果面对的是非通用格式,则会调用相应的第三方软件功能来执行转换,所以实际转换过程会比较慢,而且有些特殊文件格式,如果没有安装对应的软件,甚至根本不能识别。

因此,推荐先使用PS将图片素材另存为.png格式(无损且较小),然后使用.png格式的文件作为图片素材来使用。

在Project面板中选择图片,Inspector中对应出现图片转换的参数选项(要注意的是,选择不同Texture Type,其他的选项会略有不同)。

unity_image_01.png

unity_image_02.png
  • Texture Type:选择贴图类型
  • Texture Shape:选择贴图形状,这里是设置在预览区的显示方式,有2DCube两种,这个图例中选择2D是因为这是2D游戏素材
  • Advanced:高级选项(略)
  • Alpha Source:选择透明通道来源
  • Wrap Mode:修改贴图重复包裹方式,Repeat代表会不断重复,Clamp代表如果模型UV不在(0,1)象限的话就不会被附上贴图,只会显示材质的默认颜色
  • Filter Mode:对通道数据的过滤方式,通常选择Bilinear,但如果是高动态色彩贴图(hdr),就要选择Point (no filter)

各种不同的贴图类型:

unity_image_03.png
  • Default是作为普通类型,也就是颜色贴图
  • Normal map是作为法线贴图,法线贴图必须指定成这个type,否则渲染不正确
  • Editor GUI and Legacy GUI
  • Sprite是作为“精灵”来使用,2D精灵是一种特殊的图片显示方法,图片不失真,不受光照,同时还具备可切割的属性,通常用作UI元素或者2D游戏的素材
  • Cursor是拿来替换游戏中鼠标形状的
  • Cookie
  • Lightmap是作为光照烘焙贴图使用,有的时候我们想把以前烘焙好的贴图直接导入使用,就要选择这个类型
  • Single Channel是单通道图片,这种类型的贴图转换后只会保留alpha通道的信息

最下面一栏是关于贴图尺寸和贴图压缩的选项:

unity_image_04.png
  • Max Size代表转换后该贴图的最大可能尺寸,如果本身贴图尺寸就小于这个尺寸的话,贴图不会被放大,但如果本身贴图尺寸大于这个尺寸,就会被缩小成这个尺寸;
  • Compression选择压缩质量,有高中低三档;
  • Format(略)

最关键的是,做完所有设置工作以后一定要点击Apply按钮应用设置,否则就白做了。旁边的Revert按钮可以将设置参数恢复到修改前的状态。

普通图片素材

普通图片素材选择Default类型即可。需要注意的是,对于一些很小的贴图,最好设置一下Max Size属性,这样比较节约系统资源。

Sprite类型素材

Sprite类型又叫精灵类型,主要用于UI、粒子、2D游戏等等。

将图片设置成sprite类型之后会得到以下特性,首先,图片不会被压缩,所以不会有JPEG图片颜色失真等现象;其次,图片可以被再次分割成为多个Sprite。

Unity3D 2017中新增了对Sprite的九宫格切分功能支持。所谓九宫格切分是指将图片按3*3的方式分成9个部分,当该图片被缩放是,不同部分会进行不同的变化,四个角落的4部分会保持不变,上中和下中的两部分会横向重复(tile),左中和右中的两部分会纵向重复(tile),而正中间一部分会横向纵向一起重复(tile)。这种方式很适合用在2D游戏的地面、墙面、门窗等物体上。

对法线贴图的处理

法线贴图必须设置成Normal map类型,否则不会被正确识别。

对HDR素材的处理

HDR素材要单独设置。通常被运用在天空球的贴图上。
HDR素材最关键的是要设置其为16bit色深或者32bit色深,否则引擎会自动将其处理成8bit色深的普通贴图,这样就丢失了高动态颜色信息了。


着色器(shader)

着色器(Shader)和材质球(Material)的区别

使用过三维软件的同学对材质的概念都很熟悉,在Maya中我们称之为“材质球”,其英文名称是Material。但在Unity3D(以及其他的很多游戏引擎)中,“材质”通常被用来指Shader,而非Material,所以这里我给shader起了个专门的中文名字叫“着色器”,以示区别。

Shader是编写的材质脚本,而shader编译出来的结果显示为各种不同的material。很多游戏都自己写shader,这样更自由也更优化,但我们不具备这个能力,只能使用系统给出的默认shader或者下载其他人写好的shader来使用。

自己写的shader需要放在Assets文件夹下才会起作用。可以在Project面板中点击Create或者直接右键单击选择创建不同类型的shader资源。

unity_shader_01.png

根据shader中编写的设置,shader会出现在material设置选项的Shader下拉框中,比如上面图例中的NewSurfaceShader就显示在Custom一栏之中。

内置常用Shader的使用

因为内置shader太多了,而且并不是所有的都常常会被用到,所以这里我先不细讲每一种shader可以做什么,只介绍最常用的基本类别。

  • Standard类型的shader和我们在Maya中使用的材质球最接近,初学者为了方便可以完全用这一个shader来制作所有材质。
  • Mobile类别下面的shader顾名思义是给移动平台做游戏时使用的shader,下属的shader基本上也能涵盖各种用途了。
  • Nature类别下的shader主要是给Unity3D自己的Tree类型物体准备的,有些特殊属性专门针对Tree物体的显示。通常创建Tree的时候会自动赋上对应的material,初学者不要胡乱改shader类型和参数。
    同理,Particles类别下的shader专为Unity3D的自带粒子系统准备,Skybox类别下的shader专为Unity3D的自动天空盒功能准备,Sprites是给精灵面片用的,UI是给UI物体贴图用的,VR是给VR用的(我也不清楚怎么用)。
  • Unlit类别下的shader都是所谓“无光照“shader,也就是说光照对这类材质无影响。

分成这么多类别,主要还是出于性能优化的考虑。比如Standard shader当然可以用来模拟unlit shader,但使用unlit shader无疑会减少很多计算量。


材质球(Material)

材质球(Material)可以被认为是一个基于shader的参数文件,同样需要手动创建在Assets目录中,后缀名是.mat

Maya的材质球可以随着.ma格式文件被导入Unity3D(但严重不推荐)。

实际上Unity3D自动识别了Maya材质球的相关参数,并以此创建了基于Stadard Shader的新的.mat文件,然后赋给转换后的模型。因此实际上并不一定能够保证新material的效果和在Maya中的效果一样,毕竟两个软件所采用的渲染方式都是天差地别的。

所以建议大家导入模型之后还是自行创建material并手动指定比较好。自动转换的material如果不使用的话最好删除掉,避免混淆。

所以,在Unity3D中给模型添加材质的一般流程是这样的:

  1. 如果不是使用内置shader的话,就要先下载shader资源并导入Unity3D,或者用可视化shader插件(比如Shader Forge)创建好shader;
  2. 在Unity3D中新建一个Material,并附加给模型;
  3. 选择这个Material,指定合适的shader(在Assets目录下的所有有效shader都会自动被加载到material的shader选择列表中去);
  4. 修改Material的各项参数并指定各种贴图

Material可以在Inspector最下面的预览窗口被预览到,右上方的模型按钮可以切换不同的预览模型(有方块、球、圆环、单面等)

常用材质球参数

Standard:
unity_material_standard.png
  • Albedo是颜色,可以将贴图资源从Project面板拖到前面的小方块上来添加贴图,贴图与后面的颜色设置相乘才是最终的效果(也就是说这个颜色会被multiply到贴图颜色上去)
  • Metallic是金属质感,数值越高,反光颜色越偏向本色(贴图颜色×颜色值)
  • Smoothness是光滑度,数值越高,表面越光滑,高光越集中,反射越清晰
  • Source是透明通道来源,可以选择使用Albedo贴图上的透明通道或者Metallic贴图上的透明通道
  • Normal Map是法线贴图
  • Height Map是高差图
  • Occlusion是模拟AOCC效果的贴图
  • Detail Mask是在表面再叠加一层细节遮罩时使用的贴图
  • Emission勾选表示材质“自发光”,会多出一个Color参数来指定发光的颜色、发光贴图、发光强度。强度可以设置到超过1,表示是一个很亮的物体。自发光材质会影响光照烘焙的结果
  • Tiling是贴图重复次数
  • Offset是贴图位移
  • Secondary Maps是可以添加次级细节贴图,当物体很靠近摄影机是会自动切换显示次级细节贴图
    • Detail Slbedo ×2是次级细节颜色贴图,建议创建成原来贴图的2倍大
    • Normal Map是次级细节法线贴图
  • Tiling同上
  • Offset同上
  • UV Set是选择UV组

Standard (Specular setup)与Standard的唯一区别,就在于采用Specular而非Metallic属性来设置高光,这样可以获得不同于颜色贴图色彩的高光颜色。

unity_material_standard2.png
Mobile/Bumped Specular:
unity_material_mobile_specular.png

Mobile类型的shader就简单很多了,可以看到只有最最基础的参数:

  • Shininess:光亮度
  • Base (RGB) Gloss (A):这里使用一张贴图的RGB通道作为颜色,A通道作为高光贴图
  • Normalmap:法线贴图
Unlit/Texture:
unity_material_unlit_texture.png

Unlit类型的shader就更简单,就只有贴图参数。Unlit/Color更简单,就只有一个颜色参数。Unlit/Transparent可以识别贴图的A通道并将其作为透明贴图,Unlit/Transparent Cutout与之类似,但处理透明贴图的方式不太一样,会将半透明区域简化成全透明或者全不透明。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容