2013-11-15 69 views
0

我正在嘗試縮放UV。我有當前UV外殼佔用的0-1 UV空間的百分比和我需要外殼佔據的百分比。什麼是最好的方式來做到這一點?將百分比轉換爲適當的UV刻度值

我試過使用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 

然而,如果我們插入該值到scaleU和scaleV關鍵字ARGS在pm.polyEditUVs()那麼你降低對指數標,而不是線性的區域。

#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%。我們如何考慮額外的數量級?

我爲這個例子的迂腐性質道歉,但我想確保我的例子清楚,如果不是,我會添加更多。

回答

1

如果目標是從一定的UV空間百分比到不同的百分比,只需按照當前百分比與所需百分比的比例進行縮放即可。如果你當前的面積是uv空間的45%,而你希望它是90%,那麼你會按90/45 = 2來縮放。如果你現在的面積是75%,想要達到25%縮小25/75或.33333。

+0

我很抱歉,我意識到我沒有正確解釋我的問題。它已被更新。 – TheBeardedBerry

+0

如果要將1,1矩形設置爲.5,.5矩形,則將該區域縮小至其原始值的25%。如果要將1,1矩形縮放爲其面積的50%,則需要採用縮放因子的平方根:在這種情況下,sqrt(.5)= .707 – theodox

+0

謝謝,看着這個回想起來,這簡直令人難以置信。我一定是盯着我的代碼太久了。 – TheBeardedBerry

0

維基百科:

Precentage是一個數字或比率表示爲100的一小部分...例如,45%(讀作「45%的」)等於45/100,或0.45

因此,根據定義,百分之十是0.10單位,所以百分之十是0.10。