gl using mouse to move camera around


    Oct 18 2006 | 10:09 am
    Hi,
    I'm building this interface that looks similar to what "perspective view"
    would be in a 3d modelling application. Its basically a horizontal grid
    plane with a collection of shapes/models sitting on top. Now I'd like
    implement the same mouse interfacing as a regular 3d app, were you can click
    and drag on the screen to move the camera viewpoint in relation to the
    complete scene.
    I started by putting a jit.gl.handle in the middle, but that's as far as I
    got. It outputs axis/rotation. How can I convert that to the xyz position of
    the camera? Or is this not the way to go?
    cheers,
    -thijs

    • Oct 18 2006 | 11:10 am
      i think vade posted a patch like this, search around
      2006/10/18, Thijs Koerselman :
      >
      > Hi,
      >
      > I'm building this interface that looks similar to what "perspective view"
      > would be in a 3d modelling application. Its basically a horizontal grid
      > plane with a collection of shapes/models sitting on top. Now I'd like
      > implement the same mouse interfacing as a regular 3d app, were you can click
      > and drag on the screen to move the camera viewpoint in relation to the
      > complete scene.
      >
      > I started by putting a jit.gl.handle in the middle, but that's as far as I
      > got. It outputs axis/rotation. How can I convert that to the xyz position of
      > the camera? Or is this not the way to go?
      >
      > cheers,
      >
      > -thijs
      >
      >
      >
      >
    • Oct 18 2006 | 11:21 am
      If you want to know where an object is given axis/rotation and
      position which handle outputs, take a look at the opengl docs about
      the structure of the modelview matrix. It has the basic form:
      [R R R T]
      [R R R T]
      [R R R T]
      [0 0 0 1]
      where R is rotation and T is translation. the 3x3 rotation matrix can
      be calculateed from the axis/angle representation. Note also that
      along the diagonal of the 3x3 R matrix are the glScale parameters, but
      you probably don't need to worry about this. To find a point given
      this matrix, do M*p = p' where M is the matrix above, p is your point
      and p' is your new point. Anyway, you might not need to go here, just
      thought I'd mention it since you asked.
      wes
      On 10/18/06, Thijs Koerselman wrote:
      > Hi,
      >
      > I'm building this interface that looks similar to what "perspective view"
      > would be in a 3d modelling application. Its basically a horizontal grid
      > plane with a collection of shapes/models sitting on top. Now I'd like
      > implement the same mouse interfacing as a regular 3d app, were you can click
      > and drag on the screen to move the camera viewpoint in relation to the
      > complete scene.
      >
      > I started by putting a jit.gl.handle in the middle, but that's as far as I
      > got. It outputs axis/rotation. How can I convert that to the xyz position of
      > the camera? Or is this not the way to go?
      >
      > cheers,
      >
      > -thijs
      >
      >
      >
      >
    • Oct 18 2006 | 1:37 pm
      On 10/18/06, yair reshef wrote:
      >
      > i think vade posted a patch like this, search around
      >
      >
      I found the patch, but it's not what I'm looking for. Vade's patch has 4
      fixed camera settings and some breakpoint functions to move the camera
      around. I'm looking for one viewport with a mouse interface similar to using
      an objects with a gl.handle. Only I want to move around the camera instead
      of one object.
      -thijs
    • Oct 18 2006 | 1:44 pm
      Thanks Wes, but this is exactly where my math knowledge is lacking. I'll try
      to read through the docs and see if I can figure it out, but for now I have
      no clue. It would be great though if I could finally understand these matrix
      calculations, cause I seem to keep running into them.
      -thijs
      On 10/18/06, Wesley Smith wrote:
      >
      > If you want to know where an object is given axis/rotation and
      > position which handle outputs, take a look at the opengl docs about
      > the structure of the modelview matrix. It has the basic form:
      >
      > [R R R T]
      > [R R R T]
      > [R R R T]
      > [0 0 0 1]
      >
      > where R is rotation and T is translation. the 3x3 rotation matrix can
      > be calculateed from the axis/angle representation. Note also that
      > along the diagonal of the 3x3 R matrix are the glScale parameters, but
      > you probably don't need to worry about this. To find a point given
      > this matrix, do M*p = p' where M is the matrix above, p is your point
      > and p' is your new point. Anyway, you might not need to go here, just
      > thought I'd mention it since you asked.
      >
      >
      >
    • Oct 18 2006 | 3:59 pm
      Well, check out http://en.wikipedia.org/wiki/Rotation_matrix Under the
      heading Three Dimensions is the equation M(v, theta) that shows the
      equation for converting from axis/angle to a 3x3 rot matrix.
      wes
      On 10/18/06, Thijs Koerselman wrote:
      > Thanks Wes, but this is exactly where my math knowledge is lacking. I'll try
      > to read through the docs and see if I can figure it out, but for now I have
      > no clue. It would be great though if I could finally understand these matrix
      > calculations, cause I seem to keep running into them.
      >
      > -thijs
      >
      >
      >
      >
      > On 10/18/06, Wesley Smith wrote:
      > > If you want to know where an object is given axis/rotation and
      > > position which handle outputs, take a look at the opengl docs about
      > > the structure of the modelview matrix. It has the basic form:
      > >
      > > [R R R T]
      > > [R R R T]
      > > [R R R T]
      > > [0 0 0 1]
      > >
      > > where R is rotation and T is translation. the 3x3 rotation matrix can
      > > be calculateed from the axis/angle representation. Note also that
      > > along the diagonal of the 3x3 R matrix are the glScale parameters, but
      > > you probably don't need to worry about this. To find a point given
      > > this matrix, do M*p = p' where M is the matrix above, p is your point
      > > and p' is your new point. Anyway, you might not need to go here, just
      > > thought I'd mention it since you asked.
      > >
      > >
      > >
      >
      >
      >
      >
      >
    • Oct 18 2006 | 4:18 pm
      yeah that other patch is a keyframe animator that moves the camera,
      however, here is a patch I use to rotate/move the objects in my
      patch, based off of a second jit.gl.handle/render system, so you even
      have a preview of where things are.
      I removed some other crap I had in the patch, but you can add
      position/rotation controls as messages to jit.gl.handle in the
      subpatcher, as well as name the pwindow/renderer #1_handle or
      somesuch so it can be resused
      If you move the main camera system, make sure to use an
      inherit_transform 1, otherwise things get wonky.
      v a d e //
      www.vade.info
      abstrakt.vade.info
      On Oct 18, 2006, at 9:37 AM, Thijs Koerselman wrote:
      >
      > On 10/18/06, yair reshef wrote:
      > i think vade posted a patch like this, search around
      >
      >
      > I found the patch, but it's not what I'm looking for. Vade's patch
      > has 4 fixed camera settings and some breakpoint functions to move
      > the camera around. I'm looking for one viewport with a mouse
      > interface similar to using an objects with a gl.handle. Only I want
      > to move around the camera instead of one object.
      >
      > -thijs
      >
    • Oct 18 2006 | 4:20 pm
      hehe, I try to avoid that sort of math as much as possible and figure
      out some hacks to re-use the jitter objects that have this already
      coded (see the patch I posted above).
      What might be helpful are these paches Pelado posted a while back
      very nicely done.
      v a d e //
      www.vade.info
      abstrakt.vade.info
      On Oct 18, 2006, at 11:59 AM, Wesley Smith wrote:
      > Well, check out http://en.wikipedia.org/wiki/Rotation_matrix Under the
      > heading Three Dimensions is the equation M(v, theta) that shows the
      > equation for converting from axis/angle to a 3x3 rot matrix.
      >
      > wes
      >
      > On 10/18/06, Thijs Koerselman wrote:
      >> Thanks Wes, but this is exactly where my math knowledge is
      >> lacking. I'll try
      >> to read through the docs and see if I can figure it out, but for
      >> now I have
      >> no clue. It would be great though if I could finally understand
      >> these matrix
      >> calculations, cause I seem to keep running into them.
      >>
      >> -thijs
      >>
      >>
      >>
      >>
      >> On 10/18/06, Wesley Smith wrote:
      >> > If you want to know where an object is given axis/rotation and
      >> > position which handle outputs, take a look at the opengl docs about
      >> > the structure of the modelview matrix. It has the basic form:
      >> >
      >> > [R R R T]
      >> > [R R R T]
      >> > [R R R T]
      >> > [0 0 0 1]
      >> >
      >> > where R is rotation and T is translation. the 3x3 rotation
      >> matrix can
      >> > be calculateed from the axis/angle representation. Note also that
      >> > along the diagonal of the 3x3 R matrix are the glScale
      >> parameters, but
      >> > you probably don't need to worry about this. To find a point given
      >> > this matrix, do M*p = p' where M is the matrix above, p is your
      >> point
      >> > and p' is your new point. Anyway, you might not need to go
      >> here, just
      >> > thought I'd mention it since you asked.
      >> >
      >> >
      >> >
      >>
      >>
      >>
      >>
      >>
    • Oct 18 2006 | 6:08 pm
      On 10/18/06, vade wrote:
      >
      > hehe, I try to avoid that sort of math as much as possible and figure out
      > some hacks to re-use the jitter objects that have this already coded (see
      > the patch I posted above).
      > What might be helpful are these paches Pelado posted a while back
      >
      > http://www.pelado.co.uk/?cat=4
      >
      > very nicely done.
      >
      I figured it out. I was a lot easier than I thought, but the patches were an
      eyeopener. For now I only need a handle to the render context with
      @inherit_transform 1. I'll look into matrix calculations later on. For now
      I'm all set. Thanks a lot everyone.
      cheers,
      -thijs
    • Oct 18 2006 | 7:45 pm
      If you get stuck again, and you don't mind using a little Javascript,
      you could investigate the handy matrix functions in Jitter3Dutils.js.
      -Randy
      On Oct 18, 2006, at 11:08 AM, Thijs Koerselman wrote:
      >
      > On 10/18/06, vade wrote:
      > hehe, I try to avoid that sort of math as much as possible and
      > figure out some hacks to re-use the jitter objects that have this
      > already coded (see the patch I posted above).
      >
      > What might be helpful are these paches Pelado posted a while back
      >
      > http://www.pelado.co.uk/?cat=4
      >
      > very nicely done.
      >
      >
      > I figured it out. I was a lot easier than I thought, but the
      > patches were an eyeopener. For now I only need a handle to the
      > render context with @inherit_transform 1. I'll look into matrix
      > calculations later on. For now I'm all set. Thanks a lot everyone.
      >
      > cheers,
      > -thijs
      >
      >
      >
    • Oct 19 2006 | 10:20 am
      On 10/18/06, Randy Jones wrote:
      >
      >
      >
      > If you get stuck again, and you don't mind using a little Javascript,
      > you could investigate the handy matrix functions in Jitter3Dutils.js.
      >
      > -Randy
      Thanks for the tip. I do most of my jittering in js lately so thats only a
      plus :-)
      best, -thijs