How to run a high res soft body sim non-destructively?

Hi,

So I know how to run a soft body sim, rig and animate a character and all the necessary details expect for one thing that I thought would be relatively simple… but not so.

Objective

I’d like to run a soft body simulation on a rigged and animated character that has a subdivision surface modifier in an active modifier stack, thereby retaining a non-destructive setup i.e. the modifier stack is necessary at rendertime in order to produce the desired result.

Setup

Currently what I’ve tried is to have the soft body modifier evaluated in the modifier stack after the subdivision surface. In other words placing the Soft body modifier at the end of the stack. But this is not possible because the error I get is that Blender does not allow non-deformer modifiers preceding the soft body modifier

Problem

Subsequently the problem is that when I want to run a soft body simulation on a subdivided, rigged and animated model I have to first apply the subdivision surface modifier at the desired resolution. This is a destructive process and not desirable. Once the subsurf is applied I can then add the soft body which can only then be evaluated at the end of the stack.

Can you please explain why soft body is evaluated in such a manner and how I can overcome this, by retaining a non-destructive workflow?

Hi, no idea why but what you could try is duplicate your rigged character an apply the subsurf modifier on this one. Then, simulate the soft body dynamics on the hires mesh and use a surface deform modifier from the hires to the lowres mesh. I haven’t tested this, it could very well not work for instance if it causes double deformations etc.

Hi Hadriscus,

Thanks for the reply. That sounds like a really clever workaround, thanks!
Of course, the scene hierarchy will look very ugly as a result and the file size will be very bloated with two of the same characters within the same scene. But perhaps running the sim on an external file then linking it back into the scene could keep the file size reasonable.

Its just too bad that it still results in applying the subsurf albeit to another model.

Thanks again much appreciated. If you can think of anything else would love to hear it :slight_smile:

Yeah, unfortunately Blender is only half-procedural and sometimes you gotta bake things down destructively. I would tell you to just use Houdini for that matter, but I’m not sure the educational version allows you to export out a heavy alembic file. I think there are limitations.
Well at least what my -theoretical- method gives you is it keeps your original rigged model intact. Then, as I don’t have a proper workstation here I can’t testify that it works, but I’m afraid it will cause double deformations - in which case you could always try to apply to surface deform modifier onto an undeformed version of the lowres model, with unlinked action for example (don’t forget to click the F button before unlinking).

However do you really need the softbody sim to run on a hires mesh ? Have you tried just placing it before subsurf in the modifier list and see how it behaves ?

Hadrien

Hi Hadrien,

Thanks for the reply and suggestions.
It is something I’ll have to have a closer look at.

Yes, I have tried placing the softB before the subsurf but unfortunately this doesn’t work as it needs to be after the armature modifier in order for it to work in conjunction with the character’s animation.

So to give you more details on the setup, the modifier stack works as such,

Subsurf
Shrinkwrap
Armature

(The armature is evaluated last)
Using this setup I can create a high resolution character for rendering and work with a realtime model in the viewport.
The shrinkwrap is necessary as its used to target the workable model’s geometry to the high resolution sculpted version of the model. The subsurf has to precede the shrinkwrap, otherwise it would just smooth the model out. Which is not the intention. I’ve found this method to produce much better results than simply using a normal map and it also renders much faster than using displacement.
The armature is at the end of the stack and unaffected by the high res data, which is only set to take effect at rendertime.

Subsequently, having the ability to place the Soft Body modifier at the end of the stack here would permit the most amount of editability in a non-destructive setup.

Of course the soft body modifier is meant to ideally work with lower resolutions and not high res data in which circumstances it performs quite well. But although this is great for simulating muscle movement and fat jiggling on most characters, using the soft body at higher res simulations also has the ability to create the effect of skin sliding as well as the other mentioned characteristics.

Hum … Well
First you need to be aware when on the modifier stack things are real ( read as data is handed to the next level ) or just fake. For now decision for soft bodies is to stick to the data that comes out of the stack before any modifier adds or removes vertices. For reasons ! As : Every time the topology is changed it would need to build the whole physics inside the soft body module again … not that it is impossible to write code caring for that … It is simply not there. Well I did try to point on this way bay back in 2007 https://en.blender.org/index.php/Dev:Source/Physics/Sprint did not show any reasonable response for this problem. Kind of frustrated I turned my head to people who would listen.
Cheers, Bjornmose

Hi bjornmose,
thanks for the reply and insightful response :slight_smile:

Every time the topology is changed it would need to build the whole physics inside the soft body module again … not that it is impossible to write code caring for that … It is simply not there. Well I did try to point on this way bay back in 2007

Personally, I think it would make sense to have this an option. Although, I realise how this could potentially cause some systems to crash that are not suited to run high resolution simulations and that many animators might not even be aware that they are about to run such a simulation before doing so. I also think that should not be at the expense of those animators that are aware of the ‘dangers’ of creating such simulations. I say this, taking into consideration that if an animator does actually want to run a high res soft body sim in a non-destructive manner then they will also probably be aware of the potential ‘dangers’. As an artist, I feel that the aesthetic that can be achieved from running high resolution simulations cannot be compared to running the same sim on lower res models. In terms of the deformation of wrinkles on a character or other details that just can’t be achieved with lower resolution models. Of course you can always run a high resolution sim destructively on a model, but this results in a messy maintenance structure and something I would certainly rather avoid.