Deformation Axis option for simple deform modifier #47435

Closed
opened 2016-02-16 16:08:43 +01:00 by Campbell Barton · 25 comments

Benefits: Ability to set the deform axis without an object.

Description: Currently deformation happens on the object's local Z-axis,
The only way to change this is to use an object which sets the axis+origin.

Otherwise you have to rotate it in edit-mode (or apply the rotation later in object-mode) to fit the axis of deformation instead of changing the axis to fit your model (as it should be).

A simple option to change the axis in the modifier would solve so many headaches while modeling.

An X/Y/Z option would have to be added (see the screw modifier).

Challenges:

  • Once this is added, the Lock X and Y axis buttons need to be updated. (Could change their description to say X/Y axis as projected on dominant axis).
  • Old files loaded will need to have the axis set to Z, (see the do_versions function).
**Benefits:** Ability to set the deform axis without an object. **Description:** Currently deformation happens on the object's local Z-axis, The only way to change this is to use an object which sets the axis+origin. Otherwise you have to rotate it in edit-mode (or apply the rotation later in object-mode) to fit the axis of deformation instead of changing the axis to fit your model (as it should be). A simple option to change the axis in the modifier would solve so many headaches while modeling. An X/Y/Z option would have to be added (see the screw modifier). **Challenges:** - Once this is added, the Lock X and Y axis buttons need to be updated. *(Could change their description to say X/Y axis as projected on dominant axis).* - Old files loaded will need to have the axis set to `Z`, (see the `do_versions` function).
Author
Owner

Changed status to: 'Open'

Changed status to: 'Open'
Author
Owner

Added subscriber: @ideasman42

Added subscriber: @ideasman42

Added subscriber: @michaelknubben

Added subscriber: @michaelknubben

Added subscriber: @peti

Added subscriber: @peti
Peti Szabó self-assigned this 2016-03-22 02:50:23 +01:00

Hello! I'd like to work on this.

Hello! I'd like to work on this.
To give some context as to a possible use for this: http://blenderartists.org/forum/showthread.php?392881-Looking-for-a-definitive-foolproof-way-of-bending-with-the-Simple-Deform-modifier

In #47435#365509, @michaelknubben wrote:
To give some context as to a possible use for this:

http://blenderartists.org/forum/showthread.php?392881-Looking-for-a-definitive-foolproof-way-of-bending-with-the-Simple-Deform-modifier

Thanks, I'll take a look.

> In #47435#365509, @michaelknubben wrote: > To give some context as to a possible use for this: > > http://blenderartists.org/forum/showthread.php?392881-Looking-for-a-definitive-foolproof-way-of-bending-with-the-Simple-Deform-modifier Thanks, I'll take a look.

Added subscriber: @lamoot

Added subscriber: @lamoot

About a year ago someone posted proposed improvements for the simple deform modifier and they look awesome.
https://www.youtube.com/watch?v=dOpJRUI_czo

The original post can be found here and there's also a python tool that could be used as a reference.
http://lists.blender.org/pipermail/bf-funboard/2015-March/006066.html

Python script:
https://github.com/mifth/mifthtools/blob/master/blender/addons/mira_tools/mi_deform.py

Granted, this goes beyond the original scope of this task, but do you think it would be possible to make the simple deform modifier behave as it does in the video I linked?

About a year ago someone posted proposed improvements for the simple deform modifier and they look awesome. https://www.youtube.com/watch?v=dOpJRUI_czo The original post can be found here and there's also a python tool that could be used as a reference. http://lists.blender.org/pipermail/bf-funboard/2015-March/006066.html Python script: https://github.com/mifth/mifthtools/blob/master/blender/addons/mira_tools/mi_deform.py Granted, this goes beyond the original scope of this task, but do you think it would be possible to make the simple deform modifier behave as it does in the video I linked?

In #47435#365628, @lamoot wrote:
About a year ago someone posted proposed improvements for the simple deform modifier and they look awesome.
https://www.youtube.com/watch?v=dOpJRUI_czo

The original post can be found here and there's also a python tool that could be used as a reference.
http://lists.blender.org/pipermail/bf-funboard/2015-March/006066.html

Python script:
https://github.com/mifth/mifthtools/blob/master/blender/addons/mira_tools/mi_deform.py

Granted, this goes beyond the original scope of this task, but do you think it would be possible to make the simple deform modifier behave as it does in the video I linked?

Wow, it looks awesome indeed.
First I'm making the patch based on the original description, and after I'll make a v2.0 based on this :)

> In #47435#365628, @lamoot wrote: > About a year ago someone posted proposed improvements for the simple deform modifier and they look awesome. > https://www.youtube.com/watch?v=dOpJRUI_czo > > The original post can be found here and there's also a python tool that could be used as a reference. > http://lists.blender.org/pipermail/bf-funboard/2015-March/006066.html > > Python script: > https://github.com/mifth/mifthtools/blob/master/blender/addons/mira_tools/mi_deform.py > > Granted, this goes beyond the original scope of this task, but do you think it would be possible to make the simple deform modifier behave as it does in the video I linked? Wow, it looks awesome indeed. First I'm making the patch based on the original description, and after I'll make a v2.0 based on this :)

Great to hear that, thanks :)

Great to hear that, thanks :)

Fantastic to hear!

Fantastic to hear!

Hello!

Since I won't be available until Tuesday, I've decided to post a progress what I've achieved so far. And I will continue after.
So, currently the main part is done, namely:

  • switching between the axes works just as one would expect
  • lock (projected) X and Y works as well
    What I have to do:
  • there is a little bug with the Bend mode in alternate axes with the limits
  • the do_versions function
Hello! Since I won't be available until Tuesday, I've decided to post a progress what I've achieved so far. And I will continue after. So, currently the main part is done, namely: - switching between the axes works just as one would expect - lock (projected) X and Y works as well What I have to do: - there is a little bug with the Bend mode in alternate axes with the limits - the do_versions function

Hello!

So this is v1, please take a look :)
Thanks!

https://developer.blender.org/D1883

Hello! So this is v1, please take a look :) Thanks! https://developer.blender.org/D1883

Hello!

I've started developing the new features based on the given video, and I've got a few questions.
I'm planning the UI, and I'm trying to keep it as close to the original as possible.
And I think the best way is to change the tab-like switching method (between twist/bend/...) into check boxes. And checking an item would bring up the part related to it.
But I'm really unsure, should we need a different origin selector, axis changer, vertex group selector, etc for every mode?
In other words, if the user sets an origin for the Twist mode, should they be able to select an other origin for Bend mode?
I think it is important to have separated controls for Deform, Lock Axes, Limits, and maybe Vertex Groups, but I'm unsure about Origin, Axis, and a new Offset feature (shown in the video). I think the last three wouldn't make too much sense, but what do you think?

Hello! I've started developing the new features based on the given video, and I've got a few questions. I'm planning the UI, and I'm trying to keep it as close to the original as possible. And I think the best way is to change the tab-like switching method (between twist/bend/...) into check boxes. And checking an item would bring up the part related to it. But I'm really unsure, should we need a different origin selector, axis changer, vertex group selector, etc for every mode? In other words, if the user sets an origin for the Twist mode, should they be able to select an other origin for Bend mode? I think it is important to have separated controls for Deform, Lock Axes, Limits, and maybe Vertex Groups, but I'm unsure about Origin, Axis, and a new Offset feature (shown in the video). I think the last three wouldn't make too much sense, but what do you think?

Good questions!

Personally I'm in favour of a solution that hides functionality untill it's requested, so checkboxes that bring up the options sound good to me.

As for having origin selector/axis changer etc per mode... it would increase flexibility which is nice, but I'm afraid it could easily result in a cluttered (and therefore confusing/not user-friendly) modifier.
Maybe we should consider that people should add multiple Modifiers for that usecase? If we had modifier presets you could make a case for having everything self-contained, but for now it seems logical to me that we'd err on the side of simplicity.

I can't build from source, do you have a build online somewhere?

I know the guy who made that video would be interested in trying it out as well, and he would love to talk about this with you. I don't want to post his email publicly, but if you go to this website it's listed at the top of his resume: http://pioroberson.com

Good questions! Personally I'm in favour of a solution that hides functionality untill it's requested, so checkboxes that bring up the options sound good to me. As for having origin selector/axis changer etc per mode... it *would* increase flexibility which is nice, but I'm afraid it could easily result in a cluttered (and therefore confusing/not user-friendly) modifier. Maybe we should consider that people should add multiple Modifiers for that usecase? If we had modifier presets you could make a case for having everything self-contained, but for now it seems logical to me that we'd err on the side of simplicity. I can't build from source, do you have a build online somewhere? I know the guy who made that video would be interested in trying it out as well, and he would love to talk about this with you. I don't want to post his email publicly, but if you go to this website it's listed at the top of his resume: http://pioroberson.com

I've uploaded a (Linux) build (compiled with the lite option) here: https://www.dropbox.com/s/7q0duwzz7v7px2r/blender.tar.gz?dl=0 I hope you're on Linux too :P
I agree with the multiple modifiers solution! I think that's a good trade. (But I'll wait a couple of days to see what's the other's opinion.)
I'll write to the guy, thanks!

I've uploaded a (Linux) build (compiled with the lite option) here: https://www.dropbox.com/s/7q0duwzz7v7px2r/blender.tar.gz?dl=0 I hope you're on Linux too :P I agree with the multiple modifiers solution! I think that's a good trade. (But I'll wait a couple of days to see what's the other's opinion.) I'll write to the guy, thanks!

Hello!

A quick update about the tool: https://youtu.be/aqzuu3nP4mY
I'm not sure about the UI, maybe 3 columns are too many... I wanted it to be compact :)

Hello! A quick update about the tool: https://youtu.be/aqzuu3nP4mY I'm not sure about the UI, maybe 3 columns are too many... I wanted it to be compact :)

This is looking great!

I see your concerns about the three columns, it does make everything a bit cramped, what do you think of this mockup? https://gyazo.com/6844ca6de74076fc3290426b5670a090

This is looking great! I see your concerns about the three columns, it does make everything a bit cramped, what do you think of this mockup? https://gyazo.com/6844ca6de74076fc3290426b5670a090
Peti Szabó was unassigned by Campbell Barton 2017-03-03 15:07:14 +01:00

Added subscriber: @dmarra

Added subscriber: @dmarra

Hi! I noticed the development on this has kind of stopped. I have played with this on my own a bit as a way to get my feet wet with the codebase, and I now have a good working prototype for the addition, that just needs a little polishing on my end. May I be assigned this?

Hi! I noticed the development on this has kind of stopped. I have played with this on my own a bit as a way to get my feet wet with the codebase, and I now have a good working prototype for the addition, that just needs a little polishing on my end. May I be assigned this?
Author
Owner

@dmarra - you are welcome to work on this. For quick hacks you can just finish and submit the patch.
We found task ownership doesn't work so well in these cases - and isn't really needed.

@dmarra - you are welcome to work on this. For quick hacks you can just finish and submit the patch. We found task ownership doesn't work so well in these cases - and isn't really needed.

Sounds good! I'm just polishing up what I have done, and adding some backward compatibility for old saves. I opted to not do anything too fancy. While this modifier could definitely be jazzed up to be even more useful, simply having the option to pick an axis of deformation helps a lot.

I have some ideas to take this modifier to the next level, but maybe those are better in a separate ticket after some design discussion.

Sounds good! I'm just polishing up what I have done, and adding some backward compatibility for old saves. I opted to not do anything too fancy. While this modifier could definitely be jazzed up to be even more useful, simply having the option to pick an axis of deformation helps a lot. I have some ideas to take this modifier to the next level, but maybe those are better in a separate ticket after some design discussion.

I am finished with this fix. I'll be submitting the patch shortly, but here is a short(ish) video demonstrating the changes:

https:*youtu.be/IGIqFxBWf0s

You'll notice that I also added an option to lock on the Z axis, and disabled locking of the currently selected axis (which would flatten all geometry to a plane). Other than that, I didn't do anything drastic.

One thing I am unsure of is if the relationship between an axis object and a chosen axis is correct. Let me know if you think we should change that to simply be used as an origin as opposed to origin and axis. I am unsure ifd that is 100% necessary though, since one can just change the object origin to adjust how the deform occurs.

I am finished with this fix. I'll be submitting the patch shortly, but here is a short(ish) video demonstrating the changes: [https:*youtu.be/IGIqFxBWf0s ](https:*youtu.be/IGIqFxBWf0s) You'll notice that I also added an option to lock on the Z axis, and disabled locking of the currently selected axis (which would flatten all geometry to a plane). Other than that, I didn't do anything drastic. One thing I am unsure of is if the relationship between an axis object and a chosen axis is correct. Let me know if you think we should change that to simply be used as an origin as opposed to origin **and** axis. I am unsure ifd that is 100% necessary though, since one can just change the object origin to adjust how the deform occurs.
Author
Owner

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'
Campbell Barton self-assigned this 2019-05-07 01:30:40 +02: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
5 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#47435
No description provided.