Unity Shader入门系列(二):颜色

Number of views 14

上次我们学习了什么是材质以及如何在 Unity 中创建它们。现在我们将学习颜色。 

因为基本形状比较枯燥,所以我从Mixamo上下载了一个模型用于这些教程。你可以从 Mixamo 获取任何你想要的模型,但我已经设置好了导入设置和材质,你可以从本文附件中链接的Claire.zip压缩包里获取完整的模型。解压后将文件夹拖到你的项目中。

然后将名为“claire@Female Standing Pose”的文件拖到场景中。最终效果如下:

image1753690119916.png

有人告诉我,材质似乎无法与已设置的纹理一起导入。我会尽快修复这个问题!同时,您可以自行设置,只需将纹理 Girl01_diffuse 拖到名为 Girl01_Body_MAT1 的材质的 Albedo 插槽中,并将纹理 Girl01_FacialAnimMap 拖到所有其他材质的 Albedo 插槽中即可!

你会注意到我在控制台中遇到了一些错误,Unity 有时会这样。由于我们一行代码都没写,所以这显然不是我们的错,所以我们可以忽略它们。

好啦!现在我们有了一个很酷的角色模型可以玩了!展开层级视图中模型名称旁边的箭头。你会看到它包含几个部分。 

image1753690189290.png

“臀部”以上的部分都带有材质。“臀部”是用于设置角色姿势的骨架,但我们先忽略它,因为谈论动画会是另一个系列的教程,而我们在这里讨论它只是因为它看起来比球体更有趣。

单击“Girl_Body_Geo”,使其显示在检查器中(即屏幕右侧的选项卡)。单击米色/红色/黑色球体图片正下方的小三角箭头以展开材质属性。

image1753690214291.png

您现在应该能够看到这个:

image1753690245369.png

那么,我们来聊聊颜色吧。点击白色方块打开颜色选择器,我们来仔细看看。

image1753690272511.png

默认情况下,颜色选择器处于 HSV 模式。这意味着色相、饱和度和明度。如果您以前在电脑上编辑过图像,您可能熟悉如何滑动这些按钮来改变颜色的外观;如果您没有,现在就花点时间尝试一下。 

 我们将颜色视为现实生活中的光,这意味着我们能想到的任何颜色都是红色、绿色和蓝色的某种组合。因此,现在让我们点击显示 HSV 的下拉菜单,并将其更改为RGB 0-1.0

image1753690302591.png

在此模式下,颜色值可以介于 0 到 1 之间。可以将其视为 0% 到 100% 之间的值。因此,如果所有颜色都为 0,则表示完全没有光,因此显示为黑色。如果所有颜色都为 1,即 100%,则表示最大值,因此显示为白色。将顶部控制红色量的滑块滑至 0,然后观察结果。

image1753690332048.png

哎,她变成了青色!好的,把那个滑块一直滑回1。现在再滑到下一个滑块,控制绿色的多少。现在她变成了洋红色!

image1753690372314.png

但她的裙子颜色几乎没有变化。嗯。我们把蓝色调到最高,把绿色(第三个滑块)调到最低,直到0。

image1753690449635.png

哇,她变黄了,但她的裙子却几乎没变色。怎么回事?裙子几乎没有蓝色和绿色,所以去掉蓝色和绿色根本没啥影响。你会注意到,唯一颜色略有变化的是那些最接近白色的部分。

你可能也注意到了,她的眼睛和嘴巴颜色完全没变。这是因为在这个模型上,它们并没有连在身体上!如果你进入层级视图,点击屏幕最左侧与“Girl_Eyes_Geo”同一行的深灰色条带,就能让她的眼睛隐形。太神奇了。

image1753690482049.png

image1753690505679.png

但我们现在并不真正关心这一点,所以我会让它们保持可见。

所以你可能会想,为什么着色器的颜色是白色的,但模型上明明有颜色?你知道,裙子是红色的,皮肤是粉色的,紧身裤是黑色的,尽管颜色明明是白色的。

image1753690534919.png

那么,每种颜色都是由不同的红、绿、蓝混合而成的,对吧?最大值是 1,最小值是 0。为了确定模型应该呈现的颜色,着色器会取出纹理中的每个像素,并将其乘以材质上该框中的颜色。因此,任何值乘以 0 都等于 0,乘以 1 等于其本身。因此,如果将整个纹理乘以白色,就等于将其红、绿、蓝的百分比乘以 1,因此颜色完全不会改变。而如果将该框设置为白色以外的任何颜色,模型的整体颜色都会比原本的颜色更暗,因为任何非白色的颜色都会使颜色低于其原始颜色的 100%。

我知道这里面有很多数学知识需要你操心。如果你头晕目眩,就继续玩颜色,直到明白为止。如果你不晕,那就继续玩颜色,因为这很有趣。

接下来,第 3 部分:添加颜色

0 Answers