Sign in to follow this  
glut_user

OpenGL really need help with 3D objects in openGL

Recommended Posts

glut_user    100
<div>I am trying to get 3D objects to move and interact with each other. They will collide and move in other directions when such a collusion occurs. How would I go about doing this?</div><div><br></div>

Share this post


Link to post
Share on other sites
deadstar    536
Step 1 - familiarise yourself with some basic 3D maths. For your particular case, look up 3D Vectors - find out what they are, how to add them together, how to use them to represent a position in 3D space

Step 2 - make a basic structure to represent your Vector3. In C++, this would look something like:

[code]
class Vector3
{
public:
Vector3() { x = y = z = 0.0f; }

float x;
float y;
float z;
};
[/code]

Step 2 - figure out how to apply a desired translation before rendering your 3D object :

- Create a Vector3 to represent your object's position
- Add/subtract to/from your vector depending on keyboard input
- Use OpenGL's glTranslatef() function to apply the translation before your render you object

In its very basic form, your rendering loop will need to look something like:

[code]
//Push an identity matrix to the stack
//(any glTranslate operation you do operates on the current matrix - you'll need a blank slate to work with. Look up 'world space' and 'object space' to see what we're doing here)
glPushMatrix();

//Apply the desired translation
glTranslatef(myVector.x, myVector.y, myVector.z);

//Render your object, as you're already doing

//Pop the matrix stack
glPopMatrix();
[/code]


Once you've grasped the basics, I recommend reading up on 3D Matrix - what they are, how to use them to represent a position and rotation in 3D space, how to add/multiply them together, and how they apply to OpenGL.

Share this post


Link to post
Share on other sites
glut_user    100
okay...but is there any tutorials i can find on this? i really don tknow much about openG. just how to draw some cubes etc from the nehe tutorials.

if there is a tutorial with code examples that would be great!

Share this post


Link to post
Share on other sites
glut_user    100
thanks i will have a look at that. so basically i just want to have some 3d objects that interact with each other. but they interact with each other differently, depending on the type of object. eg if you a cube hits a sphere, it bounces off. if the cube hits a cube, it goes through it. how would i do this?<div><br></div><div><span class="Apple-style-span" style="color: rgb(28, 40, 55); font-size: 11px; line-height: 16px; ">do u think this will be a very hard task for someone who has only really read up on basic stuff on openGL? (such as just chapters 1-3 on the redbook, and just nehe lessons 1-5)?&nbsp;</span></div>

Share this post


Link to post
Share on other sites
jyk    2094
I assume this is a homework assignment of some sort?

[quote]do u think this will be a very hard task for someone who has only really read up on basic stuff on openGL? (such as just chapters 1-3 on the redbook, and just nehe lessons 1-5)?[/quote]
The things you're asking about actually have very little to do with OpenGL specifically, so the Red Book won't help you much here. I think the NeHe tutorials include some examples of moving about and so forth, but I'm not sure if they cover the kinds of things you're asking about. (You could always skim through the tutorial descriptions and see though.)

The assignment you've been given sounds a little involved to me (especially if you don't already have a background in the required subjects), but what I'd recommend is to break it down and tackle one problem at a time.

For example, a good first step might be just to get the movement part working, without worrying about the terrain or the collision detection. Just getting the ball moving continually in a forward direction and turning left or right in response to user input will be a good step towards finishing the assignment. (deadstar laid out the basics of how to do this above.)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Similar Content

    • By cebugdev
      hi all,

      i am trying to build an OpenGL 2D GUI system, (yeah yeah, i know i should not be re inventing the wheel, but this is for educational and some other purpose only),
      i have built GUI system before using 2D systems such as that of HTML/JS canvas, but in 2D system, i can directly match a mouse coordinates to the actual graphic coordinates with additional computation for screen size/ratio/scale ofcourse.
      now i want to port it to OpenGL, i know that to render a 2D object in OpenGL we specify coordiantes in Clip space or use the orthographic projection, now heres what i need help about.
      1. what is the right way of rendering the GUI? is it thru drawing in clip space or switching to ortho projection?
      2. from screen coordinates (top left is 0,0 nd bottom right is width height), how can i map the mouse coordinates to OpenGL 2D so that mouse events such as button click works? In consideration ofcourse to the current screen/size dimension.
      3. when let say if the screen size/dimension is different, how to handle this? in my previous javascript 2D engine using canvas, i just have my working coordinates and then just perform the bitblk or copying my working canvas to screen canvas and scale the mouse coordinates from there, in OpenGL how to work on a multiple screen sizes (more like an OpenGL ES question).
      lastly, if you guys know any books, resources, links or tutorials that handle or discuss this, i found one with marekknows opengl game engine website but its not free,
      Just let me know. Did not have any luck finding resource in google for writing our own OpenGL GUI framework.
      IF there are no any available online, just let me know, what things do i need to look into for OpenGL and i will study them one by one to make it work.
      thank you, and looking forward to positive replies.
    • By fllwr0491
      I have a few beginner questions about tesselation that I really have no clue.
      The opengl wiki doesn't seem to talk anything about the details.
       
      What is the relationship between TCS layout out and TES layout in?
      How does the tesselator know how control points are organized?
          e.g. If TES input requests triangles, but TCS can output N vertices.
             What happens in this case?
      In this article,
      http://www.informit.com/articles/article.aspx?p=2120983
      the isoline example TCS out=4, but TES in=isoline.
      And gl_TessCoord is only a single one.
      So which ones are the control points?
      How are tesselator building primitives?
    • By Orella
      I've been developing a 2D Engine using SFML + ImGui.
      Here you can see an image
      The editor is rendered using ImGui and the scene window is a sf::RenderTexture where I draw the GameObjects and then is converted to ImGui::Image to render it in the editor.
      Now I need to create a 3D Engine during this year in my Bachelor Degree but using SDL2 + ImGui and I want to recreate what I did with the 2D Engine. 
      I've managed to render the editor like I did in the 2D Engine using this example that comes with ImGui. 
      3D Editor preview
      But I don't know how to create an equivalent of sf::RenderTexture in SDL2, so I can draw the 3D scene there and convert it to ImGui::Image to show it in the editor.
      If you can provide code will be better. And if you want me to provide any specific code tell me.
      Thanks!
    • By Picpenguin
      Hi
      I'm new to learning OpenGL and still learning C. I'm using SDL2, glew, OpenGL 3.3, linmath and stb_image.
      I started following through learnopengl.com and got through it until I had to load models. The problem is, it uses Assimp for loading models. Assimp is C++ and uses things I don't want in my program (boost for example) and C support doesn't seem that good.
      Things like glVertexAttribPointer and shaders are still confusing to me, but I have to start somewhere right?
      I can't seem to find any good loading/rendering tutorials or source code that is simple to use and easy to understand.
      I have tried this for over a week by myself, searching for solutions but so far no luck. With tinyobjloader-c and project that uses it, FantasyGolfSimulator, I was able to actually load the model with plain color (always the same color no matter what I do) on screen and move it around, but cannot figure out how to use textures or use its multiple textures with it.
      I don't ask much: I just want to load models with textures in them, maybe have lights affect them (directional spotlight etc). Also, some models have multiple parts and multiple textures in them, how can I handle those?
      Are there solutions anywhere?
      Thank you for your time. Sorry if this is a bit confusing, English isn't my native language
    • By dpadam450
      FINALLY, upgrading my engine to openGL 4. I was having some trouble so I started with a stripped down application and was wondering if VAO's are required, because I have a sample working, but if I remove the VAO then it doesn't seem to like drawing my triangle.
  • Popular Now