2017-08-04 1 views
1

Je veux générer du bruit sous forme de valeurs entre -128 et 127 (la plage de sbytes) mais le bruit perlin/simplex génère des flottants entre -1 et 1 et je n'arrive pas à comprendre comment le convertir . Par exemple, 0.5f signifie 64 ou quelque chose comme ça. Avez-vous une idée sur la conversion de ces valeurs?Conversion du bruit en sbytes

+0

Eh bien, que se passe-t-il si vous ne faites que doubler la valeur de 127 et passer à 'sbyte'? Cela vous donnerait une gamme de -127 à 127 ... –

+0

Essayez (octets) (noiseFloat * 127) – n8wrl

+0

Eh bien ouais c'est assez simple maintenant que je pense à nouveau merci quand même pour les réponses rapides – Statey

Répondre

0

Utilisation lerp:

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

En venant de fond Arduino, je me retrouve avec toujours leur fonction map dans l'unité. Il est utilisé pour passer d'une gamme à l'autre. Vous passez l'entrée à la fonction, puis la plage de cette entrée qui est -1 à 1. Enfin vous passez dans la gamme de sortie que vous voulez qui est -128f et 127f. La fonction renverra la valeur mise à l'échelle.

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

certains comme celui-ci.

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