Android ndk 如何在GearVR框架(GearVRf v3.1)中使用oculus mobile sdk(v.1.0.4)获取人头追踪的价值
我正在使用“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(),然后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:[ 但是,
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));
}
}