我希望使用UV坐标在我的精灵上发光,但问题是,如果精灵来自Unity的精灵打包器创建的地图集,那么UV不会从0到1标准化,但是从两个任意值开始。如何规范驻留在地图册中的单个精灵的UV数据?我是否需要将其他信息解析到着色器中,或者我是否已经拥有执行此过程所需的信息?下图描述了这种情况:
左边的手是不是来自地图集的精灵。右边的手是来自地图集的精灵。我希望右手看起来和左手一样。
答案 0 :(得分:1)
您可能已经知道这一点,但根本问题在于您的" UV Coords"节点。着色器中的其他节点期望归一化的UV范围从0到1,但这不是您在使用纹理图集时获得的。
我可以想出两种方法来解决这个问题。它们都是可行的,因此我建议您尝试更适合您的工作流程。
将UV0作为唯一的UV通道很容易处理,但对于某些技术,将多个UV坐标添加到每个顶点会很有帮助。
作为示例,光照贴图是一种流行的功能,其中每个模型都有自己的单独纹理(漫反射/普通/等),但每个场景都有一个预先烘焙的光照贴图纹理,在多个模型之间共享 - 有点像照明信息图集。这些UV的UV不匹配,因此光照贴图UV存储在第二个通道(UV1)上。
以类似的方式,您可以将UV0用于图集UV,UV1用于局部UV。这为您提供了[0,1]
范围内的干净输入,您可以将其用于该乘法效果。
你可以scale and offset紫外线,以便它们被标准化。
min
和max
值例如,您可以为每个UV(偏移)添加min
,然后除以max - min
(比例)。