Jump to content

  • Log In with Google      Sign In   
  • Create Account


Drawing a Sphere around the "Camera"


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 Caglow   Members   -  Reputation: 122

Like
0Likes
Like

Posted 29 March 2009 - 02:46 PM

First of all, I'm new here (and to OpenGL/GLUT for that matter) so if there's something that seems extremely obvious, sorry. Anyways, I'm trying to draw a sphere with the center lying on the camera. I've managed to draw the sphere for now...and need something to move the camera into the middle. I'm quite sure a sphere is hollow. If it isn't, then I need to get it to be. This is for a planetarium program which I'm converting from GDI+ to OpenGL.

Sponsor:

#2 Dunge   Members   -  Reputation: 405

Like
0Likes
Like

Posted 29 March 2009 - 06:06 PM

Where is it if it's not in the center of the world? Check the part where you call glMatrixMode(GL_MODELVIEW);

Every matrix transformation done after that modify the position of the object. You can either have some combined basic transformations (glRotatef, glTranslatef) or use gluLookAt which is acting as a "camera".

If you want to draw your sphere right at the middle of the camera, just don't do any transformation at all. Right after you set the GL_MODELVIEW matrix mode, call glLoadIdentity() and remove every other transformation you can find. Then draw your sphere, and it should appear at world pos (0,0,0), in your face.

Of course, your sphere model is probably made so the normals point from the exterior faces, so if you want to see the inside you will have to change the culling mode with glCullFace().

#3 lc_overlord   Members   -  Reputation: 435

Like
0Likes
Like

Posted 29 March 2009 - 06:12 PM

Yes it's hollow, as with everything it's made up from infinitely thin polygons.
It's also pretty simple to do, just call glLoadIdentity(); to reset the matrix.
This will render the sphere at coordinates 0,0,0, then to make it visible you have to make sure the spheres radius is larger than the nearplane and smaller than the farplane, then you need to call glFrontFace(GL_CW); to view the backside of the polygons (you have to reset that state later with GL_CCW).

#4 Grafalgar   Members   -  Reputation: 544

Like
0Likes
Like

Posted 29 March 2009 - 06:33 PM

If you just set the MODELVIEW matrix to identity you'll get the "inside" of the sphere drawn as has been said already, but you won't be able to rotate the view to look around the sphere. I'd imagine that would completely defeat the purpose ;)

Try the following instead:

- Push Matrix
- Load Identity
- Apply the view matrix
- Translate to the camera's position
- Render Sphere (inside out)
- Pop matrix

So, what you're doing is building up a MODELVIEW matrix with the translated exactly over the camera, and rendering that. This way, if you rotate the camera, you'll around inside of the sphere.

If you know the camera's rotation then you can replace the 3rd and 4th steps with a glRotate, and you'll have the same effect.



#5 Caglow   Members   -  Reputation: 122

Like
0Likes
Like

Posted 04 April 2009 - 04:54 AM

It works! Thanks for the help!




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS