Android ndk 如何在GearVR框架(GearVRf v3.1)中使用oculus mobile sdk(v.1.0.4)获取人头追踪的价值

Android ndk 如何在GearVR框架(GearVRf v3.1)中使用oculus mobile sdk(v.1.0.4)获取人头追踪的价值,android-ndk,tracking,virtual-reality,oculus,gear-vr,Android Ndk,Tracking,Virtual Reality,Oculus,Gear Vr,我正在使用“Gear VR框架”开发Android VR应用程序。 我想获得头部跟踪值,该值可在四元数中使用。 (方向xyzw、位置xyz、直线位置xytz、角度速度xyz等非摄像机值!(横滚、偏航、俯仰)) 我能够使用judax的OculusMobileSDKHeadTracking库在“Gearvr框架(GearVRf v3.0.1-Oculus Mobile SDK 1.0.3)”中获取头部跟踪值 Judax的OculusMobileSDKHeadTracking github:[ 但是,

我正在使用“Gear VR框架”开发Android VR应用程序。

我想获得头部跟踪值,该值可在四元数中使用。 (方向xyzw、位置xyz、直线位置xytz、角度速度xyz等非摄像机值!(横滚、偏航、俯仰))

我能够使用judax的OculusMobileSDKHeadTracking库在“Gearvr框架(GearVRf v3.0.1-Oculus Mobile SDK 1.0.3)”中获取头部跟踪值

Judax的OculusMobileSDKHeadTracking github:[

但是,GearVRf v3.1(Oculus Mobile SDK 1.0.4)无法实现这一点。

因为judax OculusMobileSDKHeadTracking使用了Oculus Mobile SDK v.1.0.3. 因此,由于版本冲突,“GearVRf v3.1”在获取头部跟踪值时遇到问题

Judax的OculusMobileSDKHeadTracking可以修改和使用(获取位置XYZ、HeadDepth等),但处理JNI和NDK并不容易

有没有办法从Gearvr框架中获取人头跟踪值? 或者,请推荐其他开源库。

您可以使用 's getTransform(),然后
getRotationX()、getRotationY()、getRotationZ()、getRotationW()来获取四元数?

事实上,正如前面的答案(+1'd:))所建议的,四元数可以通过适当的“s
getRotationX
,…
getRotationZ
方法获得。下面是一个可能有助于实现的片段:

public class SomeViewManager extends GVRMain {

    private GVRTransform mHeadTransfom;
    private HeadListener mHeadListener;

    MovieViewManager(HeadTransformListener headListener) {
        mHeadListener = headListener;
    }

    @Override
    public void onInit(GVRContext gvrContext) {
        GVRScene scene = gvrContext.getMainScene();
        mHeadTransfom = scene.getMainCameraRig().getHeadTransform();
    }

    @Override
    public void onStep() {
        mHeadListener.onOrientation(
                mHeadTransfom.getRotationW(),
                mHeadTransfom.getRotationX(),
                mHeadTransfom.getRotationY(),
                mHeadTransfom.getRotationZ()
        );
    }
}

public interface HeadTransformListener {
    public void onHeadTransform(float w, float x, float y, float z);
}
在我的例子中,目标是将头部方向传递到空间音频,下面使用
com.twobigears.TBAudioEngine
的v0.9.95实现了这一点:

public class SomeActivity extends GVRActivity implements HeadTransformListener  {
    @Override
    public void onHeadTransform(float w, float x, float y, float z) {
        // Set orientation
        TBAudioEngine.setListenerOrientation(new TBQuat(w, x, y, z));
    }
}