Unity: Filtrer les valeurs de l’acceleromètre.

Voici des fonctions pour filtrer les valeurs de l’accelerometre dans unity.
Elles sont inspirées des fonctions de la doc officielle qui ne sont pas fonctionnelles sur mes tests dans Unity 3.x.

var AccelerometerUpdateInterval : float = 1.0 / 60.0;
var LowPassKernelWidthInSeconds : float = 1.0;

private var LowPassFilterFactor : float = AccelerometerUpdateInterval / LowPassKernelWidthInSeconds; // tweakable
private var lowPassValue : Vector3;
function Start () {
	lowPassValue.x = Input.acceleration.x;
	lowPassValue.y = Input.acceleration.y;
	lowPassValue.z = Input.acceleration.z;
}

function LowPassFilterAccelerometer() : Vector3 {
	lowPassValue.x = Mathf.Lerp(lowPassValue.y, Input.acceleration.x, LowPassFilterFactor);
	lowPassValue.y = Mathf.Lerp(lowPassValue.y, Input.acceleration.y, LowPassFilterFactor);
	lowPassValue.z = Mathf.Lerp(lowPassValue.y, Input.acceleration.z, LowPassFilterFactor);
	return lowPassValue;
}

Donc par exemple, au lieu de :

var acceleroX:float = Input.acceleration.x;

On utilise :

var acceleroX:float = LowPassFilterAccelerometer().x;

Leave a Reply