Anything related to a beta release of JPatch: Bugs, enhancements, general discussion...


Postby sascha » Fri Jan 07, 2005 2:40 am

Here's a screenshot of the Animator I'm currently working on (click to enlarge):
* adding (loading)/removing models
* setting position and rotation of models (via text input)
* time-line motion curve display (non interactive)
* linear interpolation of morphs
* morph sliders
* VCR controls
* a single camera, fully configurable (via the mouse), perspective rendering (wireframe only)

to do:
* cubic interpolation
* editing in motion-curve window
* interpolation for position/rotation/size (objects and camera)
* load/save
* render
* multiple cameras
* import of JLipsync tracks
* shaded camera rendering (after the IRTC anim)
* scale/position/rotation tools for all objects (after the IRTC anim)
* lightsources (after the IRTC anim)

So far everything looks good and I think I'm in time. I'll put online what I have got this weekend, and start working on the IRTC animation in parallel...
The open points (except the last three) are not hard to implement...
Site Admin
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby dcuny » Fri Jan 07, 2005 4:08 am

Nice! I wondered what you'd been up to. I was ready to give up on this topic. :D

I might have a go at a slightly different dialog. Same characters, same general idea, but a bit more soft spoken:

    Rock 1: It would be nice to travel. I hear London's lovely this time of year.

    Rock 2: Hrm? Oh yes. How about somewhere in Spain?

    Rock 2 becomes a bit more excited

    Rock 1: Or Paris...

    Pause as they think about it, smiling. Then Rock 2 frowns.

    Rock 2: Pity we haven't got any feet.

    Rock 1 looks a bit unhappy at this thought.

    Rock 2: And we're carved out of stone.

    Rock 1 looks even more unhappy.

    Rock 2: Plus, we're basically inanimate objects.

    Rock 1: Yeah, it's a pity, all right.
Thoughts? It's not really much better than the first version, but I think perhaps it's a bit more clear.
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby sascha » Fri Jan 07, 2005 11:59 am

I was ready to give up on this topic.

There's always hope :D

I might have a go at a slightly different dialog...Thoughts?

I like it. It could be a prequel to the other dialog... e.g. we show the firts dialog, then a "years later..." and then the second one.
Site Admin
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby dcuny » Fri Jan 07, 2005 12:22 pm

Glad you like it. I suspect that it would be more prudent to aim for a single, simple animation this time around. With that in mind, I've simplified the dialog even more.

Here's the file: rocks2.wav (1M). I've sweetened it with a bit of reverb, but it's still a 16 bit wave file. The 8 bit version is a lot noisier, but the only one that JPatch will read. I'll post one of those if you don't have any tools to convert it. Hopefully, there'll be room in the animation to attach the higher quality sound file.

If you want, I can work out the lipsync some time tomorrow. :D
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby rjh » Fri Jan 07, 2005 4:06 pm

Hello Sascha,

This looks great! I cannot wait to get my hands on it. Can you include an initial tutorial / help file when you post this this weekend? Also, will rib sequences be available as an export option? The sliders seem customizable (per slider). How are they adder / customized? Lots of questions Sascha! Great progress (from what I see) so far. I shall be glued to this forum from now on!

Posts: 179
Joined: Thu Dec 30, 2004 10:33 pm

Postby dcuny » Sat Jan 08, 2005 8:47 am

From what Sascha was saying before, the morphs would be built in the Modeler, and imported with the model into the Animator. Later version of the Animator will support building morphs from within it.

I'm hoping that bones will be added after the IRTC entry is submitted. :o
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby sascha » Sun Jan 09, 2005 9:39 pm

Here we go...

It's still in a very early state of development.
I've added cubic interpolation and jlipsync support and fixed a few bugs. I'm still working on the other open issues though...

You can start the modeler with "java -jar jpatch_20050109.jar" and the animator with "java -jar jpatch_20050109.jar animator". The lipsync-phoneme to morph mapping is now a part of the model (and saved in its xml representation) and can be edited in the modeler (there's a new item in the test menu).

The animator works as follows:
Camera: press the mouse over one of the yellow symbols and drag. The symbols represent (from top to bottom):
* pan (rotate left/right up/down),
* walk (move forwad/backeard and rotate left/right),
* move (left/right and up/down),
* zoom and
* tilt (rotate around viewing axis).
Press the right button over the viewport to get a camera-properties popup menu.
Use the file menu to load models. The models can be selected in the combobox to the top right. If morphs are defined, they sliders appear below the combobox. Use the buttons below to position, rotate, scane or remove the model.
The vcr controls are self-explaining. You may also click into the motion-curve window to set the position (in time). The motion-curves window is only active when the selected model has morphs defined. The "load jlipsync timesheet" menuitem will apply a jlipsync timesheet to the currently selected model.
Note that you can "record" motions by moving the morph sliders during playback (that wasn't even intentional, but it's a nice side effect)

I'll continue to work on it (especially camera motion and renderer output) to be ready to render the IRTC animation (deadline is saturday)...

There are many things that need to be done (not necessarily for the IRTC anim), so discussing details about the animator does not yet make much sense, but I'd still appreciate your feedback (e.g about the layout with the sliders and the motion-curves window, or the camera controls...).
I definitely need sound playback, I hope I manage to "steal" that part of the JLipSync code :wink:
Site Admin
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby sascha » Mon Jan 10, 2005 3:40 pm

Ok, editing in motion-curve window (well, you can select keys, edit them with the sliders, or delete them...) and Inyo export is done.
Reference geometry seems to work fine (both, the JPatch output and the Inyo-rendering)

I'll try to render a little test-animation...

Still on the todo-list:
* interpolation for position/rotation/size (objects and camera)
* multiple cameras
* load/save

The rest has to wait after the IRTC.
Site Admin
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby miyoken » Mon Jan 10, 2005 3:43 pm

Hello Sascha,

It's nice.Thank you :lol:

It's time to sleep...
Good night.

Posts: 39
Joined: Mon Jun 07, 2004 11:16 am
Location: Japan

Postby dcuny » Tue Jan 11, 2005 9:37 am

Sorry for not responding earlier, but I've been out of town for the last couple of days. I understand this is just a beta, but you did ask for feedback. Sorry if it sounds negative, I know this is pretty much in prototype stage, and it's exciting to have anything to play with.

  • Play and Step buttons do different things, and they should be different controls to trigger them. It's too easy to accidentally press the Play instead of Step.
  • The icons for the VCR controls are much to small.
  • I don't think the motion curves should be solid. It doesn't really add any information.
  • There should be a grid of some sort behind the curves to indicate the time, and the current position indicator should be drawn a different color than the splines.
  • There should also be a 'knot' on the splines to indicate where the keyframes are, even if you can't grab them yet.
  • There's currently no way to remove a keyframe from a curve.
  • The Pan, Walk and Move buttons all look the same.
  • The fundamental method for tracking action is the frame number, not the timecode. You should have the time displayed somewhere, but on the motion curves and other buttons, the current frame is the fundamental unit. Time is a function of framerate, so is liable to change.
  • If the window is resized, it's not repainted.
  • Some standard phonemes (CH, SH) are missing from the phoneme model list.
  • I don't see any way to export the animation.

I think looking at some of the proposals for Blender's RVKs might prove useful in sparking some ideas if you don't want to follow A:M too closely.

As far as sound goes, the code currently in JLipSync will play back properly under Windows and Linux. I've yet to find a program that will convert the file without error, though.
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby dcuny » Tue Jan 11, 2005 10:17 am

One other thought: it might be nice if selecting something automatically brought up the appropriate motion curves. For example, selecting an object with the Rotate option would bring up the Rotate X Rotate Y and Rotate Z curves, or selecting Finger Morph would bring up the motion curve for the Finger Morph

That way, you wouldn't have to scroll though the list to get the motion curve that you needed.
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby sascha » Tue Jan 11, 2005 11:33 am

You're right, it's not even in a prototype state yet... I try to find a compromise between having something ready to create the IRTC animation but still writing code that can be reused in the final Animator. Many things will cange, e.g. the combobox will be replaced by a tree view containing all objects (models, cameras, lights, morph-groups, etc...) and of course it will be possible to select/move/scale/rotate objects via the mouse (in a camera or orthographic viewport)

Play and Step...
You mean different icons? What would the icon for "step" look like?
The icons for the VCR controls are much to small
Well, I have a 1600x1200 display :mrgreen:, I just wanted to be nice to poeple using lower resolutions...
I don't think the motion curves should be solid
It does tell you the default, and if the slider is above or below the default...
There should be a grid...
Knot, remove
It's implemented now.
The Pan, Walk and Move buttons all look the same
Any suggestions for different icons?
Some standard phonemes (CH, SH) are missing from the phoneme model list
I didn't realize that, I took the list from JLipSync...
I don't see any way to export the animation
I'm working on it :-)
The fundamental method for tracking action is the frame number, not the timecode...

I knew you were going to say that 8)
I don't have much expirence with other animation software, but still I tend to disagree. Many poeple think about computer animation as an offspring of classical animation, but I don't, even if many CG tools are derived from classical animation (e.g. keyframes, loops, etc).
I feel more comfortable when thinking about the CG animation as "virtually" shooting life action - with sets, cameras, lights, actors, etc.
Take, for example, a matrial arts scene from a film like "The Matrix" - you've got lots of different cameras, some running at different frame-rates (for slow motion). Even if in real life such senquences are not shot in a single sequence, my (maybe naive) CG attempt would be to:
1) Animate the sequence (without caring too much about cameras yet)
2) Define and animate some cameras (some to show the whole set, some for close up-shots), and adjust the lighting to support the individual cameras.
3) Watch the sequence with all camera views in parallel in preview mode and decide which camera should be active at what time (like cutting the final movie)
4) Render the sequence, but only the active cameras.

Especially when mixing realtime with slow-motion thinking in frames feels odd to me. I don't think that directors of live action movies think in frames (but I may be wrong on that).

The step buttons will advance by single frames (you can't yet configure the framerate though).
The main reason why I don't like frames is that there are too many different frame rates: Not enough that PAL uses 25 and cinema 24 fps, there's NTSC with its horrible 29.97 and 23.97fps :-(

By only dealing with timestamps, you can easily render a PAL and a NTSC version of the same animation, without any framerate-conversion artifacts.

As I sayd before, I don't have much expirence with other animaton packages, so you still can disabuse me :)
Site Admin
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby dcuny » Tue Jan 11, 2005 11:06 pm

Disabusement coming up. :D

First, the other issues.

When you're animating, you're generally going to want to be able to move back and forth in time - ahead to the next frame, back to a prior frame to adjust something, and so on. That is, go some frame and let me start adjusting the parameters at that point.

That's different from playback, where your watching animation play back. There, you're "scrubbing" through the scene, watching how it goes. You may want to pick a set of frames to loop through to watch, or grab the slider and play it back and forth to get a sense of timing.

These are two different sorts of things, but you've placed the controls for advancing to a particular frame and playing back a set of frames on the same control.

There's a third sort of option, that of capturing a performance in real time (or semi-real time). You've mentioned that you can accidentally do this with morphs, by adjusting them while the playback is running. I say "semi" real time, because you might want to be able to slow down the playback so you can animate the character like a puppet.

It's analogous to a music program. You can capture a performance real time (or "slow" time, so you can play it back faster than performed), enter it in "step mode", and play it back.

Capturing performance is fundamentally different than using keyframes and interpolating - one generates a fairly sparse dataset, the other is very busy. It's harder to edit a performance, because you have to adjust a lot more datapoints.

Not that I'm against performance capture in any way. I was going to suggest that you add it as an option eventually. One interesting thing I saw along those lines was OpenTeddy, and open source version of the Teddy modeler. Tha animation component consists of creating a series of morphs than can be placed on the screen in various locations. To "animate" the model, just move the mouse toward different morph icons. Not really that practical, but lots of fun. ;)

Anyway, that's what I meant by Play and Step.

Any suggestions for different icons?
Not yet. This brings up something I didn't mention in the prior post, because you hadn't implemented it yet. I've found it's generally easier to adjust the camera - at least, when you're dealing with an animated camera moving along a path - by treating it as an object that can be manipulated. Generally, you're only going to do small tweaks from the POV of the camera.

When animating, you're generally not going to be working from the POV of the camera. That is, you'll want to see the camera POV, but to actually manipulate the character, it's a lot easier to do things from the side, front and top view of the character. Note this is based on the character's space, not the side, front and view of the world, since the character is typically rotated in world view.

I didn't realize that, I took the list from JLipSync...
Yes, my bad. This is one of the things I hope to fix in the next release.

As far as animating without thinking about the camera, that's never done. You always have to keep the camera in mind, to ensure that the pose will "read" well, and that you're communicating the action properly. I can guarantee you that in "real" movies, this is critical as well. When possible, these shots are always worked out in as much detail as possible. That's why people storyboard, shoot animatics and have previsualization tools - very little of this is left to chance, even in CGI.

Check out some of the "extras" on DVDs like "Monsters Inc." or "Ice Age", and they'll typically have goodies, where you can see the film in various states of development. You'll get to see how a CGI film is put together. They'll show the storyboard (which typically is filmed, to give a sense of timing), the a rough animatic (where only key poses are made), followed by rough animation, final animation, set dressing and final effects. You'll find that almost all this stuff is nailed down at the storyboard level, and very little changes from that point on.

Any good animation book will discuss how important it is to stage the action relative to the camera, and make sure that it's a strong as possible. Changing the position of the camera can destroy a good animation.

As far as working in frames, it's much more natural than working in some sort of fractional time system. Even ignoring issues like framerate, it's intuitive that frame 23 follows frame 22. If I'm doing a 12 frame walkcycle, I know it repeats at frame n+12. I have no idea where 00:00:32.345 is located in a walk cycle.

Most animators think in terms of frames per second. The nice thing about that is I can ignore issues about framerate. If I like cinema FPS (I do, by the way), I can animate to that, and then choose PAL and have the computer do the hard work of interpolating it correctly. So all the different framerates are a non-issue when I'm animating.

There are still "artifacts", since I'm aiming my key poses to hit at particular frames. Other framerates won't quite look the same. But interpolation minimizes them.

Especially when mixing realtime with slow-motion thinking in frames feels odd to me. I don't think that directors of live action movies think in frames (but I may be wrong on that).

Bzzzt! You can bet than directors think in terms of framerate, just as we think in terms of 16 and 32 bit. It's just part of our consciousness.

Keep in mind that this "slow motion" business is an illusion. You still have to animate the scene as you usually do. You want to give the impression that the action is in slow motion, but you still block and animate it the way you usually do.

Animating isn't the same as live action, and I think it's a bad trap to get into. Final compositing effects (wipes, fades, etc.) should also be split off into seperate functionality. In camera sorts of effects (compositing snow, flare effects, multiplane) are a different sort of animal.

Another complaint about timecodes (though minor) is that it's too hard to parse the current time. The LED is hard to read, and there are too many digits to read. It would be better to show a single value (the current frame), with the option for typing in a value to quickly jump to a particular frame.
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby sascha » Wed Jan 12, 2005 8:21 am

I see your point.
Initially I wanted to use a display like
Code: Select all

Which would read as 0 hours, 0 minutes, 10 seconds, frame 14 (it's more clear than frame#254, isn't it? I've seen these kind of displays on professional VCRs). Additionally I can place a frame-counter aside.

The reasons why I didn't use it was the fractional NTSC framerates and that I wanted a possibility to place keys "between" frames.
I can switch to frames, but then I'll allow only integer framerates, so you'd neet to use 30 or 24 fps for NTSC (instead of 29.97 and 23.97).

So you don't like me LED display :cry:
Ok, I'll make larger buttons and a larger LED...
Site Admin
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby dcuny » Wed Jan 12, 2005 8:49 am

Well, to each their own... :D

I think after you've done a bit more animating, it'll make more sense. But there's no reason why you can't have both displays available.

I understand the bit about doing "inbetween" frames, since that's something that (conceptually) irritated me - what happens if an action takes place mid-frame? But (in my limited experience) I've never seen a seen an application that doesn't use frames.

Anyone else, feel free to prove me wrong..?

I've uploaded the latest version of Inyo to When I first compressed the directory, it weighed in at 13 Meg! I had forgotten to remove a number of models - those model files are huge. The size without the models is only about 1 Meg.
Posts: 2902
Joined: Fri May 21, 2004 6:07 am


Return to Beta

Who is online

Users browsing this forum: No registered users and 1 guest