Inset thickness/depth history regression #54918

Closed
opened 2018-05-01 21:39:06 +02:00 by Andy Davies · 24 comments

System Information
Win10 Pro 64bit v1709
64GB DDR4 RAM
NVIDIA GTX 1080 with driver 397.31
NVIDIA GTX 680 with driver 397.31

Blender Version
Broken: (2.79a 8928d99270, 2.79b f4dc9f9d68)
Worked: (2.79 5bd8ac9)

Hey all,

Blender used to remember the last thickness values used for inset, which is desirable as when modelling you generally want a consistent width for inset when used on the same mesh with subd. Inset is an invaluable tool for quickly generating support loops that retain the flow of curvature on a surface as manually adding such loops can cause creases in the mesh. This ability has been reduced as the user is forced to input the same value manually each time the tool is used. It should be noted that all other settings apart from depth are recalled correctly when re-running inset (depth should also be remembered but isnt.).

If you use 2.79 (5bd8ac9), the inset values are remembered each time you use the tool.

  1. Generate a cube
  2. Select a face loop
  3. Press I to run Inset
  4. Enter a thickness value of 0.05
  5. Select another face loop
  6. Press I to run Inset
  7. The thickness value of 0.05 is remembered
  8. Repeat infinitum

If you use 2.79a (8928d99270) or 2.79b (f4dc9f9d68 ), the inset values are reset to the default value of 0.01 each time you use the tool.

  1. Generate a cube
  2. Select a face loop
  3. Press I to run Inset
  4. Enter a thickness value of 0.05
  5. Select another face loop (if not already selected)
  6. Press I to run Inset
  7. The thickness value is now 0.01

F3 can of course be used, but is generally unworkable as it breaks the flow of modelling and is limited in the number of actions which can be stored. In addition, pressing F3 might as well be replaced by simply entering the inset value manually as it takes around the same time to preform both actions.

Thanks for looking :)

**System Information** Win10 Pro 64bit v1709 64GB DDR4 RAM NVIDIA GTX 1080 with driver 397.31 NVIDIA GTX 680 with driver 397.31 **Blender Version** Broken: (2.79a 8928d99270f, 2.79b f4dc9f9d68b) Worked: (2.79 5bd8ac9) Hey all, Blender used to remember the last thickness values used for inset, which is desirable as when modelling you generally want a consistent width for inset when used on the same mesh with subd. Inset is an invaluable tool for quickly generating support loops that retain the flow of curvature on a surface as manually adding such loops can cause creases in the mesh. This ability has been reduced as the user is forced to input the same value manually each time the tool is used. It should be noted that all other settings apart from depth are recalled correctly when re-running inset (depth should also be remembered but isnt.). If you use 2.79 (5bd8ac9), the inset values are remembered each time you use the tool. 1) Generate a cube 2) Select a face loop 3) Press I to run Inset 4) Enter a thickness value of 0.05 5) Select another face loop 6) Press I to run Inset 7) The thickness value of 0.05 is remembered 8) Repeat infinitum If you use 2.79a (8928d99270f) or 2.79b (f4dc9f9d68b ), the inset values are reset to the default value of 0.01 each time you use the tool. 1) Generate a cube 2) Select a face loop 3) Press I to run Inset 4) Enter a thickness value of 0.05 5) Select another face loop (if not already selected) 6) Press I to run Inset 7) The thickness value is now 0.01 F3 can of course be used, but is generally unworkable as it breaks the flow of modelling and is limited in the number of actions which can be stored. In addition, pressing F3 might as well be replaced by simply entering the inset value manually as it takes around the same time to preform both actions. Thanks for looking :)
Author

Added subscriber: @AndyDavies-3

Added subscriber: @AndyDavies-3
Member

Added subscribers: @ideasman42, @brecht, @lichtwerk

Added subscribers: @ideasman42, @brecht, @lichtwerk
Member

To my knowledge, this was an intentional change (though there seems to be some discussion about it)

It seems to me this was concluded with:

  • Shift+R and F3 remember the setting
  • invoking modal with hotkey Iwill always start at near zero

If that is the case, then this report can be closed?

But before closing this, I would like to raise attention to @brecht and @ideasman42 just to make sure...

To my knowledge, this was an intentional change (though there seems to be some discussion about it) - see reports #53441, #54206 (this one has a more in depth analysis) - see commits e6404274a1, 596f33f801 It seems to me this was concluded with: - Shift+R and F3 remember the setting - invoking modal with hotkey `I`will always start at near zero If that is the case, then this report can be closed? But before closing this, I would like to raise attention to @brecht and @ideasman42 just to make sure...
Author

Thanks for the reply @lichtwerk

If this is the new default then that's rather unfortunate. #53441 was not a valid bug report as the tool has remembered the value since 2.64.

F3 and Shift+R cannot be used as a direct replacement for I as it only has a limited number of history states, which means that after only a few minutes modelling you have to re-enter the required value (assuming you can remember it if it is set to something irregular). This unfortunately breaks the functionality of the tool significantly and it seems the lesser of two evils would be that people reset the tool to zero is they want that state, rather than forcing people to re-enter a specific value if they require a set amount. Also, the tool remembers all the other checbox states/values (apart from Depth, which should also be recalled when the tool used again) so if If the intention was to reset Inset to default each time it was used then everything would need to be reset wouldnt it?

Could we please revert the functionality back to the original state or at least get some kind of over-ride checkbox or setting somewhere that is a fix for this?

Thanks for the reply @lichtwerk If this is the new default then that's rather unfortunate. #53441 was not a valid bug report as the tool has remembered the value since 2.64. F3 and Shift+R cannot be used as a direct replacement for I as it only has a limited number of history states, which means that after only a few minutes modelling you have to re-enter the required value (assuming you can remember it if it is set to something irregular). This unfortunately breaks the functionality of the tool significantly and it seems the lesser of two evils would be that people reset the tool to zero is they want that state, rather than forcing people to re-enter a specific value if they require a set amount. Also, the tool remembers all the other checbox states/values (apart from Depth, which should also be recalled when the tool used again) so if If the intention was to reset Inset to default each time it was used then everything would need to be reset wouldnt it? Could we please revert the functionality back to the original state or at least get some kind of over-ride checkbox or setting somewhere that is a fix for this?
Brecht Van Lommel was assigned by Philipp Oeser 2018-05-02 13:08:10 +02:00
Member

Added subscriber: @WilliamReynish

Added subscriber: @WilliamReynish
Member

Personally I can live with the current behaviour, but I can also see advantages of the way it was before.

Dont want to disturb the guys doing their CodeQuest magic, but as I am no UX designer, I will pass this on to @brecht then.
As this also touches Tool design in a more general way, maybe @WilliamReynish can share his view on this topic?

Personally I can live with the current behaviour, but I can also see advantages of the way it was before. Dont want to disturb the guys doing their CodeQuest magic, but as I am no UX designer, I will pass this on to @brecht then. As this also touches Tool design in a more general way, maybe @WilliamReynish can share his view on this topic?
Author

Thanks, @lichtwerk

Generally I think it is desirable to recall any values that have to be entered manually into a tool from the last use (including bevel), as consistency in such things is essential to solid modelling. Hopefully we can get this sorted out to mutual benefit for all users.

Cheers

Thanks, @lichtwerk Generally I think it is desirable to recall any values that have to be entered manually into a tool from the last use (including bevel), as consistency in such things is essential to solid modelling. Hopefully we can get this sorted out to mutual benefit for all users. Cheers

Added subscriber: @midan-3

Added subscriber: @midan-3

andy davies, I am with you and also very please devs to do inset/bevel userfriendly as it was earlier.

andy davies, I am with you and also very please devs to do inset/bevel userfriendly as it was earlier.

The trouble is that these are interactive. If the interactive interaction should stay consistent, then it can't 'remember' the amount. The same is true for move or rotate - it would be very weird if, when you move something, it would start off by moving however much your last move was - in fact that would feel very buggy.

If Bevel or Inset were not interactive, then it definitely could work the way you suggest, but not when it depends of interactive input.

So I see a few ways to solve this.

1: Use the Info area to re-execute your commands again with the same settings applied (already possible)
2: We could have a way to execute these commands without going to the interactive stage (though how would users find this?)
3: This kind of thing is well suited to a macro recording type system where you can record performing certain actions in certain ways, and then quickly replay them.

The trouble is that these are interactive. If the interactive interaction should stay consistent, then it can't 'remember' the amount. The same is true for move or rotate - it would be very weird if, when you move something, it would start off by moving however much your last move was - in fact that would feel very buggy. If Bevel or Inset were not interactive, then it definitely could work the way you suggest, but not when it depends of interactive input. So I see a few ways to solve this. 1: Use the Info area to re-execute your commands again with the same settings applied (already possible) 2: We could have a way to execute these commands without going to the interactive stage (though how would users find this?) 3: This kind of thing is well suited to a macro recording type system where you can record performing certain actions in certain ways, and then quickly replay them.
Author

Sorry for the late reply. I've only just noticed that this thread had replies.

@WilliamReynish
Thanks for the input. :)

Fwiw, the inset tool has always been interactive and it has also stored the last used value since 2.64, which is why I initially reported this as a regression vs a complaint/bug. As you said it just started at previous value and then moved from there if the user required it and doesn't feel buggy other than a slight jump in the inset width if the user moves the mouse, which isn't offensive (I suppose this is why the storing of values has been around for 5 or 6 years without much complaint).

If the previous functionality isnt going to be restored fully could we perhaps reach a compromise where inset only remembers the value if the user entered it manually or some kind of override checkbox to force storing of values and restoring the previous functionality that the user has to check when first entering a value to be remembered?

Inset has been a very useful and robust, but the removal of the stored values has seriously broken its functionality for me which unfortunately means I'm stuck on 2.79 until we can find a solution.

Cheers :)

Sorry for the late reply. I've only just noticed that this thread had replies. @WilliamReynish Thanks for the input. :) Fwiw, the inset tool has always been interactive and it has also stored the last used value since 2.64, which is why I initially reported this as a regression vs a complaint/bug. As you said it just started at previous value and then moved from there if the user required it and doesn't feel buggy other than a slight jump in the inset width if the user moves the mouse, which isn't offensive (I suppose this is why the storing of values has been around for 5 or 6 years without much complaint). If the previous functionality isnt going to be restored fully could we perhaps reach a compromise where inset only remembers the value if the user entered it manually or some kind of override checkbox to force storing of values and restoring the previous functionality that the user has to check when first entering a value to be remembered? Inset has been a very useful and robust, but the removal of the stored values has seriously broken its functionality for me which unfortunately means I'm stuck on 2.79 until we can find a solution. Cheers :)
Author

Any more thoughts on this @WilliamReynish
It would be great to get a solution ready for 2.8 :)

Any more thoughts on this @WilliamReynish It would be great to get a solution ready for 2.8 :)

Added subscriber: @ZedDB

Added subscriber: @ZedDB

Changed status from 'Open' to: 'Archived'

Changed status from 'Open' to: 'Archived'

This is a feature request.
In 2.8 we now have tools so perhaps the inset tool could be coded to work in the way you want.

I agree that this would be a useful feature. But all feature requests should go to https://rightclickselect.com/ so a solid proposal can be made and voted on.

This is a feature request. In 2.8 we now have tools so perhaps the inset tool could be coded to work in the way you want. I agree that this would be a useful feature. But all feature requests should go to https://rightclickselect.com/ so a solid proposal can be made and voted on.
Author

@ZedDB with respect, this is absolutely not a feature request. My initial report was due to a regression in functionality due to other users erroneous bug reporting.

https://developer.blender.org/T53441
https://developer.blender.org/T53145

I am asking that the previous functionally be restored to its previous state as it was from 2.64-2.7.

Please reopon this report.

Thanks!

@ZedDB with respect, this is absolutely not a feature request. My initial report was due to a regression in functionality due to other users erroneous bug reporting. https://developer.blender.org/T53441 https://developer.blender.org/T53145 I am asking that the previous functionally be restored to its previous state as it was from 2.64-2.7. Please reopon this report. Thanks!

As you pointed out, this was an intended change.
So to solve this I suggest you do a proposal over at rightclickselect and drum up support for it over there.

Perhaps you want this functionality on other operators as well. So if you prepare a nice proposal on how to tackle this issue in an elegant way, it will be a popular requested feature and will eventually make it into blender.

Otherwise we could revert and and then someone else want to revert it to the way it is now and we will repeat this forever.

As you pointed out, this was an intended change. So to solve this I suggest you do a proposal over at rightclickselect and drum up support for it over there. Perhaps you want this functionality on other operators as well. So if you prepare a nice proposal on how to tackle this issue in an elegant way, it will be a popular requested feature and will eventually make it into blender. Otherwise we could revert and and then someone else want to revert it to the way it is now and we will repeat this forever.
Author

@ZedDB @brecht @ideasman42

Yes, it was an intended change, but it was still a change based on false information. A user shouldn't be able to simply report anything as a bug because they don't understand how a tool works and because someone already changed the code force everyone else to live with the error.

The inset tool stored the values for 5-6 years without complaint and the bug report that was the catalyst for the change should have been initially rejected because it wasn't a bug in the first place.

It's not really fair that you want me to drum up support for a feature that has been removed based on error that has lived in Blender since 2.64. I just want the tool restored back to its previous state.

@ZedDB @brecht @ideasman42 Yes, it was an intended change, but it was still a change based on false information. A user shouldn't be able to simply report anything as a bug because they don't understand how a tool works and because someone already changed the code force everyone else to live with the error. The inset tool stored the values for 5-6 years without complaint and the bug report that was the catalyst for the change should have been initially rejected because it wasn't a bug in the first place. It's not really fair that you want me to drum up support for a feature that has been removed based on error that has lived in Blender since 2.64. I just want the tool restored back to its previous state.

The general idea of being able to repeat an action again on a different part of the mesh has obvious useful utility. To me it's not about getting support or not, it's about how we can design the best system for this, which works in a generic way for all tools, not just specifically Inset.

The old way this worked with this tool was poor, because the interactive dragging had a conflict with the starting inset offset. This caused the inset operation to be inconsistent, because it might start out non-zero, and so the relationship with the dragged distance was not consistent.

The old way was basically a hack/mistake for this specific tool that had a useful side-effect. but made the tool inconsistent.

What I think we should try and do, is to find a way to make it easy to to do this kind of thing with any tool and any operator. It is a generic capability that isn't specific to the Inset tool.

Ideas:

  • We could add a better way to play back macros using the Info Editor (or some other way)
  • There could be a different way to execute all operators to make them use the same options as last time it was used. Say by Ctrl-clicking on a menu item, for example.

So this is why it is considered a feature request. To support this kind of thing in a generic way, it requires some work to do it. But the concept of repeating actions is of course valid and useful, we just need to support it in a generic, general and consistent way.

The general idea of being able to repeat an action again on a different part of the mesh has obvious useful utility. To me it's not about getting support or not, it's about how we can design the best system for this, which works in a generic way for *all* tools, not just specifically Inset. The old way this worked with this tool was poor, because the interactive dragging had a conflict with the starting inset offset. This caused the inset operation to be inconsistent, because it might start out non-zero, and so the relationship with the dragged distance was not consistent. The old way was basically a hack/mistake for this specific tool that had a useful side-effect. but made the tool inconsistent. What I think we should try and do, is to find a way to make it easy to to do this kind of thing with any tool and any operator. It is a generic capability that isn't specific to the Inset tool. Ideas: - We could add a better way to play back macros using the Info Editor (or some other way) - There could be a different way to execute all operators to make them use the same options as last time it was used. Say by Ctrl-clicking on a menu item, for example. So this is why it is considered a feature request. To support this kind of thing in a generic way, it requires some work to do it. But the concept of repeating actions is of course valid and useful, we just need to support it in a generic, general and consistent way.

Speaking of which, is there a reason you can't use Repeat History to solve this? If you want to repeat your inset operation with the same settings again, either Repeat Last or Repeat History aught to work for you.

Speaking of which, is there a reason you can't use Repeat History to solve this? If you want to repeat your inset operation with the same settings again, either Repeat Last or Repeat History aught to work for you.
Author

@WilliamReynish Thanks for the reply.

I agree that there is probably a more elegant solution for this, but until one is found users have just lost the ability entirely. A better solution would have probably been keeping the functionality until it could have been improved upon and then implemented the a new version of Blender. It might take months to get something put in place to restore the previous functionality, which sucks because I'm stuck on 2.7 until I can get a replacement.

History is generally unworkable as it breaks the flow of modelling and is limited in the number of states which can be stored. This means that after only a few minutes modelling you have to re-enter the required value (assuming you can remember it if it is set to something irregular) and/or search through a huge list of text, while reading each entry, in order to find the state you need. This is a huge work-flow breaker that is exacerbated by the loss of muscle memory for the action and your eyes having to adjust from a looking at meshes for an extended period to reading text. History might as well be replaced by simply entering the inset value manually as it probably takes around the same time to perform both actions. It just isn't as efficient as hitting "I" and having the tool remember the setting for you.

As I mentioned above, I would be more than happy to have to check a box (unchecked by default) that forces Blender to remember the stored value (essentially the old functionality) or setting it up as to where inset only remembers the value if the user entered it manually. This could then be replaced when a more elegant solution is found.
Cheers,

@WilliamReynish Thanks for the reply. I agree that there is probably a more elegant solution for this, but until one is found users have just lost the ability entirely. A better solution would have probably been keeping the functionality until it could have been improved upon and then implemented the a new version of Blender. It might take months to get something put in place to restore the previous functionality, which sucks because I'm stuck on 2.7 until I can get a replacement. History is generally unworkable as it breaks the flow of modelling and is limited in the number of states which can be stored. This means that after only a few minutes modelling you have to re-enter the required value (assuming you can remember it if it is set to something irregular) and/or search through a huge list of text, while reading each entry, in order to find the state you need. This is a huge work-flow breaker that is exacerbated by the loss of muscle memory for the action and your eyes having to adjust from a looking at meshes for an extended period to reading text. History might as well be replaced by simply entering the inset value manually as it probably takes around the same time to perform both actions. It just isn't as efficient as hitting "I" and having the tool remember the setting for you. As I mentioned above, I would be more than happy to have to check a box (unchecked by default) that forces Blender to remember the stored value (essentially the old functionality) or setting it up as to where inset only remembers the value if the user entered it manually. This could then be replaced when a more elegant solution is found. Cheers,

A currently supported way to do this, is to do an Inset (or anything else) and set your settings for the operator. Then, select a different mesh element and use Repeat History and select the previous Inset command. This will re-perform an inset on the new selection with the same settings as the previous inset.

Another thing that works currently, but is more work, is to use the Info Editor to copy a previous command and re-apply it using the Python console.
This area could be made smarter. Users should be able to record little macros here, or at the very least be able to double-click on a command here to re-execute without using the Python console.

This last thing would probably be really quite easy to add in fact.

A currently supported way to do this, is to do an Inset (or anything else) and set your settings for the operator. Then, select a different mesh element and use Repeat History and select the previous Inset command. This will re-perform an inset on the new selection with the same settings as the previous inset. Another thing that works currently, but is more work, is to use the Info Editor to copy a previous command and re-apply it using the Python console. This area could be made smarter. Users should be able to record little macros here, or at the very least be able to double-click on a command here to re-execute without using the Python console. This last thing would probably be really quite easy to add in fact.
Author

Thanks for the thought you are putting into this @WilliamReynish

Assuming you do all your insets at the same time I agree the first option will work, but unfortunately this isn't very often the case. I generally inset as and when the tool is needed rather than in quick succession so I may use the tool 10 times in 2 mins or 10 times in 20 mins depending on the model, so it's limited by the number of history states and has the same pitfalls as I mentioned above.

The macro stuff does sound fun though :)

Thanks for the thought you are putting into this @WilliamReynish Assuming you do all your insets at the same time I agree the first option will work, but unfortunately this isn't very often the case. I generally inset as and when the tool is needed rather than in quick succession so I may use the tool 10 times in 2 mins or 10 times in 20 mins depending on the model, so it's limited by the number of history states and has the same pitfalls as I mentioned above. The macro stuff does sound fun though :)

@WilliamReynish, , as Andy Davies said, maybe it is inconsistent with interactive tool, but it is a very big regression and worse to not have it and have interactive tool than vice versa.
I tried for a very long time to deal with it , but can not. It is a straggle with history repeat, when it was earlier it was good.
@brecht, @ideasman42 could you give us a line of code and where to put it to bring back (change to) "old" good functionality of bevel, inset tool?
those who want it back apply code to have it, for the rest it stay as it is. I dont want to wait until perhaps it will be in 2.80

@WilliamReynish, , as Andy Davies said, maybe it is inconsistent with interactive tool, but it is a very big regression and worse to not have it and have interactive tool than vice versa. I tried for a very long time to deal with it , but can not. It is a straggle with history repeat, when it was earlier it was good. @brecht, @ideasman42 could you give us a line of code and where to put it to bring back (change to) "old" good functionality of bevel, inset tool? those who want it back apply code to have it, for the rest it stay as it is. I dont want to wait until perhaps it will be in 2.80
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#54918
No description provided.