예제 #1
0
    private void UpdateProfile()
    {
        GetProfile(profileData);
        CardboardProfile.Device device = new CardboardProfile.Device();
        CardboardProfile.Screen screen = new CardboardProfile.Screen();
        device.maxFOV.outer          = profileData[0];
        device.maxFOV.upper          = profileData[1];
        device.maxFOV.inner          = profileData[2];
        device.maxFOV.lower          = profileData[3];
        screen.width                 = profileData[4];
        screen.height                = profileData[5];
        screen.border                = profileData[6];
        device.lenses.separation     = profileData[7];
        device.lenses.offset         = profileData[8];
        device.lenses.screenDistance = profileData[9];
        device.lenses.alignment      = (int)profileData[10];
        device.distortion.Coef       = new [] { profileData[11], profileData[12] };
        Profile.screen               = screen;
        Profile.device               = device;

        float[] rect = new float[4];
        Profile.GetLeftEyeNoLensTanAngles(rect);
        float maxRadius = CardboardProfile.GetMaxRadius(rect);

        Profile.device.inverse = CardboardProfile.ApproximateInverse(
            Profile.device.distortion, maxRadius);
    }
예제 #2
0
    private void UpdateScreenDataFromActivity()
    {
        CardboardProfile.Device device = new CardboardProfile.Device();
        CardboardProfile.Screen screen = new CardboardProfile.Screen();

        float[] lensData = null;
        if (CallActivityMethod(ref lensData, "getLensParameters"))
        {
            device.lenses.separation     = lensData[0];
            device.lenses.offset         = lensData[1];
            device.lenses.screenDistance = lensData[2];
            device.lenses.alignment      = (int)lensData[3];
        }

        float[] screenSize = null;
        if (CallActivityMethod(ref screenSize, "getScreenSizeMeters"))
        {
            screen.width  = screenSize[0];
            screen.height = screenSize[1];
            screen.border = screenSize[2];
        }

        float[] distCoeff = null;
        if (CallActivityMethod(ref distCoeff, "getDistortionCoefficients"))
        {
            device.distortion.k1 = distCoeff[0];
            device.distortion.k2 = distCoeff[1];
        }

        float[] invDistCoeff = null;
        if (CallActivityMethod(ref invDistCoeff, "getInverseDistortionCoefficients"))
        {
            device.inverse.k1 = invDistCoeff[0];
            device.inverse.k2 = invDistCoeff[1];
        }

        float[] maxFov = null;
        if (CallActivityMethod(ref maxFov, "getLeftEyeMaximumFOV"))
        {
            device.maxFOV.outer = maxFov[0];
            device.maxFOV.upper = maxFov[1];
            device.maxFOV.inner = maxFov[2];
            device.maxFOV.lower = maxFov[3];
        }

        Profile = new CardboardProfile {
            screen = screen, device = device
        };
    }
예제 #3
0
 private void UpdateProfile()
 {
     GetProfile(profileData);
     CardboardProfile.Device device = new CardboardProfile.Device();
     CardboardProfile.Screen screen = new CardboardProfile.Screen();
     device.maxFOV.outer          = profileData[0];
     device.maxFOV.upper          = profileData[1];
     device.maxFOV.inner          = profileData[2];
     device.maxFOV.lower          = profileData[3];
     screen.width                 = profileData[4];
     screen.height                = profileData[5];
     screen.border                = profileData[6];
     device.lenses.separation     = profileData[7];
     device.lenses.offset         = profileData[8];
     device.lenses.screenDistance = profileData[9];
     device.lenses.alignment      = (int)profileData[10];
     device.distortion.k1         = profileData[11];
     device.distortion.k2         = profileData[12];
     device.inverse               = CardboardProfile.ApproximateInverse(device.distortion);
     Profile.screen               = screen;
     Profile.device               = device;
 }
예제 #4
0
 private void UpdateProfile() {
   GetProfile(profileData);
   CardboardProfile.Device device = new CardboardProfile.Device();
   CardboardProfile.Screen screen = new CardboardProfile.Screen();
   device.maxFOV.outer = profileData[0];
   device.maxFOV.upper = profileData[1];
   device.maxFOV.inner = profileData[2];
   device.maxFOV.lower = profileData[3];
   screen.width = profileData[4];
   screen.height = profileData[5];
   screen.border = profileData[6];
   device.lenses.separation = profileData[7];
   device.lenses.offset = profileData[8];
   device.lenses.screenDistance = profileData[9];
   device.lenses.alignment = (int)profileData[10];
   device.distortion.k1 = profileData[11];
   device.distortion.k2 = profileData[12];
   device.inverse = CardboardProfile.ApproximateInverse(device.distortion);
   Profile.screen = screen;
   Profile.device = device;
 }
    public override void UpdateScreenData()
    {
        CardboardProfile.Device device = new CardboardProfile.Device();
        CardboardProfile.Screen screen = new CardboardProfile.Screen();

        float[] lensData = null;
        if (CallObjectMethod(ref lensData, androidActivity, "getLensParameters")) {
          device.lenses.separation = lensData[0];
          device.lenses.offset = lensData[1];
          device.lenses.screenDistance = lensData[2];
          device.lenses.alignment = (int)lensData[3];
        }

        float[] screenSize = null;
        if (CallObjectMethod(ref screenSize, androidActivity, "getScreenSizeMeters")) {
          screen.width = screenSize[0];
          screen.height = screenSize[1];
          screen.border = screenSize[2];
        }

        float[] distCoeff = null;
        if (CallObjectMethod(ref distCoeff, androidActivity, "getDistortionCoefficients")) {
          device.distortion.k1 = distCoeff[0];
          device.distortion.k2 = distCoeff[1];
        }

        float[] invDistCoeff = null;
        if (CallObjectMethod(ref invDistCoeff, androidActivity, "getInverseDistortionCoefficients")) {
          device.inverse.k1 = invDistCoeff[0];
          device.inverse.k2 = invDistCoeff[1];
        }

        float[] maxFov = null;
        if (CallObjectMethod(ref maxFov, androidActivity, "getLeftEyeMaximumFOV")) {
          device.maxFOV.outer = maxFov[0];
          device.maxFOV.upper = maxFov[1];
          device.maxFOV.inner = maxFov[2];
          device.maxFOV.lower = maxFov[3];
        }

        Profile.screen = screen;
        Profile.device = device;
    }
예제 #6
0
  private void UpdateProfile() {
    GetProfile(profileData);
    CardboardProfile.Device device = new CardboardProfile.Device();
    CardboardProfile.Screen screen = new CardboardProfile.Screen();
    device.maxFOV.outer = profileData[0];
    device.maxFOV.upper = profileData[1];
    device.maxFOV.inner = profileData[2];
    device.maxFOV.lower = profileData[3];
    screen.width = profileData[4];
    screen.height = profileData[5];
    screen.border = profileData[6];
    device.lenses.separation = profileData[7];
    device.lenses.offset = profileData[8];
    device.lenses.screenDistance = profileData[9];
    device.lenses.alignment = (int)profileData[10];
    device.distortion.Coef = new [] { profileData[11], profileData[12] };
    Profile.screen = screen;
    Profile.device = device;

    float[] rect = new float[4];
    Profile.GetLeftEyeNoLensTanAngles(rect);
    float maxRadius = CardboardProfile.GetMaxRadius(rect);
    Profile.device.inverse = CardboardProfile.ApproximateInverse(
        Profile.device.distortion, maxRadius);
  }