Procházet zdrojové kódy

set distortion coefficients from a helper function

James Sarrett před 8 roky
rodič
revize
5dc0f61862
3 změnil soubory, kde provedl 23 přidání a 21 odebrání
  1. 4 14
      src/drv_oculus_rift/rift.c
  2. 17 7
      src/openhmd.c
  3. 2 0
      src/openhmdi.h

+ 4 - 14
src/drv_oculus_rift/rift.c

@@ -318,22 +318,12 @@ static ohmd_device* open_device(ohmd_driver* driver, ohmd_device_desc* desc)
 	//setup generic distortion coeffs, from hand-calibration
 	switch (desc->revision) {
 		case REV_DK2:
-			priv->base.properties.universal_distortion_k[0] = 0.247;
-			priv->base.properties.universal_distortion_k[1] = -0.145;
-			priv->base.properties.universal_distortion_k[2] = 0.103;
-			priv->base.properties.universal_distortion_k[3] = 0.795;
-			priv->base.properties.universal_aberration_k[0] = 0.985;
-			priv->base.properties.universal_aberration_k[1] = 1.000;
-			priv->base.properties.universal_aberration_k[2] = 1.015;
+			ohmd_set_universal_distortion_k(&(priv->base.properties), 0.247, -0.145, 0.103, 0.795);
+			ohmd_set_universal_aberration_k(&(priv->base.properties), 0.985, 1.000, 1.015);
 			break;
 		case REV_DK1:
-			priv->base.properties.universal_distortion_k[0] = 1.003;
-			priv->base.properties.universal_distortion_k[1] = -1.005;
-			priv->base.properties.universal_distortion_k[2] = 0.403;
-			priv->base.properties.universal_distortion_k[3] = 0.599;
-			priv->base.properties.universal_aberration_k[0] = 0.985;
-			priv->base.properties.universal_aberration_k[1] = 1.000;
-			priv->base.properties.universal_aberration_k[2] = 1.015;
+			ohmd_set_universal_distortion_k(&(priv->base.properties), 1.003, -1.005, 0.403, 0.599);
+			ohmd_set_universal_aberration_k(&(priv->base.properties), 0.985, 1.000, 1.015);
 			break;
 		default:
 			break;

+ 17 - 7
src/openhmd.c

@@ -515,13 +515,8 @@ void ohmd_set_default_device_properties(ohmd_device_properties* props)
 	props->ipd = 0.061f;
 	props->znear = 0.1f;
 	props->zfar = 1000.0f;
-	props->universal_distortion_k[0] = 0.0;
-	props->universal_distortion_k[1] = 0.0;
-	props->universal_distortion_k[2] = 0.0;
-	props->universal_distortion_k[3] = 1.0;
-	props->universal_aberration_k[0] = 1.0;
-	props->universal_aberration_k[1] = 1.0;
-	props->universal_aberration_k[2] = 1.0;
+	ohmd_set_universal_distortion_k(props, 0, 0, 0, 1);
+	ohmd_set_universal_aberration_k(props, 1.0, 1.0, 1.0);
 }
 
 void ohmd_calc_default_proj_matrices(ohmd_device_properties* props)
@@ -552,3 +547,18 @@ void ohmd_calc_default_proj_matrices(ohmd_device_properties* props)
 	omat4x4f_init_translate(&translate, -proj_offset, 0, 0);
 	omat4x4f_mult(&translate, &proj_base, &props->proj_right);
 }
+
+void ohmd_set_universal_distortion_k(ohmd_device_properties* props, float a, float b, float c, float d)
+{
+	props->universal_distortion_k[0] = a;
+	props->universal_distortion_k[1] = b;
+	props->universal_distortion_k[2] = c;
+	props->universal_distortion_k[3] = d;
+}
+
+void ohmd_set_universal_aberration_k(ohmd_device_properties* props, float r, float g, float b)
+{
+	props->universal_aberration_k[0] = r;
+	props->universal_aberration_k[1] = g;
+	props->universal_aberration_k[2] = b;
+}

+ 2 - 0
src/openhmdi.h

@@ -133,6 +133,8 @@ struct ohmd_context {
 // helper functions
 void ohmd_set_default_device_properties(ohmd_device_properties* props);
 void ohmd_calc_default_proj_matrices(ohmd_device_properties* props);
+void ohmd_set_universal_distortion_k(ohmd_device_properties* props, float a, float b, float c, float d);
+void ohmd_set_universal_aberration_k(ohmd_device_properties* props, float r, float g, float b);
 
 // drivers
 ohmd_driver* ohmd_create_dummy_drv(ohmd_context* ctx);