2017-08-04 48 views
1

我想產生-128和127之間的值(sbytes範圍內)的噪聲,但perlin/simplex噪聲產生-1和1之間的浮動,我不知道如何轉換它。例如像0.5f意味着64或類似的東西。你有什麼想法轉換這些值?噪聲轉換爲sbytes

+0

那麼,如果你只是將值乘以127並轉換爲'sbyte',會發生什麼?這會讓你的範圍從-127到127 ... –

+0

嘗試(字節)(noiseFloat * 127) – n8wrl

+0

好吧,它現在很簡單,因爲我再次想到,謝謝你的快速答案 – Statey

回答

0

使用線性插值:

(sbyte)Mathf.Lerp(-128, 127, (noise+1)/2) 
2

從Arduino的背景的,我發現自己總是用他們map功能的統一。它用於從一個範圍擴展到另一個範圍。您將輸入傳遞給函數,然後輸入的範圍是-11。最後你通過你想要的輸出範圍是-128f127f。該函數將返回縮放值。

float mappedVal = mapValue(yourSimplexnoise, -1f, 1f, -128f, 127f); 

float mapValue(float mainValue, float inValueMin, float inValueMax, float outValueMin, float outValueMax) 
{ 
    return (mainValue - inValueMin) * (outValueMax - outValueMin)/(inValueMax - inValueMin) + outValueMin; 
} 
0

一些這樣的。

float r = (Random.Range(-1f, 1f) + 1)/2; 
sbyte b = (sbyte)Mathf.Lerp(-128f,127f, r);