Skip to content

Instantly share code, notes, and snippets.

@cnlohr
Created October 28, 2019 20:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cnlohr/a45c017ab55337305e11cc5e2d574639 to your computer and use it in GitHub Desktop.
Save cnlohr/a45c017ab55337305e11cc5e2d574639 to your computer and use it in GitHub Desktop.
For converting from raw_and_uncalibrated to standing.
printf( "Conv: \n" );
struct HmdMatrix34_t mzerotoabs = cnovrstate->oSystem->GetRawZeroPoseToStandingAbsoluteTrackingPose();
printf( "%f %f %f %f\n", PFFOUR( mzerotoabs.m[0] ) );
printf( "%f %f %f %f\n", PFFOUR( mzerotoabs.m[1] ) );
printf( "%f %f %f %f\n", PFFOUR( mzerotoabs.m[2] ) );
cnovr_pose pstanding;
matrix44_to_pose( &pstanding, &mzerotoabs.m[0][0] );
printf( "%f %f %f %f %f %f %f %f\n", PFTHREE( pstanding.Pos ), PFFOUR( pstanding.Rot ), pstanding.Scale );
struct TrackedDevicePose_t poses[16];
cnovrstate->oSystem->GetDeviceToAbsoluteTrackingPose(
//ETrackingUniverseOrigin_TrackingUniverseSeated = 0,
ETrackingUniverseOrigin_TrackingUniverseStanding
//ETrackingUniverseOrigin_TrackingUniverseRawAndUncalibrated
, 0, poses, 16 );
for( i = 0; i < 16; i++ )
{
struct TrackedDevicePose_t * t = poses + i;
if( i == 0 && t->bPoseIsValid && t->bDeviceIsConnected )
{
printf( "STAND %d: \n", i );
printf( "%f %f %f %f\n", PFFOUR( t->mDeviceToAbsoluteTracking.m[0] ) );
printf( "%f %f %f %f\n", PFFOUR( t->mDeviceToAbsoluteTracking.m[1] ) );
printf( "%f %f %f %f\n", PFFOUR( t->mDeviceToAbsoluteTracking.m[2] ) );
cnovr_pose ps;
matrix44_to_pose( &ps, &t->mDeviceToAbsoluteTracking.m[0][0] );
printf( "%f %f %f %f %f %f %f %f\n", PFTHREE( ps.Pos ), PFFOUR( ps.Rot ), ps.Scale );
}
}
cnovrstate->oSystem->GetDeviceToAbsoluteTrackingPose(
//ETrackingUniverseOrigin_TrackingUniverseSeated = 0,
//ETrackingUniverseOrigin_TrackingUniverseStanding = 1,
ETrackingUniverseOrigin_TrackingUniverseRawAndUncalibrated
, 0, poses, 16 );
for( i = 0; i < 16; i++ )
{
struct TrackedDevicePose_t * t = poses + i;
if( i == 0 && t->bPoseIsValid && t->bDeviceIsConnected )
{
printf( "RAU %d: \n", i );
printf( "%f %f %f %f\n", PFFOUR( t->mDeviceToAbsoluteTracking.m[0] ) );
printf( "%f %f %f %f\n", PFFOUR( t->mDeviceToAbsoluteTracking.m[1] ) );
printf( "%f %f %f %f\n", PFFOUR( t->mDeviceToAbsoluteTracking.m[2] ) );
cnovr_pose ps;
matrix44_to_pose( &ps, &t->mDeviceToAbsoluteTracking.m[0][0] );
printf( "%f %f %f %f %f %f %f %f\n", PFTHREE( ps.Pos ), PFFOUR( ps.Rot ), ps.Scale );
cnovr_pose pso;
FLT fvo[16];
apply_pose_to_pose( &pso, &pstanding, &ps );
matrix34multiply( fvo, & mzerotoabs.m[0][0], &t->mDeviceToAbsoluteTracking.m[0][0] );
printf( "RAU XF %d: \n", i );
printf( "%f %f %f %f\n", PFFOUR(fvo ) );
printf( "%f %f %f %f\n", PFFOUR(fvo+4 ) );
printf( "%f %f %f %f\n", PFFOUR(fvo+8) );
printf( "%f %f %f %f %f %f %f %f\n", PFTHREE( pso.Pos ), PFFOUR( pso.Rot ), pso.Scale );
}
}
@cnlohr
Copy link
Author

cnlohr commented Oct 28, 2019

Also,

 			apply_pose_to_point( pso.Pos, &pstanding, ps.Pos );
			printf( "%f %f %f \n", PFTHREE( pso.Pos ) );

at the end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment