(Unity C#) Texture2D缩放之谜

4
好的,我看到这里有一些关于在此处和Unity论坛上缩放Texture2D的帖子。通过搜索,我现在能够使用这个类来缩放Texture2Ds:http://wiki.unity3d.com/index.php/TextureScale 现在,我正在直接将修饰应用于目标纹理上。这样做很好。但是,取决于纹理的大小以及它在几何图形上的缩放程度,修饰的大小会有所不同(不进行任何缩放,请参见附加图像)。这就是我开始研究如何对Texture2D进行缩放的原因。
问题是,我不知道该向缩放函数投掷哪种数学公式,以使修饰在不同的网格和纹理上始终呈现相同的尺寸。
非常感谢您的帮助:]
1个回答

0

如果纹理是原来的两倍大小,贴花也会变成两倍大小。因此,将贴花缩小一半,它就会恢复到正常大小。

通常情况下,每当你为纹理乘以比例时,就要按同样的比例将贴花的比例除以。


似乎会导致无限循环或冻结Unity:http://paste.ofcode.org/37Vj52eREqFAiLtfKDQTpAG - gord0
DecalTex.width*(_targetTex.width/DecalTex.width) 相当于 _targetTex.width。至于为什么会冻结:我不知道。这听起来像是 TextureScale 代码的一个错误,你需要逐步调试。但是,有没有一些原因导致 transform.scale 对你无效? - BlueRaja - Danny Pflughoeft
我曾尝试使用持有相应几何体的GameObject的transform.localScale...那是一两天前的事了,我忘记了我尝试了什么。无论我尝试了什么,都没有起作用,所以我就放弃了。要么我做错了,要么这不是答案。但是,是的,我看到了上面数学计算中的错误,今天真是漫长啊,哈哈。 - gord0
我有点放下这个项目几天去处理其他任务,但现在我回来了。经过一些研究,我正在测试的特定模型上,所有纹理都是1024x1024,不同的视觉大小是因为艺术家如何进行UV映射。所以说,我仍然被难住了,但是方式不同了。 - gord0
1
我刚刚和一位艺术家坐下来,似乎这与简单地缩放贴花有很大关系,而与某些UV技巧有很大关系。现在,我只是简单地将纹理印上去。我需要做的是确定哪些三角形属于纹理的每个部分,以便我可以将贴花限制在适用的纹理部分。然后,我还需要在世界空间中进行一些其他检查,以便当贴花在模型上实际附着在彼此上时,它们可以跨越工作表的不同区域的两个纹理部分。因此,我认为我的最初问题已经无效了。 - gord0
然而,至少现在我们不再对正在发生的事情感到“神秘”。 - gord0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接