“Surface Deform”-modifier is overwriting the whole modifier stack #54397

Open
opened 2018-03-22 16:42:34 +01:00 by Lukas Ziechmann · 14 comments

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

Blender Version
2.79a - offical release - 8928d99270

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
bug_report_surface_deform_modifier.blend

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.

**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** [bug_report_surface_deform_modifier.blend](https://archive.blender.org/developer/F2482542/bug_report_surface_deform_modifier.blend) 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.

Added subscriber: @LukasZiechmann

Added subscriber: @LukasZiechmann

#98891 was marked as duplicate of this issue

#98891 was marked as duplicate of this issue

#93162 was marked as duplicate of this issue

#93162 was marked as duplicate of this issue

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

[bug_report_surface_deform_modifier.blend](https://archive.blender.org/developer/F2482542/bug_report_surface_deform_modifier.blend) 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..

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..
Member

Added subscribers: @LucaRood-3, @lichtwerk

Added subscribers: @LucaRood-3, @lichtwerk
Luca Rood was assigned by Philipp Oeser 2018-04-18 11:52:12 +02:00
Member

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.)

@LucaRood-3 : 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)

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 ](https://developer.blender.org/diffusion/B/browse/master/source/blender/modifiers/intern/MOD_surfacedeform.c;0afe1032695f427c2b1358981eb493370e2f63fd$1062), 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 ](https://wiki.blender.org/index.php/Dev:Source/Modifiers/Stack/API_Reference), stating: `deformVerts() should apply the deformation to the **given** vertex array.`) @LucaRood-3 : 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)
Luca Rood was unassigned by Dalai Felinto 2019-12-23 16:36:18 +01:00

Added subscriber: @hzuika

Added subscriber: @hzuika

Added subscribers: @zanqdo, @mano-wii, @angavrilov, @LucianoMunoz

Added subscribers: @zanqdo, @mano-wii, @angavrilov, @LucianoMunoz

Added subscriber: @llealloo

Added subscriber: @llealloo

Anyone have eyes on this? Surface deform is extremely useful, but working around this issue can be a real pain

Anyone have eyes on this? Surface deform is extremely useful, but working around this issue can be a real pain

Added subscriber: @geocentric_wage

Added subscriber: @geocentric_wage

Added subscriber: @kursadk

Added subscriber: @kursadk

Added subscriber: @Munkle_Mark

Added subscriber: @Munkle_Mark
Philipp Oeser removed the
Interest
Modeling
label 2023-02-09 15:30:03 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
8 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#54397
No description provided.