Feature Request: Model Animations

Axiom-Crux's icon

I have a feature request for the next paid update to jitter. I would happily pay for just this update. The ability to load 3d animated files from maya or 3ds max. I noticed director has the capability to import animations from 3dsmax and that works great, I would love for jitter to have that same ability. It would really create exponential abilities in terms of realtime opengl patches. The ability to controll what frame of the animation, and even manipulate bones or modifiers would be amazing. Beyond that it would also be really awesome to have gl objects that do things like traditional 3d modeling, IE, twist, bend, lathe, bulge, maybe even soft or rigid body dynamics, and the other standard 3d modeling options. Im sure there are others out there who share this desire, I wouuld love for others to post to get a petition going.

Thanks so much!
NCRIII

vade's icon

you can do this with OBJ groupIDs with jit.gl.model.

I havent had success, but others have. different modeling programs
export slightly differently formatted OBJs, so they might need some
munging.

Apparently Maya can output OBJs this way. I dont have Maya, so I cant
give you the details :)

On Dec 26, 2006, at 2:59 PM, Nicholas C. Raftis III wrote:

>
> I have a feature request for the next paid update to jitter. I
> would happily pay for just this update. The ability to load 3d
> animated files from maya or 3ds max. I noticed director has the
> capability to import animations from 3dsmax and that works great, I
> would love for jitter to have that same ability. It would really
> create exponential abilities in terms of realtime opengl patches.
> The ability to controll what frame of the animation, and even
> manipulate bones or modifiers would be amazing. Beyond that it
> would also be really awesome to have gl objects that do things like
> traditional 3d modeling, IE, twist, bend, lathe, bulge, maybe even
> soft or rigid body dynamics, and the other standard 3d modeling
> options. Im sure there are others out there who share this desire,
> I wouuld love for others to post to get a petition going.
>
> Thanks so much!
> NCRIII
> --
> -=ili!ili=- www.Axiom-Crux.net -=ili!ili=-

v a d e //

www.vade.info
abstrakt.vade.info

Axiom-Crux's icon

Yeah kindof, but its rather ghetto. From what I have heard, you have to make each frame a seperate model group and that in itself is a pain, but what Im picturing would have alot more potential, and couldn't possibly be that hard to impliment from where jitter currently is. Just imagine setting up an abstract with a bone system and loading it in jitter, and manipulating the bones, shifting the shape around and getting more intuitive control over the forms. I love max/msp/jitter, but theres something that is counter-intuitive about trying to do anything streightforward with it. I think it would be ideal to have both the traditional capabilities mixed in with the crazy abstract mathematical abilities. With that you could practically make a 3d videogame with jitter.

Gregory Taylor's icon

>...but what Im picturing would have alot more potential, and
>couldn't possibly be that hard to impliment from where jitter
>currently is.

...and you know this *how?*

;-)
--
on the floor there's a long wooden table/on the table there's an open book/
on the page there's a detailed drawing/and on the drawing is the name I took
Gregory Taylor http://www.rtqe.net

Axiom-Crux's icon

Im not saying that I know that for a fact, but concidering everything thats already there in the current model object, it couldn't be that hard to make it accept the other dimension of time, which is what? another dimension of the array/matrix?

More importantly, why are people acting like this is a bad idea or something? I mean maybe Im nuts but I think it would really make the creative potential with opengl/jitter vastly better with these features. In other words, whats the point of saying that? Do you really dislike this idea, Gregory, and Vade? Is there some other feature that you think would be more useful? I feel that they tackled everything else pretty well so far and this is something that I really would love to have, and Im sure Im not the only one.

So whats up, does anyone out there think this is a good idea?

Wesley Smith's icon

Animating 3D models can be easily done with a vertex type opf vertex
shader called a "vertex skinning" shader". I made one of these in Cg
recently for some simple geometry and it actually wasn't that hard.
The most difficult part with this approach is describing the data.
For each vertex, you assign a section of the model to it. For
instance, a vertex near an elbow will potentially be 60% elbow and 40%
arm. When that vertex's position is calculated, you take the arm
modelview matrix and calculate the vertex's position and rotation and
multiply it by .4 and likewise for the elbow modelview and multiply
that by .6. Sum the results together and you have a smoothly
interpolated surface where the bones in this example are the elbow and
the arm. In the shader I made I had 3 weights per vertex although the
standard is 4 for character animations. This is actually how most
video game character animations are done now because you only need to
describe the bones and how they're connected and the provide weights
to the "skin" which are the vertices and then you have an infinite
number of animations that will look appropriate and all you need to
manipulate are the bones. IMHO this is much nicer and more flexible
than importing a set animation from 3D modelling software.

wes

Gregory Taylor's icon

>More importantly, why are people acting like this is a bad idea or
>something? I mean maybe Im nuts but I think it would really make
>the creative potential with opengl/jitter vastly better with these
>features. In other words, whats the point of saying that? Do you
>really dislike this idea, Gregory, and Vade?

Generally speaking, if some higher level functionality isn't present
in Max/MSP/Jitter, it will be because it's already possible to do a
thing, and the fact that it is doable at present means that no one
has made a lot of decisions in the name of "making things simple."
This is something that, sadly, is often not apparent to people who
haven't investigated what is currently available. I certainly don't know
that you're such a person, of course.

>Is there some other feature that you think would be more useful?

By virtue of the fact that Max/MSP/Jitter is a more general programming
environment, there are any number of things that one might deem "more"
useful, and I would never presume to speak for everyone. I personally
don't think that "making things easy" is a better goal than "making things
possible," but your mileage may vary.
--
on the floor there's a long wooden table/on the table there's an open book/
on the page there's a detailed drawing/and on the drawing is the name I took
Gregory Taylor http://www.rtqe.net

Gregory Taylor's icon

>Animating 3D models can be easily done with a vertex type opf vertex
>shader called a "vertex skinning" shader". I made one of these in Cg
>recently for some simple geometry and it actually wasn't that hard.
>The most difficult part with this approach is describing the data.
>For each vertex, you assign a section of the model to it. For
>instance, a vertex near an elbow will potentially be 60% elbow and 40%
>arm. When that vertex's position is calculated, you take the arm
>modelview matrix and calculate the vertex's position and rotation and
>multiply it by .4 and likewise for the elbow modelview and multiply
>that by .6. Sum the results together and you have a smoothly
>interpolated surface where the bones in this example are the elbow and
>the arm. In the shader I made I had 3 weights per vertex although the
>standard is 4 for character animations. This is actually how most
>video game character animations are done now because you only need to
>describe the bones and how they're connected and the provide weights
>to the "skin" which are the vertices and then you have an infinite
>number of animations that will look appropriate and all you need to
>manipulate are the bones. IMHO this is much nicer and more flexible
>than importing a set animation from 3D modelling software.

Wow. That was so clearly and succinctly put that not only do I get
what you're talking about, it's pretty clear *why* that would be more
flexible than choosing some arbitrary bunch of modelling software
and then trying to import it.
--
on the floor there's a long wooden table/on the table there's an open book/
on the page there's a detailed drawing/and on the drawing is the name I took
Gregory Taylor http://www.rtqe.net

Axiom-Crux's icon

I was alwasy under the impression that jitter and max were programming languages that bridge the gap between creativity and low level c type programming, with the focus on making things "easier" then having to program 100 pages of code to make a simple sphere.

and Wes, Thats not "easier" unless your an MIT master of science, vs a person who has a BFA in art, though I would love to see the code cause I have no clue how to make what you mentioned, and it could be a temporary substitute for what it is I am looking for. Though shaders have never worked so well for me.

I still cant belive that you are all against this. Whats wrong with having somethign thats intuitive and that doesn't require days of programming. Im not interested in loading a character model and trying to very unintuitively animate it with lists and the like. From what Ive experienced of game animation, they do infact load animations from maya, and you can't create a realistic/expressive walk cycle in a reasonable ammount of time from sitting there typing numbers. I just got a BFE in animation, and though I don't work in the game industry, thats what we learned.

In fact Im not even interested in using characters, I just want the ability to make something in maya and load it up and work with the form. At this point I have no idea how to transpose the matrix in the manner you stated. All Im saying is I load quicktime, sound files and the like and skip through their time and would sure love to do it with animated 3d forms.

Do you all just like to argue, or did you all get masters from MIT and would be sad if you had something that didn't require your deep level of programming knowledge, or do you like to gang up on someone who is somehow inferior to you as a programmer or whats the issue here? I just dont' understand this response or mentality behind it. This is something that I really would love to have the ability to do, and Im sorry if you don't have experience in maya or a use for it yourselves, but why shoot down my desire?

vade's icon

Im... not sure where you got the idea that I, or anyone else for the
matter is against it. I made it pretty clear in my email what was
possible, and that I personally hadnt explored it.

Do I want to be able to do this as painlessly as possible - *fucking
of course*

Did you ask if it was possible now? Wesley gave an answer far
superior to mine. And who said anything about having to use that
technique on characters?

You load a quicktime, load a sound file, and you know how to make
those. Maybe take the time to learn how to make Object files with
nested GroupIDs and interpolate against them. In fact, I can already
think of one easy way to morph between different jit.gl.model files
with group ids (as long as they have the same vertex count and
ordering) and a jit.xfade and jit.gl.mesh.

Anyway. Dont put words in my mouth. Id rather be wrong than mis-
represented, and in this case, I dont believe I was wrong.

On Dec 26, 2006, at 9:59 PM, Nicholas C. Raftis III wrote:

>
> I was alwasy under the impression that jitter and max were
> programming languages that bridge the gap between creativity and
> low level c type programming, with the focus on making things
> "easier" then having to program 100 pages of code to make a simple
> sphere.
>
> and Wes, Thats not "easier" unless your an MIT master of science,
> vs a person who has a BFA in art, though I would love to see the
> code cause I have no clue how to make what you mentioned, and it
> could be a temporary substitute for what it is I am looking for.
> Though shaders have never worked so well for me.
>
> I still cant belive that you are all against this. Whats wrong
> with having somethign thats intuitive and that doesn't require days
> of programming. Im not interested in loading a character model and
> trying to very unintuitively animate it with lists and the like.
> From what Ive experienced of game animation, they do infact load
> animations from maya, and you can't create a realistic/expressive
> walk cycle in a reasonable ammount of time from sitting there
> typing numbers. I just got a BFE in animation, and though I don't
> work in the game industry, thats what we learned.
>
> In fact Im not even interested in using characters, I just want the
> ability to make something in maya and load it up and work with the
> form. At this point I have no idea how to transpose the matrix in
> the manner you stated. All Im saying is I load quicktime, sound
> files and the like and skip through their time and would sure love
> to do it with animated 3d forms.
>
> Do you all just like to argue, or did you all get masters from MIT
> and would be sad if you had something that didn't require your deep
> level of programming knowledge, or do you like to gang up on
> someone who is somehow inferior to you as a programmer or whats the
> issue here? I just dont' understand this response or mentality
> behind it. This is something that I really would love to have the
> ability to do, and Im sorry if you don't have experience in maya or
> a use for it yourselves, but why shoot down my desire?
>
>
> --
> -=ili!ili=- www.Axiom-Crux.net -=ili!ili=-

v a d e //

www.vade.info
abstrakt.vade.info

Gregory Taylor's icon

>...In fact, I can already think of one easy way to morph between
>different jit.gl.model files with group ids (as long as they have
>the same vertex count and ordering) and a jit.xfade and jit.gl.mesh.

And until one can puzzle out jit.gl.mesh, this should demonstrate
jit.fade at work. Perfect for those cutting-edge throbbing donuts....

Max Patch
Copy patch and select New From Clipboard in Max.

--
on the floor there's a long wooden table/on the table there's an open book/
on the page there's a detailed drawing/and on the drawing is the name I took
Gregory Taylor http://www.rtqe.net

Axiom-Crux's icon

I didn't mean to misdirect my frustrations. Vade, your response didn't bother me and was very forward and at least in the vein of what Im going for, I was just disheartened at the responses of Gregory.

Yes, xfading models is cool (but shreds them up if there #points is even a bit off), and groupids is a bit close as well, but can you imagine how long it would take to translate a simple 500 frame animation with morphing shapes... I mean would that take 500 different groups vs just scrubbing through 1 number that represents time? and its also restrictive in that sense that you have to have every shape be the same point ids.

Ive known my current solution to getting "sort of" what im looking for, but Im just saying I thought this would be cool, and was hopeing for a couple "yeah that would be cool, and maybe this too" type responses.

Axiom-Crux's icon

At this page there is a cool use of model xfade, but shows the shredding I mentioned, and also has that un-eased look of abrupt stops.

http://adsr.jp/download/
get the file follow.kr

Speaking of which, does anyone know how to do easing?

vade's icon

what I would do is make 5 or so states, and load up 2 jit.gl.models
each with a different key and with matrix output 1

fade from one model to the other with group ID 1 and 2. once its all
the way at 2, set the gl model that was groupID 1 to 3, fade back,
set group ID 2 to 4, fade back. If the number of verts line up, xfade
should take care of the animation.

All you would be doing is making keyframes, and not a single frame
for every frame.

Send the list a model with group IDs representing 4 or so keyframes
of animation, im curious what some people could do with it. id play
around :)

On Dec 27, 2006, at 12:16 PM, Nicholas C. Raftis III wrote:

>
> I didn't mean to misdirect my frustrations. Vade, your response
> didn't bother me and was very forward and at least in the vein of
> what Im going for, I was just disheartened at the responses of
> Gregory.
>
> Yes, xfading models is cool (but shreds them up if there #points is
> even a bit off), and groupids is a bit close as well, but can you
> imagine how long it would take to translate a simple 500 frame
> animation with morphing shapes... I mean would that take 500
> different groups vs just scrubbing through 1 number that represents
> time? and its also restrictive in that sense that you have to have
> every shape be the same point ids.
>
> Ive known my current solution to getting "sort of" what im looking
> for, but Im just saying I thought this would be cool, and was
> hopeing for a couple "yeah that would be cool, and maybe this too"
> type responses.
> --
> -=ili!ili=- www.Axiom-Crux.net -=ili!ili=-

v a d e //

www.vade.info
abstrakt.vade.info

Joshua Kit Clayton's icon

On Dec 26, 2006, at 6:59 PM, Nicholas C. Raftis III wrote:

> I still cant belive that you are all against this.

I don't think anyone's against this Nicholas. However, complete Maya
animation support is in fact a fair amount of work. Some support for
animation (not sure exactly to what extent) is one of many features
slated for Jitter 2.0. No time estimate for when that will happen.

Thanks for the feedback and letting us know what you're interested in.

-Joshua

vade's icon

Hi. I actually stumbled upon a cheap 3D editor that will properly
output obj files for OS X that jitter jit.gl.model will respect the
drawgroups of (Ive had a hell of a time with this earlier)

The editor is Cheetah3D 1.6.

Attached is an OBJ file with 4 groups, and a jitter patch with
exhibits perfect keyframe vertex interpolation over 4 groupIDs.

enjoy:

To make the model (models, technically), what I did was:

1) create a sphere in the editor - name it '1'
2) duplicate the sphere, name the new sphere '2'. Make sphere 1
invisible. Select sphere 2, edit it, but do not move it, just
extrude /shape/etc.
3) duplicate sphere '2', hide sphere 2, name new sphere sphere 3.
edit it.
4) repeat for sphere 4 -> n

Toggle visibility on all models

export to obj.

Merry fucking xmas. :)

"now I have a machine gun - Ho ho ho"

v a d e //

www.vade.info
abstrakt.vade.info

Axiom-Crux's icon

You rule vade!
and Joshua!

YAY!

AdamW's icon

I think the FBX format would be an interesting route. It's supported by almost all high-end 3D-packages. Like a jit.qt.movie for 3D with matrix output etc etc. I don't think this would compromise any of the flexibility in Jitter.

Joshua Kit Clayton's icon

On Dec 28, 2006, at 7:38 AM, Adam Wittsell wrote:

>
> I think the FBX format would be an interesting route. It's
> supported by almost all high-end 3D-packages. Like a jit.qt.movie
> for 3D with matrix output etc etc. I don't think this would
> compromise any of the flexibility in Jitter.

Yes, basically, we are looking at support for either FBX or COLLADA,
though perhaps not support for everything these formats can include.
In the end it shouldn't matter too much for users which one to
choose, since there is now FBXCOLLADA conversion in the latest FBX
implementation. COLLADA, since it is more open than FBX, is more
appealing to me than FBX. Another thing which makes me lean towards
COLLADA is their COLLADA FX shader fofmat which supports GLSL. But
then again, we're focusing on Max 5 development at the moment, so
there's still a lot of time for us to make decisions w/r/t which
we'll support in Jitter 2.0. Thanks for your patience in the meantime.

-Joshua