Brandon
Brandon

Reputation: 23510

Global Position of a model OpenGL

Is it possible to get the global position of a model throughout an entire game?

enter image description here

I'm trying to figure out where those values come from.. Depending on how I rotate the camera, those values change.

Different positions:

enter image description here enter image description here

enter image description here

From gDebugger, I got these values:

LOWEST ANGLE:


GL_VIEWPORT: {4, 165, 512, 334}
GL_MODELVIEW_MATRIX: 
{0.99975264, 0.0091297952, -0.020280767, 0}
{0, 0.91186345, 0.41049367, 0}
{0.022241013, -0.41039214, 0.9116379, 0}
{1819.2891, -308.66016, 5129.084, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_CURRENT_MATRIX_ARB: 
{0.99975264, 0.0091297952, -0.020280767, 0}
{0, 0.91186345, 0.41049367, 0}
{0.022241013, -0.41039214, 0.9116379, 0}
{1819.2891, -308.66016, 5129.084, 1}


GL_VIEWPORT: {4, 165, 512, 334}
GL_MODELVIEW_MATRIX: 
{0.99990994, 0.0055096098, -0.01223895, 0}
{0, 0.91186345, 0.41049367, 0}
{0.013421912, -0.41045669, 0.91178131, 0}
{255.48047, -56.457031, 4179.0703, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_CURRENT_MATRIX_ARB: 
{0.99990994, 0.0055096098, -0.01223895, 0}
{0, 0.91186345, 0.41049367, 0}
{0.013421912, -0.41045669, 0.91178131, 0}
{255.48047, -56.457031, 4179.0703, 1}



GL_VIEWPORT: {4, 165, 512, 334}
GL_MODELVIEW_MATRIX: 
{0.99977756, 0.0086575896, -0.019231817, 0}
{0, 0.91186345, 0.41049367, 0}
{0.021090677, -0.41040236, 0.91166061, 0}
{248.38477, -85.074219, 4242.6367, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_CURRENT_MATRIX_ARB: 
{0.99977756, 0.0086575896, -0.019231817, 0}
{0, 0.91186345, 0.41049367, 0}
{0.021090677, -0.41040236, 0.91166061, 0}
{248.38477, -85.074219, 4242.6367, 1}



GL_VIEWPORT: {4, 165, 512, 334}
GL_MODELVIEW_MATRIX: 
{0.99966991, -0.010546137, 0.023427004, 0}
{0, 0.91186345, 0.41049367, 0}
{-0.025691351, -0.41035816, 0.91156244, 0}
{223.3418, -60.19043, 4187.3594, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_CURRENT_MATRIX_ARB: 
{0.99966991, -0.010546137, 0.023427004, 0}
{0, 0.91186345, 0.41049367, 0}
{-0.025691351, -0.41035816, 0.91156244, 0}
{223.3418, -60.19043, 4187.3594, 1}


HIGHEST:

GL_VIEWPORT: {4, 165, 512, 334}
GL_MODELVIEW_MATRIX: 
{0.99966991, -0.010546137, 0.023427004, 0}
{0, 0.91186345, 0.41049367, 0}
{-0.025691351, -0.41035816, 0.91156244, 0}
{223.3418, -60.19043, 4187.3594, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_CURRENT_MATRIX_ARB: 
{0.99966991, -0.010546137, 0.023427004, 0}
{0, 0.91186345, 0.41049367, 0}
{-0.025691351, -0.41035816, 0.91156244, 0}
{223.3418, -60.19043, 4187.3594, 1}





GL_VIEWPORT: {4, 165, 512, 334}
GL_MODELVIEW_MATRIX: 
{0.99997616, 0.0060372208, -0.0033470246, 0}
{0, 0.48486927, 0.87458664, 0}
{0.006902942, -0.87456578, 0.48485771, 0}
{3551.2305, 297.58008, 5957.9141, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_CURRENT_MATRIX_ARB: 
{0.99997616, 0.0060372208, -0.0033470246, 0}
{0, 0.48486927, 0.87458664, 0}
{0.006902942, -0.87456578, 0.48485771, 0}
{3551.2305, 297.58008, 5957.9141, 1}


GL_VIEWPORT: {4, 165, 512, 334}
GL_MODELVIEW_MATRIX: 
{0.99997616, 0.0027075345, -0.0063497927, 0}
{0, 0.91986758, 0.39222905, 0}
{0.006902942, -0.39221969, 0.91984564, 0}
{-281.65234, -45.993164, 4131.0254, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_CURRENT_MATRIX_ARB: 
{0.99997616, 0.0027075345, -0.0063497927, 0}
{0, 0.91986758, 0.39222905, 0}
{0.006902942, -0.39221969, 0.91984564, 0}
{-281.65234, -45.993164, 4131.0254, 1}


GL_VIEWPORT: {4, 165, 512, 334}
GL_MODELVIEW_MATRIX: 
{0.99960816, 0.010978992, -0.02574827, 0}
{0, 0.91986758, 0.39222905, 0}
{0.027991278, -0.39207536, 0.91950715, 0}
{249.30078, -64.625977, 4174.7188, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_CURRENT_MATRIX_ARB: 
{0.99960816, 0.010978992, -0.02574827, 0}
{0, 0.91986758, 0.39222905, 0}
{0.027991278, -0.39207536, 0.91950715, 0}
{249.30078, -64.625977, 4174.7188, 1}





GL_CURRENT_MATRIX_ARB: 
{0.99992931, -0.004879978, 0.010840298, 0}
{0, 0.91186345, 0.41049367, 0}
{-0.011888071, -0.41046464, 0.91179901, 0}
{-287.10938, -74.085938, 4218.2285, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_MODELVIEW_MATRIX: 
{0.99992931, -0.004879978, 0.010840298, 0}
{0, 0.91186345, 0.41049367, 0}
{-0.011888071, -0.41046464, 0.91179901, 0}
{-287.10938, -74.085938, 4218.2285, 1}
GL_VIEWPORT: {4, 165, 512, 334}




GL_CURRENT_MATRIX_ARB: 
{0.99963969, 0.023475286, -0.013014656, 0}
{0, 0.48486927, 0.87458664, 0}
{0.026841579, -0.87427151, 0.48469457, 0}
{-215.40039, -576.11523, 6158.7266, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_MODELVIEW_MATRIX: 
{0.99963969, 0.023475286, -0.013014656, 0}
{0, 0.48486927, 0.87458664, 0}
{0.026841579, -0.87427151, 0.48469457, 0}
{-215.40039, -576.11523, 6158.7266, 1}
GL_VIEWPORT: {4, 165, 512, 334}



GL_CURRENT_MATRIX_ARB: 
{0.99963969, 0.023475286, -0.013014656, 0}
{0, 0.48486927, 0.87458664, 0}
{0.026841579, -0.87427151, 0.48469457, 0}
{-215.40039, -576.11523, 6158.7266, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_MODELVIEW_MATRIX: 
{0.99963969, 0.023475286, -0.013014656, 0}
{0, 0.48486927, 0.87458664, 0}
{0.026841579, -0.87427151, 0.48469457, 0}
{-215.40039, -576.11523, 6158.7266, 1}
GL_VIEWPORT: {4, 165, 512, 334}



GL_CURRENT_MATRIX_ARB: 
{0.99959737, -0.011129435, 0.026101092, 0}
{0, 0.91986758, 0.39222905, 0}
{-0.028374836, -0.39207113, 0.91949719, 0}
{-250.26758, -71.263672, 4190.2871, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_MODELVIEW_MATRIX: 
{0.99959737, -0.011129435, 0.026101092, 0}
{0, 0.91986758, 0.39222905, 0}
{-0.028374836, -0.39207113, 0.91949719, 0}
{-250.26758, -71.263672, 4190.2871, 1}
GL_VIEWPORT: {4, 165, 512, 334}


GL_CURRENT_MATRIX_ARB: 
{0.23925836, 0.38083714, -0.89315093, 0}
{0, 0.91986758, 0.39222905, 0}
{0.97095597, -0.093844078, 0.22008601, 0}
{2911.0664, 370.13428, 3481.4473, 1}
GL_PROJECTION_MATRIX: 
{1.40625, -0, 0, 0}
{0, -2.1556885, 0, 0}
{0, -0, 1.0273149, 1}
{0, -0, -405.46298, 0}
GL_MODELVIEW_MATRIX: 
{0.23925836, 0.38083714, -0.89315093, 0}
{0, 0.91986758, 0.39222905, 0}
{0.97095597, -0.093844078, 0.22008601, 0}
{2911.0664, 370.13428, 3481.4473, 1}
GL_VIEWPORT: {4, 165, 512, 334}

What can do with them? Is there a way I can get the camera location with it? Or the character's global position?

Upvotes: 1

Views: 229

Answers (1)

Nicol Bolas
Nicol Bolas

Reputation: 473567

OpenGL's matrices exist for one purpose: rendering. That's why they include the camera matrix. The onus is on your code to know where objects are. You tell OpenGL where things are, and OpenGL renders them; that's how it's supposed to work.

To put it another way, if you don't know where an object is in the world, how can you expect OpenGL to, since you told it where to put it?

Upvotes: 3

Related Questions