Armature X-Mirror inconsistencies #65671

Open
opened 2019-06-09 22:20:38 +02:00 by Demeter Dzadik · 17 comments
Member

Certain bone properties are not affected by the X-Mirror setting. Which properties were and which weren't affected used to be extremely random and terrible, but a lot of improvements have been made, and now you could sum up the remaining unaffected properties as "bone properties which have no immediate visual effect in the 3D viewport." So, although a lot better than before, it is at least a little bit confusing, since the criteria is so specific and unintuitive.

These properties are:

envelope_weight
use_envelope_multiply
use_deform
connected *
lock **
use_local_location
use_endroll_as_inroll
inherit_scale
use_inherit_rotation

bbone_handle_type_start
bbone_custom_handle_start
bbone_handle_type_end
bbone_custom_handle_end

*: Even if you argue that the Connected checkbox itself shouldn't be mirrored, the checkbox has the potential to change the bone's transforms, and these transform changes don't get mirrored until the bone is interacted, and the interaction is finished(not cancelled)
** Is this option anywhere in the UI? It seems useful, but I only found it by looking at the pyAPI.

So I think there are a few options:

  • Accept that these options are not affected by X-Mirror and document it in the wiki, either listing them out one by one or using the hopefully accurate description of "properties that don't show up in the viewport".
  • Make X-Mirror affect these options.
  • Add another checkbox next to X-Mirror along the lines of "Include ALL bone properties".
Certain bone properties are not affected by the X-Mirror setting. Which properties were and which weren't affected used to be extremely random and terrible, but a lot of improvements have been made, and now you could sum up the remaining unaffected properties as "bone properties which have no immediate visual effect in the 3D viewport." So, although a lot better than before, it is at least a little bit confusing, since the criteria is so specific and unintuitive. These properties are: ``` envelope_weight use_envelope_multiply use_deform connected * lock ** use_local_location use_endroll_as_inroll inherit_scale use_inherit_rotation bbone_handle_type_start bbone_custom_handle_start bbone_handle_type_end bbone_custom_handle_end ``` *: Even if you argue that the Connected checkbox itself shouldn't be mirrored, the checkbox has the potential to change the bone's transforms, and these transform changes don't get mirrored until the bone is interacted, and the interaction is finished(not cancelled) ** Is this option anywhere in the UI? It seems useful, but I only found it by looking at the pyAPI. So I think there are a few options: - Accept that these options are not affected by X-Mirror and document it in the wiki, either listing them out one by one or using the hopefully accurate description of "properties that don't show up in the viewport". - Make X-Mirror affect these options. - Add another checkbox next to X-Mirror along the lines of "Include ALL bone properties".
Author
Member

Added subscriber: @Mets

Added subscriber: @Mets
Demeter Dzadik changed title from Armature X-Mirror inconsistencies (Edit Mode) to Armature X-Mirror inconsistencies 2019-06-09 22:44:32 +02:00

This issue was referenced by 3a6f6c87e0

This issue was referenced by 3a6f6c87e051edd3e98c92428980a52bafd7abf0

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'
Author
Member

Thanks for the patch!

I went and tested everything, there are still problems in here.

The following seem to be fixed and work perfectly:

head_radius
head[1]
head[2]
tail[1]
tail[2]

envelope_distance has changed behaviour from not being mirrored at all, to only being mirrored after a finished interaction. This could be #65669 but what makes me not think so is that the interaction has to be finished, so I don't think it's a drawing problem.

tail_radius and all bbone properties still seem to have the same problems as before, with either only being mirrored after interaction, or not being mirrored at all, except curveinx, curveoutx, rollin, rollout, which work but seem to be missing viewport update.

Except for envelope distance, things that didn't get mirrored before still don't get mirrored (again, maybe these are not a bug, but I think they should be)

Thanks for the patch! I went and tested everything, there are still problems in here. The following seem to be fixed and work perfectly: ``` head_radius head[1] head[2] tail[1] tail[2] ``` `envelope_distance` has changed behaviour from not being mirrored at all, to only being mirrored after a finished interaction. This could be #65669 but what makes me not think so is that the interaction has to be finished, so I don't think it's a drawing problem. `tail_radius` and all bbone properties still seem to have the same problems as before, with either only being mirrored after interaction, or not being mirrored at all, except `curveinx, curveoutx, rollin, rollout`, which work but seem to be missing viewport update. Except for `envelope distance`, things that didn't get mirrored before still don't get mirrored (again, maybe these are not a bug, but I think they should be)
Author
Member

Changed status from 'Resolved' to: 'Open'

Changed status from 'Resolved' to: 'Open'
Author
Member

Added subscriber: @ZedDB

Added subscriber: @ZedDB
Author
Member

@ZedDB suggested to re-open and edit the report with strike-throughs, so I'm doing that.

@ZedDB suggested to re-open and edit the report with strike-throughs, so I'm doing that.

This issue was referenced by f041d2f116

This issue was referenced by f041d2f1163c36d9831b223d61e5740f43c00a13

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'
Sebastian Parborg self-assigned this 2019-08-21 10:02:44 +02:00
Author
Member

Changed status from 'Resolved' to: 'Open'

Changed status from 'Resolved' to: 'Open'
Author
Member

Re-opening again since Pose mode mirroring still needs work.

The thing is though, instead of having a "Pose Mode X-Mirror" and an "Edit Mode X-Mirror", it should be reworked to a "Pose Data X-Mirror" and "Bone Data X-Mirror". This is because some properties don't really belong to either pose or edit mode.

These are:

  • BBone Segments
  • BBone X/Z Display Size
  • BBone "Inherit End Roll" checkbox
  • Envelope Distance
  • Envelope Weight (which is still not being mirrored at all, because I wasn't sure if it would be a good idea. But I think it would be afterall.)
  • Radius Head (which seems to have an issue with updating the mirrored bone when parents are connected. This is because the parent's tail radius overwrites the connected child's head radius, but the mirroring logic actually affects the parent's tail radius in an attempt to be smart. It should probably do nothing, and the slider itself should be grayed out in this case.)
  • Radius Tail
  • Deform (also not being mirrored at all, same reason as Envelope Weight)
  • BBone handle settings (Same here)

"Bone Data X-Mirror" would mirror these, as well as edit mode properties, irrespective of what mode you're actually in. "Pose Data X-Mirror" would only mirror properties that belong to the pose bone.
(Feedback on this idea would be welcome. @ZedDB ? )

So to really have proper armature symmetry tools, it needs a bit of work. I'd like to give it a shot when I can find time, which is probably not soon.

Having Relative mirror work outside of operators (so, when changing UI sliders) is also another can of worms which I don't really want to touch.

Re-opening again since Pose mode mirroring still needs work. The thing is though, instead of having a "Pose Mode X-Mirror" and an "Edit Mode X-Mirror", it should be reworked to a "Pose Data X-Mirror" and "Bone Data X-Mirror". This is because some properties don't really belong to either pose or edit mode. These are: - BBone Segments - BBone X/Z Display Size - BBone "Inherit End Roll" checkbox - Envelope Distance - Envelope Weight (which is still not being mirrored at all, because I wasn't sure if it would be a good idea. But I think it would be afterall.) - Radius Head (which seems to have an issue with updating the mirrored bone when parents are connected. This is because the parent's tail radius overwrites the connected child's head radius, but the mirroring logic actually affects the parent's tail radius in an attempt to be smart. It should probably do nothing, and the slider itself should be grayed out in this case.) - Radius Tail - Deform (also not being mirrored at all, same reason as Envelope Weight) - BBone handle settings (Same here) "Bone Data X-Mirror" would mirror these, as well as edit mode properties, irrespective of what mode you're actually in. "Pose Data X-Mirror" would only mirror properties that belong to the pose bone. (Feedback on this idea would be welcome. @ZedDB ? ) So to really have proper armature symmetry tools, it needs a bit of work. I'd like to give it a shot when I can find time, which is probably not soon. Having Relative mirror work outside of operators (so, when changing UI sliders) is also another can of worms which I don't really want to touch.

I think that we should probably look at if we shouldn't treat these things like the other bone attributes in pose mode. IE they would be applied to the edit mode properties so it would be more of a delta value instead.

I think that we should probably look at if we shouldn't treat these things like the other bone attributes in pose mode. IE they would be applied to the edit mode properties so it would be more of a delta value instead.
Sebastian Parborg was unassigned by Dalai Felinto 2019-12-23 16:34:09 +01:00

Added subscriber: @mano-wii

Added subscriber: @mano-wii

X-Mirror does not work when changing properties in Pose Mode.
This is not a bug, it just hasn't been implemented.
It is also not a simple task.

But it would be a good addition, so marking To Do.

X-Mirror does not work when changing properties in Pose Mode. This is not a bug, it just hasn't been implemented. It is also not a simple task. But it would be a good addition, so marking `To Do`.
Author
Member

I think all the "this is clearly a bug" aspects of this report have been addressed, and the issues that remain are more of a design question, so I edited this report accordingly.

I think all the "this is clearly a bug" aspects of this report have been addressed, and the issues that remain are more of a design question, so I edited this report accordingly.

Added subscriber: @ErickNyanduKabongo

Added subscriber: @ErickNyanduKabongo

Added subscriber: @jpbouza-4

Added subscriber: @jpbouza-4
Philipp Oeser removed the
Interest
Animation & Rigging
label 2023-02-09 14:36:41 +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#65671
No description provided.