question on geometry morphing in open GL


    Oct 23 2007 | 1:27 pm
    can someone explain, or point me towards relevant documentation -
    why does jit.gl.model output the geometry matrix in a different way to other standard gl objects (nurbs, gridshape)?
    it seems jit.gl.model outputs 8 planes of float32 data, and the dim size is just one number. on the other hand nurbs outputs 12 planes with a default dim size of 20x20.
    as a test, i'm trying to do 3d geometry morphing using jit.xfade between a jit.gl.model and nurbs. when i xfade all the way to nurbs the geom disappears (or goes flat?).
    is there any way to convert a dim 20x20 geom matrix to a dim 400 matrix... would that work?
    any advice appreciated,
    j

    • Oct 24 2007 | 1:27 pm
      bump...
    • Oct 24 2007 | 1:32 pm
      those of us who use email to read the forums need a little more to
      bring topics back to our attention. can you quote the original
      thread please, instead of just bumping?
      On Oct 24, 2007, at 9:27 AM, justin wrote:
      >
      > bump...
      >
    • Oct 24 2007 | 1:44 pm
      apologies for bump without question, didnt realise that was the case.
      below is the original question:
      can someone explain, or point me towards relevant documentation -
      why does jit.gl.model output the geometry matrix in a different way to other standard gl objects (nurbs, gridshape)?
      it seems jit.gl.model outputs 8 planes of float32 data, and the dim size is just one number. on the other hand nurbs outputs 12 planes with a default dim size of 20x20.
      as a test, i'm trying to do 3d geometry morphing using jit.xfade between a jit.gl.model and nurbs. when i xfade all the way to nurbs the geom disappears (or goes flat?).
      is there any way to convert a dim 20x20 geom matrix to a dim 400 matrix... would that work?
      any advice appreciated,
      Justin
      Quote: joshua goldberg wrote on Wed, 24 October 2007 14:32
      ----------------------------------------------------
      > those of us who use email to read the forums need a little more to
      > bring topics back to our attention. can you quote the original
      > thread please, instead of just bumping?
      >
      > On Oct 24, 2007, at 9:27 AM, justin wrote:
      >
      > >
      > > bump...
      > >
      >
      >
      ----------------------------------------------------
    • Oct 24 2007 | 2:09 pm
      if you send a single bang to a jit.gl.model @matrixoutput 1, you will
      see a few things. you'll see that a primitive is output after the
      matrix name, and you'll see that there are several matrices from each
      bang- one for each disconnected shape in the model. if you need to
      crossfade geometry, you're going to have to take in account all of
      those individual matrices.
      On Oct 24, 2007, at 9:44 AM, justin wrote:
      >
      > apologies for bump without question, didnt realise that was the case.
      >
      > below is the original question:
      >
      > can someone explain, or point me towards relevant documentation -
      >
      > why does jit.gl.model output the geometry matrix in a different way
      > to other standard gl objects (nurbs, gridshape)?
      >
      > it seems jit.gl.model outputs 8 planes of float32 data, and the dim
      > size is just one number. on the other hand nurbs outputs 12 planes
      > with a default dim size of 20x20.
      >
      > as a test, i'm trying to do 3d geometry morphing using jit.xfade
      > between a jit.gl.model and nurbs. when i xfade all the way to nurbs
      > the geom disappears (or goes flat?).
      >
      > is there any way to convert a dim 20x20 geom matrix to a dim 400
      > matrix... would that work?
      >
      > any advice appreciated,
      >
      > Justin
      >
      > Quote: joshua goldberg wrote on Wed, 24 October 2007 14:32
      > ----------------------------------------------------
      >> those of us who use email to read the forums need a little more to
      >> bring topics back to our attention. can you quote the original
      >> thread please, instead of just bumping?
      >>
      >> On Oct 24, 2007, at 9:27 AM, justin wrote:
      >>
      >>>
      >>> bump...
      >>>
      >>
      >>
      > ----------------------------------------------------
      >
      >
      >
    • Oct 24 2007 | 3:39 pm
      The issue is that jit.gl.model reads arbitrary lists of triangles. It
      doesn't do any kind of downsampling internally so if you give it a
      10,000 triangle model for example, how is it going to fit into a 20x20
      matrix? Because the data is arbitrary, it is strung out into a 1D
      matrix. Hope this makes sense. It's 8 planes for (xyz) texcoord(uv)
      normal(xyz).
      wes
    • Oct 24 2007 | 3:41 pm
      Also check out the jit.gl.render helpfile which explains the geometry where plane 0 to 11 of the matrix represents x,y,z,s,t,nx,ny,nz,r,g,b,a.
      s and t are your texture coordinates.
      nx,ny,nz are normal components for the point and the rest are colors.
      I was looking at open GL documents to get a better understanding of these parameters..... anybody have some good links that explain in detail all these parameters?
    • Oct 24 2007 | 4:13 pm
      i understand what you are saying, but is there a way of doing it the other way round...
      so say you took the geometry from nurbs in a 20 x 20 matrix, can u put that in a 1 x 400 matrix? then you could xfade with an equivalent model of the same matrix size - in theory!
      or is it possible to create your own jitter patch for downsampling of arbitrary geometry matrices?
      your answers are much appreciated!
      j
      ps. i'm familiar with the jit.gl.render helpfile - and the 12 plane matrix format doesnt seem to apply to jit.gl.model, which is partly why i asked this question.
      Quote: wesley.hoke@gmail.com wrote on Wed, 24 October 2007 16:39
      ----------------------------------------------------
      > The issue is that jit.gl.model reads arbitrary lists of triangles. It
      > doesn't do any kind of downsampling internally so if you give it a
      > 10,000 triangle model for example, how is it going to fit into a 20x20
      > matrix? Because the data is arbitrary, it is strung out into a 1D
      > matrix. Hope this makes sense. It's 8 planes for (xyz) texcoord(uv)
      > normal(xyz).
      >
      > wes
      >
      ----------------------------------------------------
    • Oct 24 2007 | 4:22 pm
      > so say you took the geometry from nurbs in a 20 x 20 matrix, can u put that in a 1 x 400 matrix? then you could xfade with an equivalent model of the same matrix size - in theory!
      Yes, but you'll have to align the vertices appropriately. That might
      be tricky to do but you can try it.
      wes
    • Oct 24 2007 | 10:13 pm
      cant u just take one row at a time and put one after the other, or is "aligning vertices appropriately" more difficult than that?
      j
      Quote: wesley.hoke@gmail.com wrote on Wed, 24 October 2007 17:22
      ----------------------------------------------------
      > > so say you took the geometry from nurbs in a 20 x 20 matrix, can u put that in a 1 x 400 matrix? then you could xfade with an equivalent model of the same matrix size - in theory!
      >
      > Yes, but you'll have to align the vertices appropriately. That might
      > be tricky to do but you can try it.
      >
      > wes
      >
      ----------------------------------------------------
    • Oct 24 2007 | 10:24 pm
      Try using jit.scanwrap to shape the matrix similarly to the model and
      see what happens.
      wes
      On 10/24/07, justin wrote:
      >
      > cant u just take one row at a time and put one after the other, or is "aligning vertices appropriately" more difficult than that?
      >
      > j
      >
      > Quote: wesley.hoke@gmail.com wrote on Wed, 24 October 2007 17:22
      > ----------------------------------------------------
      > > > so say you took the geometry from nurbs in a 20 x 20 matrix, can u put that in a 1 x 400 matrix? then you could xfade with an equivalent model of the same matrix size - in theory!
      > >
      > > Yes, but you'll have to align the vertices appropriately. That might
      > > be tricky to do but you can try it.
      > >
      > > wes
      > >
      > ----------------------------------------------------
      >
      >
      >
    • Oct 24 2007 | 10:49 pm
      On Oct 24, 2007, at 3:24 PM, Wesley Smith wrote:
      > Try using jit.scanwrap to shape the matrix similarly to the model and
      > see what happens.
      Going to be really odd since triangles -> quad_grid isn't going to
      look right. In general I would say you can't easily morph between
      jit.gl.model with jit.gl.nurbs unless you *really* know what you're
      doing..i.e. you understand how to generate models so that the
      triangle ordering is specific, and you understand how to unwind a
      quad_grid (or tri_grid) to a set of triangles. It is pretty tricky.
      Most people that want to morph with jit.gl.model model their
      equivalent nurbs/gridshape/etc object in the same modelling
      environment as their model and use very specific rules. There's at
      least one thread on this somewhere in the archive.
      -Joshua
    • Oct 25 2007 | 10:16 am
      here's a patch to illustrate the idea. it seems joshua's comments on triangles -> quad_grid persist...
      i admit i'm not one of those who *really* knows what they are doing with regard to unwinding vertices from quad_grid to triangles, but i'm happy to read up on it and find out a little more before i decide whether or not it's *really* too difficult!
      if anyone has any relevant documentation (other than Jitter help)
      i'd appreciate any links.
      i have also searched the forum archives, but not found anything of much help on this topic.
      j
    • Oct 25 2007 | 9:25 pm
      it looks to me like you've done a good job realizing your initial theory. you *are* morphing from a gl.model to a gl.nurbs, no?
      what else do you want to achieve. i don't think you'll be able to get much more control with this basic morphing paradigm. are you trying to get specific vertices of the mushroom to morph to specific areas of the nurbs shape? this would be very hard (impossible) to do without modeling the nurbs shape in advance, or without knowing how the gl.nurbs vertices are indexed and modeling your gl.obj with this indexing in mind.
      3d morphing requires the objects have the same number of vertices and prior knowledge of where a vertex in one model is going to end up in the second model. i would think this would be achieved by modeling the first object, and then very carefully, in a 3d editor reshaping the first model to look like the second model, moving each vertex in the first to where it should go in the second.
      don't know if that is much help.
    • Oct 25 2007 | 10:43 pm
      that is helpful... a different approach to morphing from gl.model to standard gl gridshape / nurbs.
      thanks
      j
      Quote: robtherich wrote on Thu, 25 October 2007 22:25
      ----------------------------------------------------
      > 3d morphing requires the objects have the same number of vertices and prior knowledge of where a vertex in one model is going to end up in the second model. i would think this would be achieved by modeling the first object, and then very carefully, in a 3d editor reshaping the first model to look like the second model, moving each vertex in the first to where it should go in the second.
      >
      > don't know if that is much help.
      ----------------------------------------------------
    • Jan 31 2013 | 4:54 am
      Hi all
      I am trying morphing dae files too, according to Robs words, I can not successfully morph my dae files under triangle mode, is that because of my models don't have same amount of vertex? there's always display error or broken faces while i morphing them, only the left inlet of the xfade displayed well.
      Thanks
      L
    • Jan 31 2013 | 9:50 pm
      is that because of my models don't have same amount of vertex?
      probably. how can we say more without seeing the patch and the models in question?