OpenGL rotating a camera around a point

后端 未结 4 2112
别那么骄傲
别那么骄傲 2020-12-13 06:52

In OpenGL I\'m trying to rotate a camera around a point, with camera being distance r from the point and facing the point when it rotates. In other words, I want the camera

相关标签:
4条回答
  • 2020-12-13 07:10

    it is a little confusing, but i think you should:

    // move camera a distance r away from the center
    glTranslatef(0, 0, -r);
    
    // rotate 
    glRotatef(angley, 0, 1, 0);
    glRotatef(anglex, 1, 0, 0);
    
    // move to center of circle    
    glTranslatef(-cx, -cy, -cz)
    

    note the order must NOT be changed.

    0 讨论(0)
  • 2020-12-13 07:22

    You need to either:

    • rotate the camera around the origin and then translate it (*)

    or:

    • use gluLookAt to keep the camera pointing at the center of the circle

    (*) rotation functions normally rotate about the origin. To rotate around another point P you have to:

    • translate(-P)
    • rotate
    • translate(P)
    0 讨论(0)
  • 2020-12-13 07:24

    Why bother with all the trouble of rotating the camera and not rotate the scene itself?
    It's much more straight forward. just rotate the modelview matrix around the origin. You'll get the exact same result.

    0 讨论(0)
  • 2020-12-13 07:29

    I find problems like this much easier to solve with gluLookAt(). You define a path for the camera (a circle is easy!) and keep the "center" point fixed (i.e. the thing you're looking at).

    The only possible trick is defining a good up vector--but not usually too much work. If the path and the target point are in the same plane, you can use the same up vector each time!

    0 讨论(0)
提交回复
热议问题