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;

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Website Protected by Spam Master


*