将百分比转换为适当的UV比例值

时间:2013-11-15 03:12:43

标签: python math maya pymel

我正在尝试缩放UV。我有当前UV shell占用的0-1 UV空间的百分比以及我需要shell占用的百分比。最好的方法是什么?

我已尝试使用pm.polyEditUVs(),但我无法提出将百分比转换为适当比例值的公式。

如果我含糊不清,请告诉我,我会尝试更具体。

编辑:

我道歉,我的问题不完整。

pm.polyEditUVs()中的比例值不按区域缩放,它们使用U和V值独立缩放。

如果是按区域缩放,那么将旧值除以新值会产生适当的比例值,但这里没有。例如:

A = 1.0 #Normalized percentage of the total UV area our UVs currently occupy.
B = 0.25  #Normalized percentage of the total UV area we want our UVs to occupy.

#If we could scale the area directly using a single number then the following would work.
ScaleValue = B\A
0.25 = 0.25\1.0

但是,如果我们将该值插入pm.polyEditUVs()中的scaleU和scaleV关键字args,那么您将以指数级别而非线性缩小区域。

#continuing with the previous example
#for the sake of ease of predictability regarding the math I am assuming our UVs are a square for this example, however U and V will rarely be the same value.
U = 1.0 #linear distance  actual value (percentage value would be 100% (1.0))
V = 1.0 #linear distance. actual value (percentage value would be 100% (1.0))
Area = 1*1 #actual area value. (percentage value would be 100% (1.0))

newU = U * scaleValue
0.25 = 1.0 * 0.25

newV = V * scaleValue
0.25 = 1.0 * 0.25

newArea = newU * newV
0.0625 = 0.25 * 0.25

最终结果,而不是使原始尺寸的25%的区域实际上使其成为原始尺寸的6.25%。我们如何考虑额外的数量级?

我为这个例子的迂腐性质道歉,但我想确保我的例子很清楚,如果它不是我会添加更多。

2 个答案:

答案 0 :(得分:1)

如果目标是从某个%的UV空间变为不同的%,则只需按当前%与所需%的比例进行缩放。如果你当前的面积是紫外线空间的45%并且你希望它是90%,你可以按比例缩小90/45 = 2.如果你现在的比例为75%并希望达到25%,比例为25/75,或.33333。

答案 1 :(得分:0)

来自维基百科:

Precentage是一个数字或比率,表示为100的分数。例如,45%(读作“百分之四十五”)等于45/100,或 0.45

因此,根据定义,10%是0.10单位,因此10%的比例为0.10。