如何在 WPF 中使用 3D 模型可视化来自 6 轴陀螺仪的数据?

问题描述 投票:0回答:1

我有一个 PS4 游戏控制器,我现在可以使用 HID 从中读取数据,包括 6 个轴,如下图所示。

三个轴代表加速度,另外三个轴代表角速率。

有了这些数据,我应该能够使用 WPF 中的 3D 模型来可视化控制器的实际姿势。目前,我发现Steam中的“3D Controller Overlay”功能完美地达到了我想要的效果。有没有任何库或框架可以帮助实现这种效果?

wpf gyroscope 3d-model
1个回答
0
投票

最后,我找到了this解决方案,完美解决了我的问题。创建

MadgwickAHRS
的实例,然后调用
Update
更新六轴数据,最终得到用于旋转的四元数。具体代码如下:

static MadgwickAHRS AHRS = new MadgwickAHRS(4f / 1000f, 0.1f);
static float deg2rad(float degrees)
{
    return (float)(Math.PI / 180) * degrees;
}
private void OnSensorDataUpdated(byte[] sensorData){
    short gyroX = ..., gyroY = ..., gyroZ = ..., accelX = ..., accelY = ..., accelZ = ...;
    //Since my gyro data is in degrees, it needs to be converted to radians
    AHRS.Update(deg2rad(gyroX), deg2rad(gyroY), deg2rad(gyroZ), accelX, accelY, accelZ);
    var rotation = new Quaternion(AHRS.Quaternion[1], AHRS.Quaternion[2], AHRS.Quaternion[3], AHRS.Quaternion[0]);
    this.Dispatcher.Invoke(()=>{
        var rotateTransform = new RotateTransform3D();
        rotateTransform.Rotation = new QuaternionRotation3D(rotation);
        YourModel.Transform = rotateTransform;//Update to ModelVisual3D
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.