Bendy Bones: Bone Size / Envelope Reversed #75465

Open
opened 2020-04-07 02:44:25 +02:00 by Aaron Carlisle · 20 comments
Member

System Information
Operating system: Windows-10-10.0.18362-SP0 64 Bits
Graphics card: GeForce RTX 2070/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 441.66

Blender Version
Broken: version: 2.83 (sub 11), branch: master, commit date: 2020-04-04 16:55, hash: 505a19ed75
Worked: (newest version of Blender that worked as expected)

Short description of error

Using bendy bones using the Envelope tool alters the bone size of the bendy bones (Calls bpy.ops.transform.bbone_resize()) instead the bone size tool should adjust this.

This UX is a bit strange, the bone size and bone envelope should always affect envelope_distance and head_radius / tail_radius.
There should be a third tool that only calls bpy.ops.transform.bbone_resize() called "Bendy Bone Size".
The Envelope and Bone Size tools should probably be renamed to more specific names such as "Envelop Tail/Head Radius" and "Envelope Distance"

Exact steps for others to reproduce the error

Use the two tools on bendy bones and other bone display types.

**System Information** Operating system: Windows-10-10.0.18362-SP0 64 Bits Graphics card: GeForce RTX 2070/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 441.66 **Blender Version** Broken: version: 2.83 (sub 11), branch: master, commit date: 2020-04-04 16:55, hash: `505a19ed75` Worked: (newest version of Blender that worked as expected) **Short description of error** Using bendy bones using the Envelope tool alters the bone size of the bendy bones (Calls `bpy.ops.transform.bbone_resize()`) instead the bone size tool should adjust this. This UX is a bit strange, the bone size and bone envelope should always affect `envelope_distance` and `head_radius` / `tail_radius`. There should be a third tool that only calls `bpy.ops.transform.bbone_resize()` called "Bendy Bone Size". The Envelope and Bone Size tools should probably be renamed to more specific names such as "Envelop Tail/Head Radius" and "Envelope Distance" **Exact steps for others to reproduce the error** Use the two tools on bendy bones and other bone display types.
Author
Member

Added subscriber: @Blendify

Added subscriber: @Blendify
Author
Member

From the manual:

Altering the Bone Envelope volume does not alter the size of the bone just the range
within which it can influence vertices of child objects.

From the manual: > Altering the Bone Envelope volume does not alter the size of the bone just the range > within which it can influence vertices of child objects.
Member

Added subscribers: @WilliamReynish, @ideasman42, @lichtwerk

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

Please check #72903 (Bone Envelope and Bone Size tools appear to have switched functions) and dd2cdd436f.
Also a bit sceptical that this was the right fix ^

CC @WilliamReynish
CC @ideasman42

Please check #72903 (Bone Envelope and Bone Size tools appear to have switched functions) and dd2cdd436f. Also a bit sceptical that this was the right fix ^ CC @WilliamReynish CC @ideasman42
Author
Member

My attempt at a fix but something weird is still happening when changing bone display types.

P1332: (An Untitled Masterwork)

diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 3944f8f0817..ffc934a697a 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -5802,18 +5802,29 @@ def km_3d_view_tool_edit_armature_roll(params):

 def km_3d_view_tool_edit_armature_bone_size(params):
     return (
-        "3D View Tool: Edit Armature, Bone Size",
+        "3D View Tool: Edit Armature, Head/Tail Radius",
         {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
         {"items": [
             ("transform.transform", {"type": params.tool_tweak, "value": 'ANY'},
-             {"properties": [("release_confirm", True), ("mode", 'BONE_ENVELOPE')]}),
+             {"properties": [("release_confirm", True), ("mode", 'BONE_SIZE')]}),
         ]},
     )


 def km_3d_view_tool_edit_armature_bone_envelope(params):
     return (
-        "3D View Tool: Edit Armature, Bone Envelope",
+        "3D View Tool: Edit Armature, Envelope Distance",
+        {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
+        {"items": [
+            ("transform.transform", {"type": params.tool_tweak, "value": 'ANY'},
+             {"properties": [("release_confirm", True), ("mode", 'BONE_ENVELOPE')]}),
+        ]},
+    )
+
+
+def km_3d_view_tool_edit_armature_bone_bbone_resize(params):
+    return (
+        "3D View Tool: Edit Armature, Bendy Bone Size",
         {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},

         {"items": [
@@ -6695,6 +6706,7 @@ def generate_keymaps(params=None):
         km_3d_view_tool_edit_armature_roll(params),
         km_3d_view_tool_edit_armature_bone_size(params),
         km_3d_view_tool_edit_armature_bone_envelope(params),
+        km_3d_view_tool_edit_armature_bone_bbone_resize(params),
         km_3d_view_tool_edit_armature_extrude(params),
         km_3d_view_tool_edit_armature_extrude_to_cursor(params),
         km_3d_view_tool_edit_mesh_add_cube(params),
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index cb3d2909205..a09659df00d 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -423,26 +423,37 @@ class _defs_edit_armature:
             keymap=(),
         )

+    @ToolDef.from_fn
+    def bone_size():
+        return dict(
+            idname="builtin.bone_size",
+            label="Head/Tail Radius",
+            icon="ops.transform.bone_size",
+            widget="VIEW3D_GGT_tool_generic_handle_free",
+            keymap=(),
+        )
+
     @ToolDef.from_fn
     def bone_envelope():
         return dict(
             idname="builtin.bone_envelope",
-            label="Bone Envelope",
+            label="Envelope Distance",
             icon="ops.transform.bone_envelope",
             widget="VIEW3D_GGT_tool_generic_handle_free",
             keymap=(),
         )

     @ToolDef.from_fn
-    def bone_size():
+    def bone_bbone_resize():
         return dict(
-            idname="builtin.bone_size",
-            label="Bone Size",
-            icon="ops.transform.bone_size",
+            idname="builtin.bone_bbone_resize",
+            label="Bendy Bone Size",
+            icon="ops.transform.bbone_resize",
             widget="VIEW3D_GGT_tool_generic_handle_free",
             keymap=(),
         )

+
     @ToolDef.from_fn
     def extrude():
         return dict(
@@ -2085,6 +2096,7 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
                 _defs_edit_armature.bone_size,
                 _defs_edit_armature.bone_envelope,
             ),
+            _defs_edit_armature.bone_bbone_resize,
             None,
             (
                 _defs_edit_armature.extrude,
My attempt at a fix but something weird is still happening when changing bone display types. [P1332: (An Untitled Masterwork)](https://archive.blender.org/developer/P1332.txt) ``` diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 3944f8f0817..ffc934a697a 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -5802,18 +5802,29 @@ def km_3d_view_tool_edit_armature_roll(params): def km_3d_view_tool_edit_armature_bone_size(params): return ( - "3D View Tool: Edit Armature, Bone Size", + "3D View Tool: Edit Armature, Head/Tail Radius", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ ("transform.transform", {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("release_confirm", True), ("mode", 'BONE_ENVELOPE')]}), + {"properties": [("release_confirm", True), ("mode", 'BONE_SIZE')]}), ]}, ) def km_3d_view_tool_edit_armature_bone_envelope(params): return ( - "3D View Tool: Edit Armature, Bone Envelope", + "3D View Tool: Edit Armature, Envelope Distance", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": [ + ("transform.transform", {"type": params.tool_tweak, "value": 'ANY'}, + {"properties": [("release_confirm", True), ("mode", 'BONE_ENVELOPE')]}), + ]}, + ) + + +def km_3d_view_tool_edit_armature_bone_bbone_resize(params): + return ( + "3D View Tool: Edit Armature, Bendy Bone Size", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ @@ -6695,6 +6706,7 @@ def generate_keymaps(params=None): km_3d_view_tool_edit_armature_roll(params), km_3d_view_tool_edit_armature_bone_size(params), km_3d_view_tool_edit_armature_bone_envelope(params), + km_3d_view_tool_edit_armature_bone_bbone_resize(params), km_3d_view_tool_edit_armature_extrude(params), km_3d_view_tool_edit_armature_extrude_to_cursor(params), km_3d_view_tool_edit_mesh_add_cube(params), diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index cb3d2909205..a09659df00d 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -423,26 +423,37 @@ class _defs_edit_armature: keymap=(), ) + @ToolDef.from_fn + def bone_size(): + return dict( + idname="builtin.bone_size", + label="Head/Tail Radius", + icon="ops.transform.bone_size", + widget="VIEW3D_GGT_tool_generic_handle_free", + keymap=(), + ) + @ToolDef.from_fn def bone_envelope(): return dict( idname="builtin.bone_envelope", - label="Bone Envelope", + label="Envelope Distance", icon="ops.transform.bone_envelope", widget="VIEW3D_GGT_tool_generic_handle_free", keymap=(), ) @ToolDef.from_fn - def bone_size(): + def bone_bbone_resize(): return dict( - idname="builtin.bone_size", - label="Bone Size", - icon="ops.transform.bone_size", + idname="builtin.bone_bbone_resize", + label="Bendy Bone Size", + icon="ops.transform.bbone_resize", widget="VIEW3D_GGT_tool_generic_handle_free", keymap=(), ) + @ToolDef.from_fn def extrude(): return dict( @@ -2085,6 +2096,7 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): _defs_edit_armature.bone_size, _defs_edit_armature.bone_envelope, ), + _defs_edit_armature.bone_bbone_resize, None, ( _defs_edit_armature.extrude, ```

Added subscriber: @dr.sybren

Added subscriber: @dr.sybren

@Blendify can you be more specific about the "something weird"?
How does this report differ from {#72903}?

@Blendify can you be more specific about the "something weird"? How does this report differ from {#72903}?
Member

@dr.sybren: this is the "reverse" report :)

#72903 was reported, dd2cdd436f was commited [that commit swapped it -- to me, this was not really the right fix, see my comments in #72903]
Now this report more or less want the original state back...

@dr.sybren: this is the "reverse" report :) #72903 was reported, dd2cdd436f was commited [that commit swapped it -- to me, this was not really the right fix, see my comments in #72903] Now this report more or less want the original state back...
Member

double-post

double-post

Added subscribers: @Mets, @jpbouza-4

Added subscribers: @Mets, @jpbouza-4

@jpbouza-4 @Mets please share your opinion on these tools. There has been quite a bit of confusion over what they do already, and instead of doing other smaller changes to try and close this report ASAP I would rather see a proper solution.

My concrete questions to you:

  1. Do you agree that the current naming & behaviour is confusing?
  2. Do you agree with @Blendify's suggestion of having three tools, "Envelop Tail/Head Radius", "Envelope Distance", and "Bendy Bone Size"?
  3. If not, what better suggestions do you have?
@jpbouza-4 @Mets please share your opinion on these tools. There has been quite a bit of confusion over what they do already, and instead of doing other smaller changes to try and close this report ASAP I would rather see a proper solution. My concrete questions to you: 1. Do you agree that the current naming & behaviour is confusing? 2. Do you agree with @Blendify's suggestion of having three tools, "Envelop Tail/Head Radius", "Envelope Distance", and "Bendy Bone Size"? 3. If not, what better suggestions do you have?
Member

I'm a bit confused because the post makes it sound like there are two current tools relating to those properties, a "Bone Size" and an "Envelope" tool, but I cannot see the latter!

"Bone Size" as a term in general is ambiguous and I would avoid it in tool names, documentation, everywhere. There's bone length, envelope radius, envelope distance, bbone scale and even custom shape scale. That's just edit mode. All these things have names that describe them perfectly, there is no need for ambiguity.

In a perfect world, I agree that there would be three tools:

  • "BBone Scale" tool, which is only available when armature display mode is BBone.
  • "Envelope Distance" tool, which is only available when armature display mode is Envelope
  • "Envelope Radius" tool, which is only available when armature display mode is Envelope. There doesn't need to be a separate tool for head/tail radius, since you can just use the selection.

On a side note: I don't understand the use case for the Shear tool, but why does it have 6 gizmos? Seems like it only needs 3.

I'm a bit confused because the post makes it sound like there are two current tools relating to those properties, a "Bone Size" and an "Envelope" tool, but I cannot see the latter! "Bone Size" as a term in general is ambiguous and I would avoid it in tool names, documentation, everywhere. There's bone length, envelope radius, envelope distance, bbone scale and even custom shape scale. That's just edit mode. All these things have names that describe them perfectly, there is no need for ambiguity. In a perfect world, I agree that there would be three tools: - "BBone Scale" tool, which is only available when armature display mode is BBone. - "Envelope Distance" tool, which is only available when armature display mode is Envelope - "Envelope Radius" tool, which is only available when armature display mode is Envelope. There doesn't need to be a separate tool for head/tail radius, since you can just use the selection. On a side note: I don't understand the use case for the Shear tool, but why does it have 6 gizmos? Seems like it only needs 3.
Author
Member

In #75465#926802, @dr.sybren wrote:
@Blendify can you be more specific about the "something weird"?
How does this report differ from {#72903}?

By something weird I mean, one tool is changing different bone properties depending on what bone shape is being used.

I'm a bit confused because the post makes it sound like there are two current tools relating to those properties, a "Bone Size" and an "Envelope" tool, but I cannot see the latter!

There is a sub tool called "Bine Envelope" nested with "Bone Size"

> In #75465#926802, @dr.sybren wrote: > @Blendify can you be more specific about the "something weird"? > How does this report differ from {#72903}? By something weird I mean, one tool is changing different bone properties depending on what bone shape is being used. > I'm a bit confused because the post makes it sound like there are two current tools relating to those properties, a "Bone Size" and an "Envelope" tool, but I cannot see the latter! There is a sub tool called "Bine Envelope" nested with "Bone Size"
Author
Member

In a perfect world, I agree that there would be three tools:

If we are hiding tools based on the armature display should mean we hide panels not related to the armature display type.


On another note, calling it "Armature Display Type" seems weird to me, I think it should be just "Armature Type" and moved out of the Viewport display panel.
This property does more than change how the bone is shown in the viewport as it also changes how the bone is used and the properties it has.

> In a perfect world, I agree that there would be three tools: If we are hiding tools based on the armature display should mean we hide panels not related to the armature display type. ------------------ On another note, calling it "Armature Display Type" seems weird to me, I think it should be just "Armature Type" and moved out of the Viewport display panel. This property does more than change how the bone is shown in the viewport as it also changes how the bone is used and the properties it has.

Added subscriber: @JulianEisel

Added subscriber: @JulianEisel

I'd be fine with three tools as @Mets suggests. I also agree with @Blendify that Armature Type would be a better name.

As for the tools, that's in the realm of @ideasman42 and @Severin. What do you guys think?

I'd be fine with three tools as @Mets suggests. I also agree with @Blendify that Armature Type would be a better name. As for the tools, that's in the realm of @ideasman42 and @Severin. What do you guys think?

Guys, maybe I'm understanding things wrong, but there seems to be a misconception here. I don't think the 'Armature display type" label should be changed. It is in fact only a display option, it doesn't affect the functionality of bones in any way. So changing it to just Armature Type would imply that setting it to bbones or stick would make the armature behave in a different way when it doesn't.

Also, just to clarify something that I think was not mentioned is that as far as I know, the Bone size (the one that affects bbones) is again just a display option, it doesn't affect functionality of a bbone in any way. On the other hand, the envelope options do have an impact on deformation when you use the envelope option (which I never do because it has a huge performance impact)

Those are my 2 cents!

Guys, maybe I'm understanding things wrong, but there seems to be a misconception here. I don't think the 'Armature display type" label should be changed. It is in fact only a display option, it doesn't affect the functionality of bones in any way. So changing it to just Armature Type would imply that setting it to bbones or stick would make the armature behave in a different way when it doesn't. Also, just to clarify something that I think was not mentioned is that as far as I know, the Bone size (the one that affects bbones) is again just a display option, it doesn't affect functionality of a bbone in any way. On the other hand, the envelope options do have an impact on deformation when you use the envelope option (which I never do because it has a huge performance impact) Those are my 2 cents!
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Contributor

Added subscriber: @AndresStephens

Added subscriber: @AndresStephens
Contributor

hFAoleVQsg.gif

Can confirm the issue:
Right now, it is nearly impossible to know that you can scale Bendy Bones (when rig display is set to Bendy Bones) by using the "Bone Envelope tool" - something completely de-attached from bendy bone scale concerning UX.

Could we add a "Change Bounding Bone Size" button or make the operator change name/icon dynamically based on the rig visibility type? Or find some other solution, maybe a separate operator name and tooltip.

Ideally:
When rig is in Envelope mode, this tool has the name "Bone Envelope"
When the rig is in Bendy Bone mode, this tool has the name "B-Bone Scale" - optionally changing icon.
Or have two buttons for the different tools - instead of the one and the same for disjoint UX.

Reason:
UI Discoverability

Task

  • Investigate how to dynamically show and hide tools based on rig visibility modes
  • OR add button for bendy bone scale with new icon
  • OR change tooltip to be a better tooltip and name for the operator: "Envelope/B-Bone Scale"
![hFAoleVQsg.gif](https://archive.blender.org/developer/F9913504/hFAoleVQsg.gif) Can confirm the issue: Right now, it is nearly impossible to know that you can scale Bendy Bones (when rig display is set to Bendy Bones) by using the "Bone Envelope tool" - something completely de-attached from bendy bone scale concerning UX. Could we add a "Change Bounding Bone Size" button or make the operator change name/icon dynamically based on the rig visibility type? Or find some other solution, maybe a separate operator name and tooltip. Ideally: When rig is in Envelope mode, this tool has the name "Bone Envelope" When the rig is in Bendy Bone mode, this tool has the name "B-Bone Scale" - optionally changing icon. Or have two buttons for the different tools - instead of the one and the same for disjoint UX. **Reason:** UI Discoverability **Task** - Investigate how to dynamically show and hide tools based on rig visibility modes - OR add button for bendy bone scale with new icon - OR change tooltip to be a better tooltip and name for the operator: "Envelope/B-Bone Scale"
Philipp Oeser removed the
Interest
Animation & Rigging
label 2023-02-09 14:36:14 +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
6 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#75465
No description provided.