Как получить значение отслеживания головы с помощью Oculus Mobile SDK (v.1.0.4) в GearVR Framework (GearVRf v3.1)

Я разрабатываю приложение Android VR с помощью Gear vr Framework.

Я хочу получить значение отслеживания головы, которое можно использовать в Quaternion. (OrientationXYZW,PositionXYZ,linearVelocityXTZ, angularVelocityXYZ и т. д. не значение камеры!(roll,yaw ,подача)).

Мне удалось получить значения отслеживания головы с помощью библиотеки judax OculusMobileSDKHeadTracking в «Gearvr framework (GearVRf v3.0.1 — Oculus Mobile SDK 1.0.3)».

GitHub для OculusMobileSDKHeadTracking от Judax: [https://github.com/judax/OculusMobileSDKHeadTracking]

Однако это было невозможно с GearVRf v3.1 (Oculus Mobile SDK 1.0.4).

Поскольку judax OculusMobileSDKHeadTracking использует Oculus Mobile SDK v.1.0.3, у GearVRf v3.1 возникают проблемы с получением значений отслеживания движения головы из-за конфликтов версий.

OculusMobileSDKHeadTracking от Judax можно модифицировать и использовать (получить positionXYZ, HeadDepth и т. д.), но с JNI и NDK справиться непросто.

Есть ли способ получить значения отслеживания головы из среды Gearvr? Или, пожалуйста, порекомендуйте другие библиотеки с открытым исходным кодом.


person bon_0418    schedule 24.02.2017    source источник


Ответы (2)


Можете ли вы использовать http://docs.gearvrf.org/v3.1/Framework/org/gearvrf/GVRCamera.html getTransform(), а затем getRotationX(), getRotationY(), getRotationZ(), getRotationW(), чтобы получить кватернион?

person BoHuang    schedule 13.03.2017

Действительно, как следует из более раннего ответа (+1'd :)), кватернион доступен через соответствующий GVRTransform, методы 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);
}

В моем случае целью было передать ориентацию головы аудио FB360 (ранее "TwoBigEars"). визуализатор для пространственного звука, а следующее достигло этого, используя v0.9.95 из com.twobigears.TBAudioEngine:

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));
    }
}
person Jonathan    schedule 17.05.2017