Progress Report?

Discussion about the next release of JPatch, with support for subdivision surfaces (SDS).

Re: Progress Report?

Postby John VanSickle » Thu Aug 28, 2008 1:43 pm

dcuny wrote:Sounds like barycentric coordinates.

I was trying to remember if they were called barycentric, Bernstein, or Bernoulli, and decided to describe them instead of naming them.
John VanSickle
 
Posts: 189
Joined: Sat Feb 16, 2008 2:17 am

Re: Progress Report?

Postby dcuny » Sat Sep 13, 2008 5:23 am

It's been quiet here. Has anything been happening? :|
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Re: Progress Report?

Postby sascha » Tue Sep 23, 2008 2:08 pm

I've been working on integrating the morphs into the GUI, so that you actually can add and manipulate morphs.
In the sidebar, in the SdsModel panel, there's now a sub-panel called "Morphs". Here's how it looks like when all it's sub-panels are expanded:
Image
It's straightforward (from top to bottom):
* With the new button you can create a new morph
* You can select a morph from the list below (and use a popup menu to delete one)
* The advanced panel has currently only one entry, it's the exponent of the polyharmonic-spline's radial basis function.
* In the "degrees of freedom" panel you see the selected morph's degrees of freedoms (the number of degrees of freedoms must be entered when creating a new morph and can not be changed afterwards). You can change a DOF's name, min, max and current value here.
* In the sliders panel you can manipulate each DOF's current value using a slider (see note below)
* In the targets panel you see all morph-targets of the selected morph. Selecting the checkbox will make the target active (i.e. subsequent edits manipulate that morph-target, not the base shape).
* The "Target position" panel shows the position (i.e. value for each DOF) of the selected target (the position can be changed).

Note that this UI is only meant for creating morphs and applying some basic setting. To "use" a morph for rigging you could use the sliders, but a much more convenient way will be to use controls on a (yet to be implemented) head-up display.
The morph shown above has two degrees of freedom, so a 2d-slider-control could be used to control it. It would display as a square with a knob in the middle - dragging that knob would actually drag the x- and y- sliders of the morph. It could also show the position of each target, e.g. with a little cross drawn at the target position.

The GUI shown above is fully functional (i.e. it's wired to the underlying Sds, morph and morph target objects), but I have some problems with setting the parameters form the polyharmonic spline when modifying the morph. Nothing that can't be solved though...

Ah, yes, and the colors are all wrong (all panels should be shades of green, but the inner ones are gray, I'll have to take a look at this)

I' really starting to like this sidebar thing - it's easy for me to add new controls to it, and I think it's quite user-friendly too. Instead of trillions of menu entries or toolbars, you've got everything you need (right now the fully expanded sidebar takes more than two screen-heights, and that's just the beginning), but you can configure it to your needs (and to show only the panels necessary for the task at hand). If you don't work with morphs, just collapse the entire morphs panel and all that's left is a 20 pixel high "morphs" line.

What do you think?
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Re: Progress Report?

Postby rjh » Tue Sep 23, 2008 5:21 pm

Hey Sascha,

Looks very promising. I will still need to have a hands on experience before I render my final judgement. Might that be in my near future ? I sure hope so. I would really like to see how all these new systems integrate ... how they enable to modeling and animation process. Good progress ! good work ! ... now get me something i can use ! :D

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

Re: Progress Report?

Postby dcuny » Tue Sep 23, 2008 8:21 pm

sascha wrote:With the new button you can create a new morph

I like it. Using an icon instead of text on the button might give space for a delete button, and make it less language dependent.

* The advanced panel has currently only one entry, it's the exponent of the polyharmonic-spline's radial basis function.

I think I'll stick with calling in "k". ;)

* In the "degrees of freedom" panel you see the selected morph's degrees of freedoms (the number of degrees of freedoms must be entered when creating a new morph and can not be changed afterwards). You can change a DOF's name, min, max and current value here.

Assuming that I understand what DOF means here, I'm not sure "degrees of freedom" is a good name. DOF generally refers a joint. Perhaps "dimensions" a better term?

* In the targets panel you see all morph-targets of the selected morph. Selecting the checkbox will make the target active (i.e. subsequent edits manipulate that morph-target, not the base shape).

Again, the terminology is a bit confusing. I think it would be simpler for each morph to create a single morph target. Morphs can be manipulated with controllers, but they shouldn't be combined at this level.

I' really starting to like this sidebar thing - it's easy for me to add new controls to it, and I think it's quite user-friendly too.

Yeah, it's also slick because (in Max, anyway), it's pretty easy to integrate user-defined "rollups" into the GUI.

It looks very slick!
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Re: Progress Report?

Postby sascha » Wed Sep 24, 2008 7:47 am

Assuming that I understand what DOF means here, I'm not sure "degrees of freedom" is a good name. DOF generally refers a joint. Perhaps "dimensions" a better term?

Ok, dimensions then. I've used dimensions before and just changed it to "DOFs" yesterday :-)
I'll change it back.
I think it would be simpler for each morph to create a single morph target.

That's what happens if you create a morph with just one dimension - you'll get a single target (although you can add more targets later).
I really think that the multiple dimensions are necessary for smartskin morphs, but you could also create something like the puppeteer interface with this very easily.
Also, you could think of what you refer to as "morph" as "morph-target" in JPatch - creating a 2D slider and adding several targets to it, you could make something like the stop-staring interface for facial expressions. JPatch morphs can also incorporate bone rotations, so maybe it will be better to rename "morph" to "pose" and "morph target" to "morph" or "blend shape", just to avoid confusion.
Whether these multi-dimensional morphs/poses/whatever actually proof useful remains to be seen, but I'd like to think that.
Yeah, it's also slick because (in Max, anyway), it's pretty easy to integrate user-defined "rollups" into the GUI.

In the future this could be possible. Right now most of it is defined in XML - you just have to provide the necessary "hooks" in the entity classes (i.e. use "Attributes" for all things the user can change). The morph panel itself is more complicated, because there are a lot of lists and tables, and when e.g. the user selects a different morph, the targets table should adapt, etc - that's why its coded in Java. But still, it was quite straightforward to implement and to add to the sidebar, so at least for plugins it should be possible to add custom components to that sidebar too.
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Re: Progress Report?

Postby sascha » Wed Sep 24, 2008 7:50 am

Assuming that I understand what DOF means here, I'm not sure "degrees of freedom" is a good name. DOF generally refers a joint. Perhaps "dimensions" a better term?

Ok, dimensions then. I've used dimensions before and just changed it to "DOFs" yesterday :-)
I'll change it back.
I think it would be simpler for each morph to create a single morph target.

That's what happens if you create a morph with just one dimension - you'll get a single target (although you can add more targets later).
I really think that the multiple dimensions are necessary for smartskin morphs, but you could also create something like the puppeteer interface with this very easily.
Also, you could think of what you refer to as "morph" as "morph-target" in JPatch - creating a 2D slider and adding several targets to it, you could make something like the stop-staring interface for facial expressions. JPatch morphs can also incorporate bone rotations, so maybe it will be better to rename "morph" to "pose" and "morph target" to "morph" or "blend shape", just to avoid confusion.
Whether these multi-dimensional morphs/poses/whatever actually proof useful remains to be seen, but I'd like to think that.
Yeah, it's also slick because (in Max, anyway), it's pretty easy to integrate user-defined "rollups" into the GUI.

In the future this could be possible. Right now most of it is defined in XML - you just have to provide the necessary "hooks" in the entity classes (i.e. use "Attributes" for all things the user can change). The morph panel itself is more complicated, because there are a lot of lists and tables, and when e.g. the user selects a different morph, the targets table should adapt, etc - that's why its coded in Java. But still, it was quite straightforward to implement and to add to the sidebar, so at least for plugins it should be possible to add custom components to that sidebar too.
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Re: Progress Report?

Postby dcuny » Wed Sep 24, 2008 8:57 pm

sascha wrote:I'll change it back.

Good thing it's all XML. :)

I really think that the multiple dimensions are necessary for smartskin morphs, but you could also create something like the puppeteer interface with this very easily.

From a user perspective, it makes sense to fold multiple in dimensions. In this case, they're directly tied to the joint's DOF, and are driven by the joint angle values.

On the other hand, dimensions is more abstract. You can tie together any set of morphs, without any rhyme or reason.

Could you give me an example of multiple dimension morphs (other than smartskin) that can't just as easily be accomplished by creating single target morphs and tying them together on a control? If you can, I'll buy into them. If not, I'm not sure they're a good idea.
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Re: Progress Report?

Postby sascha » Wed Sep 24, 2008 9:23 pm

Could you give me an example of multiple dimension morphs (other than smartskin) that can't just as easily be accomplished by creating single target morphs and tying them together on a control? If you can, I'll buy into them. If not, I'm not sure they're a good idea.

I'd like to keep the underlying code as simple as possible. I need this polyharmonic splines for smartskin anyway, and allthough they're overkill for standard 1-dimensional morphs, they still can handle them (and pretty fast too), so I'm using them for *all* morphs.
Of course, implementation details are no excuse for compromises in the GUI, and perhaps it would be better to have two separate kinds of morphs in the GUI - a simple one with 1 dimension and 1 target, and a complex one with all the bells and whistles. I don't want to decide that now, fact is that once the GUI for the complex ones works, it will be a walk in the park to add a simplified GUI just for the 1D case.

...by creating single target morphs and tying them together on a control...

You're getting close. That's exactly the issue. Suppose you've got multiple "morph targets" on that 2D control, say - for example - one at each corner. Now the knob is somewhere in between, how should the "control" interpolate between those 4 targets?

That's where this "polyharmonic spline" thing comes into play. It does exactly that - spatially interpolating in any number of dimensions. I've abstracted that into what I currently call "morph": you've got any number of "control dimensions" (aka DOFs) - in our example two - and any number of "spline-centers" (aka morph-targets), again with any number of dimensions (in our case displacement vectors for the points that have been moved).

Long story short, in my code, what I call "morph" is the part that interpolates between the "morph targets". I agree that this nomenclature could be misleading, perhaps "morph controller" would be better, I'm open for suggestions.
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Re: Progress Report?

Postby sascha » Thu Sep 25, 2008 8:12 pm

The morph is now using the polyharmonic spline, and first tests look promising - I've created a 2D morph with two targets (one "open mouth" and one "smile" shape), and moving both slider to their maximum yields a combination of both shapes, as to be expected. To try out some more sophisticated morphs with more than two targets I first need to write an actual 2D control, using two sliders isn't very intuitive.

The really nice thing about it is that all manipulator tools are totally agnostic of the morphs. The vertices actually dispatch all modifications to the currently active morph-target, so the tools can focus on moving vertices, and all the magic happens behind the scene - this is much more elegant than what I did in JPatch 0.4...

To be able to test this quickly I'll add it as a simple Swing widget and display it on a separate window, later this will move to an overlay "head up" style display.
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Re: Progress Report?

Postby sascha » Fri Sep 26, 2008 7:19 pm

This thing actually works, I can't believe it ;-)
Still with two separate sliders, but once there's a 2D control this will be real fun. We've got morphs back, yippee!

This was a small step for a man, but one giant leap... well, perhaps I'm a little too euphoric. Still, this was the last big question mark, all the other mandatory features should be straightforward to implement.

Last time I checked the scene graph was functioning properly, so now that morphs are in place (and assuming that I didn't break the scene-graph), I'll reactivate all the tools. A weld tool is already working, the only mandatory editing tools is a "split and insert" tool that allows to insert new edges (either between existing vertices or by splitting existing edges and thus inserting new vertices).
Bones are almost ready, undo/redo needs to be checked for each edit, but all in all I think there's (still or again) light at the end of the tunnel.

I think bones can wait a few more weeks, top priority is getting all the editing tools to work, full undo/redo support and of course file IO - with these features I guess JPatch is back in the race, and you'll get a pretty decent SDS modeler.

What remains are:
* Rendering (easy)
* Bones (easy, and almost finished)
* Creases (some work, but nothing serious)
* Motion curves and dope sheet (easy)
* Constraints (tricky, but doable)

and we're back in the animation business :-)

Up to here everything is quite complete in my head, I've merely got to type it (don't remind me that I've said that).
The more advanced features are a shader editor, layers and a compositor, hair/cloth/fluid/etc simulations, particle systems,... These will require a lot more thinking and some experimentation.
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Re: Progress Report?

Postby rjh » Fri Sep 26, 2008 9:14 pm

This thing actually works ...


"Hallelujah !" he conducts a full choir to sing backed by a full orchestra ... :D

This is great Sascha ... congrats for the milestone. I guess we will get our test version soon ... ?

and we're back in the animation business


Music to my ears ... i can't wait to try the "new and improved" Jpatch.

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

Re: Progress Report?

Postby dcuny » Fri Sep 26, 2008 9:58 pm

sascha wrote:This thing actually works, I can't believe it ;-)

Congratulations! It'll be good to start doing some animation again.

It'll also give me some motivation to start working with Marin again. :)
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Re: Progress Report?

Postby dcuny » Wed Oct 29, 2008 10:38 pm

Any news? :o
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Re: Progress Report?

Postby sascha » Wed Oct 29, 2008 11:25 pm

Not much, I'm afraid - kids keep me busy, but things are getting better (they've finally started to play together without trying to kill each other :-)), but the past two weeks I was simply too tired for late-night coding sessions.

I've been working on the head-up display (e.g. for 2D sliders) and it looks quite nice. It's actually a small window manager that can show multiple HUDs on each viewport. They're all resizable and can be minimized and maximized. But I've stopped working on that an focus on the modeler now.
The main job is getting things up and running that already used to work fine, but do not anymore because I've completely revamped some sub-system - quite boring, as you can imagine.
I ran into a stupid bug that kept me from working on it for the last two weeks, but finally fixed it today. The TODO for the modeler basically is:
* fix scale/rotate/translate tools to use world-space and the new overlay drawing mode
* add a few additional modes to existing tools (like add-edge and tweak)
* ensure that undo/redo is ok for every edit
* xml export (mostly done) and import (should be simple)
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

PreviousNext

Return to JPatch SDS Minimal Development

Who is online

Users browsing this forum: No registered users and 1 guest

cron