Unity的“透明碰撞镜面”翻译成“半光泽必须是半透明的”?

Unity的“Transparent Bumped Specular”着色器/材质types的文档仅仅是透明和镜面着色器(也是Bumped,但不适用于这个问题)的每个描述的拼接:

透明属性

这个着色器可以通过读取主纹理的alpha通道来使网格几何体部分或完全透明。 在alpha中,0(黑色)是完全透明的,255(白色)是完全不透明的 如果您的主纹理没有alpha通道,则该对象将显示为完全不透明的。

(……)

镜面属性

(……)

此外,主纹理的alpha通道用作Specular Map(有时称为“光泽贴图”),用于定义对象的哪些区域比其他区域更具reflection性。 alpha的黑色区域将是零镜面reflection,而白色区域将是全镜面reflection。

对我来说,这转化为:

  • 我有一个网状代表汽车轮胎
  • 在边缘部分,纹理需要非常光亮,橡胶部分几乎没有光泽
  • 另外,由于边缘是非常复杂的,(与类似的裁剪decoretions等),我不会建立到网格,但假纹理与纹理的透明度
  • 我不能用Unity的“Transparent Bumped Specular”着色器做这一切,因为纹理的“橡胶”部分会变成半透明的,这是因为我绘制了alpha通道暗灰色(因为我希望它也不那么光泽) 。

它是否正确? 如果没有,我该如何做这项工作?

根据文件的方式为单一透明度和透明度设置alpha通道,您的假设是正确的。

如果你想完全控制纹理,我的解决scheme将是分离你的轮胎和rim-hubcap模型,所以你可以纹理每个单独。 这将允许您创建一个透明的碰撞镜面上的切口和光泽控制的轮辋,但也可以让你在轮胎上使用碰撞镜面,所以你可以得到更橡胶的外观没有透明度。

警告:不是一个统一的用户,所以我不知道统一提供这些技术。 这些概念很简单,适用于任何情况。 (这只是碰撞)

  1. 颜色键控:检查alpha或color是否等于magic cutout值。
  2. Alpha分区:使用线方程获得单独的镜面reflection和透明度值。