GSoC: Multires/sculpting/brush improvements (N. Bishop ect...), discussion thread

Even if I know that probably this is not related much to the soc project,I’ll prefer to give some feedback here,as I think there is something not working well,the way multires propagates the changing of the shape between subdivision levels.
If there is a change in shape at the highest level,this should be propagated at the lowest.
There must be a master/slave relationship between subdvision levels.
If I’m at the first level and I do some changes,the shape have to change at second level.
If I’m at second the changes have to propagated at 3rd.
if I go to the highest level the changing have to propagated at the first level.
In these months I have tried to do some sculpt with multires(render branch 2.5) and,at the end,I found a problem really hard to solve.
Sometimes spikes and hard edges can appears in the mesh(probably for some buggy behaviour)but the problem is not the spikes themselves,but it’s that,as the propagation works now,it’s practically impossible to solve these problems(I’m not asking to solve the spikes bug but to allow people to work with multires if the spike bug appears).
If a spike appears in the mesh,no matter how many times you can smooth the region going down and up(even if you go up and down 10 times for every subdivision level ),the problem will be always in the mesh(I tried to fix a problem in a mesh for 15 days without success
I think the behaviour in 2.49 was better,it’s more standard,more close to the zbrush way(which is the correct way imo)and works even if the mesh can be damaged for an user error or for some odd bug(you simply go to the upper level and smooth the result),so is much more safe.
If you have time Nicholas please review a bit how the propagation works because it’s not much useful in this way.

Thanks for the bug reports.

renderdemon, I do hear what you’re saying, makes sense. FYI, the reason that we don’t use the “safe” system from 2.49 is that it was useless for animation. I think we can fix some of the problems you’re talking about though, I’ll get back to you on that.

I’ve uploaded a new masking screencast here:

Thanks again for the feedback,
-Nicholas

Thanks NIcholas,and really great work on the masking.:slight_smile:

Those features are incredible, I’m surprised that this thread is only a few pages long.

A few things I have to mention though, which have already been mentioned but I’ll just add a little more.

I too get the issues when going up/ down multi-res levels and using the brushes, it usually ends up in the mesh becoming very distorted, the same for when I delete a part of the mesh after enabling the modifier and/ or moving part of the mesh in edit mode and then going back into sculpt mode, I hope that these can be resolved as it’s a very hard way to work with sculpting when you are confined to a mesh which you cannot add/ subtract from and/ or move in complex ways.

Thanks :slight_smile:

Wow this texture masking is really cool.

Great work!

nicholasbishop,

perhaps when adding a multires at level 0 just copy the base mesh and then changes at higher levels can be applied to it, then have the apply lower/apply current which applys all changes at or below the current level to the base mesh. This would allow the old behaviour without having the modifier change the actual base data unless the modifier is applied.

looking nice :).

I think could be useful the HidEPt and ShowPt :wink:

http://www.pixologic.com/docs/index.php/Masking_Controls

  • can i use the short cut ?

renderdemon - I had a go today at working around the spike problem. Added a new button that can be used to reshape the base mesh so that it better conforms to the high-level sculpts. I’ve uploaded a video to Vimeo showing this in action on Suzanne, should be ready to view shortly:
http://vimeo.com/13090632

-Nicholas

This looks good Nicholas.
I was wondering anyway why the basemesh was never affected by sculpting on higher subdivision levels. In my opinion it is not very íntuitive. Somtimes you want to adjust your sculpt in Editmode and with the actual setup your basemesh could look COMPLETELY different to your higher sculpted levels.

Good decision imho!

It seems really good Nicholas,thank you very much:eyebrowlift2:

Yeah, that was #5 in my priorities on the sculpt wiki. Thanks for fixing it.

I believe there is a reason why this is not the default behavior. Anyone could sheed some light on why?

Eclectial - there are a few reasons. One, if you’ve already got your base mesh shaped like you want it, perhaps already rigged and ready for animation, you might really not want the base shape to change. (Ditto if you want to bake displacements from the original mesh.) Two, there’s a performance hit. So it should only be done if it’s really necessary. Three, it’s an imperfect transformation. As mentioned in the commit and the video description, I attempt to stop the base mesh from shrinking too much, but there’s no clearcut formula for doing this. The results might not be what you want them to be.

nicholasbishop,

here is a ‘correct’ formula for inverse catmull-clark subdivision

http://wscg.zcu.cz/wscg2006/Papers_2006/Full/B89-full.pdf

LetterRip - that’s only for reversing catmull clark on a mesh that has just been subdivided. You can’t use it on a deformed mesh (i.e. a multires mesh that’s been sculpted on.)

From the paper’s abstract: “The condition for being able to apply these formulas is that the mesh to be reversed must be generated by the subdivision of a coarse mesh”

doh! good point.

Thanks for clearing it up.

nicholasbishop,

why couldn’t the assumption be made that the location of the vertex at the lower level, is the location of the vertex if vertex location of its corresponding vert is the same as if all the verts were just the result a catmul clark subdivison? Ie ignore the actual location of the inbetween verts? Isn’t that the result we want?

That would shrink the mesh a bunch, like in 2.4x. I assume we want to avoid that.

Hmm I would probably prefer to have the option of that, since it is the most predictable in terms of what a change to the base mesh represents.

The volume loss could be fixed after adding the multires by using the shape transfer from above.

So you start with your base mesh, copy it, add a bunch of multires levels to it. Then go back to level 0, and copy shape at level 0 from your copy of the base mesh, then the offset from doing this would be propogated back up the chain of multires levels.

Or for a simplified workflow you can have an offset option or ‘preserver volume’ that calculates the offset needed to perform a catmul clark subdivision and keep the same volume from the previous level.