Page MenuHome

“Surface Deform”-modifier is overwriting the whole modifier stack
Open, Confirmed, MediumPublic

Description

System Information
Operating system and graphics card
Fedora 27 / GeForce GT 740
(OS-independent issue)

Blender Version
2.79a - offical release - 8928d99270f

Short description of error
Unlike the “Mesh Deform”-modifier, which is applying the changes in a relative fashion, the “Surface Deform”-modifier just overwrites the previous modifier/s with the absolute values of the transform.

Exact steps for others to reproduce the error
Please look into the attached blend-file to follow the examples:

Example1: adding two times the same “Surface Deform”-modifier on top of each other yields the same result as just one or in fact any number of copies of this modifier, thus rendering the nature of the modifier-stack here somewhat useless. In contrast e.g. the “Mesh Deform”-modifier would apply each copy of itself as a relative transform, thus building upon the previous modifiers in stack and changing the output-mesh with every copy of itself.

Example2: Using the “Multi Modifier”-option of the “Armature”-modifier usually takes the same data as the previous modifier as input. The results of the previous modifier and the “Armature”-modifiers are then mixed together, using the weights of the Vertex Group as “mixing guides”. But in the case of the “Surface Deform”-modifier being the previous modifier this seems not to apply and the “Multi Modifier”-option takes no effect at all.

Example3: Adding the “Surface Deform”-modifier on top of “Armature”-modifier overwrites the effect of the “Armature”-modifier (and all other modifiers prior to the “Surface Deform”-modifier.

( An additional oddity seems to me that there is no option to control the overall influence of the “Surface Deform”-modifier with a vertex group, as is usually the case with all other deform modifiers. This though is not part of the bug report and rather a small feature request – but if someone is already looking into the above issue, I figured it wouldn't hurt to mention it here as it is probably just a matter of copy and paste from any modifier that already has this implemented - I might be wrong here though of course - please forgive my ignorance.)

Thank you for taking your time to look into that issue.

Details

Type
Bug

Event Timeline


the attached file seems to be missing - sorry if I double-post it..

Just saw that "Shapekeys" of a target mesh have no effect in combination with the "Surface Deform"-modifier as well. This modifier really seems to overwrite any other transforms..

Philipp Oeser (lichtwerk) triaged this task as Confirmed, Medium priority.

Hi there,

the way the surface modifier is designed atm., you are right, it computes 'absolute' target coordinates (whereas the mesh deform modifier works with offsets).

It doesnt take the positions resulting from the previous modifiers into account, but zeros them out here, then adds the computed values back.

While I am not sure if this behaviour is mandatory and desired, I agree that it feels like violating the design of the modifier stack as a whole (though I cant find anything in particular other then the API reference, stating: deformVerts() should apply the deformation to the **given** vertex array.)

@Luca Rood (LucaRood) : I'll confirm and assign to you, could you share your thoughts? I think the code could be changed without too much hassle? (Icould give it a try, too)