Weight Paint Mode Mirror Vertex Groups not working #116115

Closed
opened 2023-12-13 00:44:28 +01:00 by Leon · 15 comments

System Information
Operating system: Windows 10
Graphics card:

Blender Version
Broken: (4.0)

Short description of error
The Mirror Vertex Groups option in Weight Paint Mode ist not working.

Exact steps for others to reproduce the error
Based on the default startup or an attached .blend file (as simple as possible).

  • Add a symmetric Mesh.
  • Add a symmetric Rig.
  • Go to Weight Paint Mode with the Rig and the Mesh selected.
  • "Mirror Vertex Group" option works as long as the Mesh is perfectly symmetrical and "Topology Mirror" is active.
  • If "Topology Mirror" ist inactive, the Mirror Vertex Group option does not work at all.
  • Now make the Mesh slightly asymmetrical and try any of the combinations again. Nothing mirrors anymore.
    Expected behaviour (as well as the described behaviour in the quick description as well as the full documentation) would be for the "Mirror Vertex Group" option wo work like the Mirror option in Sculpt Mode, meaning that the weights would be painted mirrored based on the proximity to the brush.
**System Information** Operating system: Windows 10 Graphics card: **Blender Version** Broken: (4.0) **Short description of error** The Mirror Vertex Groups option in Weight Paint Mode ist not working. **Exact steps for others to reproduce the error** Based on the default startup or an attached .blend file (as simple as possible). - Add a symmetric Mesh. - Add a symmetric Rig. - Go to Weight Paint Mode with the Rig and the Mesh selected. - "Mirror Vertex Group" option works as long as the Mesh is perfectly symmetrical and "Topology Mirror" is active. - If "Topology Mirror" ist inactive, the Mirror Vertex Group option does not work at all. - Now make the Mesh slightly asymmetrical and try any of the combinations again. Nothing mirrors anymore. Expected behaviour (as well as the described behaviour in the quick description as well as the full documentation) would be for the "Mirror Vertex Group" option wo work like the Mirror option in Sculpt Mode, meaning that the weights would be painted mirrored based on the proximity to the brush.
Leon added the
Priority
Normal
Type
Report
Status
Needs Triage
labels 2023-12-13 00:44:28 +01:00
Member

Hi, thanks for the report. Unable to confirm the described behavior in 4.1
Could you check again in recent builds?: https://builder.blender.org/download/daily/

Hi, thanks for the report. Unable to confirm the described behavior in 4.1 Could you check again in recent builds?: https://builder.blender.org/download/daily/
Pratik Borhade added
Status
Needs Information from User
and removed
Status
Needs Triage
labels 2023-12-13 05:45:22 +01:00
Author

I tried it out in 4.1 now and the problems still persist. I took a few screenshots to hopefully better illustrate the problems.
(The "active side" is the bone I weight painted on and the "passive side" is the mirrored bone.)

Blender Weight Paint Symmetry Bug_1.jpg
Blender Weight Paint Symmetry Bug_2.jpg
Blender Weight Paint Symmetry Bug_3.jpg
Blender Weight Paint Symmetry Bug_4.jpg
Blender Weight Paint Symmetry Bug_5.jpg

I tried it out in 4.1 now and the problems still persist. I took a few screenshots to hopefully better illustrate the problems. (The "active side" is the bone I weight painted on and the "passive side" is the mirrored bone.) ![Blender Weight Paint Symmetry Bug_1.jpg](/attachments/1c3afb7f-40a0-4058-b154-78bf713a9f36) ![Blender Weight Paint Symmetry Bug_2.jpg](/attachments/c3d7938c-2e0e-407c-b113-123843f4090b) ![Blender Weight Paint Symmetry Bug_3.jpg](/attachments/50998a06-cd1e-4277-8b23-9f821407e6d5) ![Blender Weight Paint Symmetry Bug_4.jpg](/attachments/2b40e540-07cc-45bf-90b5-f2c94a1b5af2) ![Blender Weight Paint Symmetry Bug_5.jpg](/attachments/8effd065-5a90-4ba0-9eeb-ebf21c3c4b23)
Member

Thanks. Can you share .blend file to be able to verify the issue locally.

Thanks. Can you share .blend file to be able to verify the issue locally.
Author

Yes of course. Here's the file I set up for the tests. Though it's in the state before anything was weightpainted, so you can properly try out all the different modes.
Weightpaint Symmetry Test 4.1.blend

Yes of course. Here's the file I set up for the tests. Though it's in the state before anything was weightpainted, so you can properly try out all the different modes. [Weightpaint Symmetry Test 4.1.blend](/attachments/519655a6-feb8-4da0-a8b6-90548b095d71)
Pratik Borhade added
Status
Needs Triage
and removed
Status
Needs Information from User
labels 2024-01-02 10:48:07 +01:00
Member

I think the primary description of the issue does not really correspond to the screenshots provided?

The primary description mentions:

  • symmetric mesh and top
  • "If "Topology Mirror" is inactive, the Mirror Vertex Group option does not work at all

Cannot repro this, also the screenshots for this case (the leftmost column) indicates all combinations are "Behavior expected"

The report description also does not mention for which scenario/combination the behavior changed between 3.6 and 4.0.

Could we try again to clarify this? Thx in advance

I think the primary description of the issue does not really correspond to the screenshots provided? The primary description mentions: - symmetric mesh and top - "If "Topology Mirror" is inactive, the Mirror Vertex Group option does not work at all Cannot repro this, also the screenshots for this case (the leftmost column) indicates all combinations are "Behavior expected" The report description also does not mention for which scenario/combination the behavior changed between 3.6 and 4.0. Could we try again to clarify this? Thx in advance
Philipp Oeser added
Status
Needs Information from User
and removed
Status
Needs Triage
labels 2024-01-02 14:13:38 +01:00
Author

Hi there @lichtwerk , I'm not sure I understand what exactly is unclear to you, but I hope the following helps.

Is it possible that the last two screenshots are a bit confusing here? Because in these the "X-Mirror" Option is disabled in the first place therefore I didn't find it unexpected that nothing is getting mirrored. I added them for completions sake, to have all possible combinations covered, but for all intents and purposes regarding the initial problem/s the last two screenshots can probably be ignored.

The 2nd and 3rd screenshots are the one corresponding to the described problem, namely that:

  1. Mirror Vertex Groups + Mirror: X should lead to the weight painting being mirrored in the same way mirroring works in sculpt mode
  2. Mirror Vertex Groups + Mirror: X + Topology Mirror should work for asymmetrical Meshes with mirrored Topology (and additionally should definitely not lead to the result in the middle column of the 3rd screenshot)

I hope this helps a bit with the clarification, otherwise please let me know 🙂
Best regards and happy new year 🥳

Hi there @lichtwerk , I'm not sure I understand what exactly is unclear to you, but I hope the following helps. Is it possible that the last two screenshots are a bit confusing here? Because in these the "X-Mirror" Option is disabled in the first place therefore I didn't find it unexpected that nothing is getting mirrored. I added them for completions sake, to have all possible combinations covered, but for all intents and purposes regarding the initial problem/s the last two screenshots can probably be ignored. The 2nd and 3rd screenshots are the one corresponding to the described problem, namely that: 1. Mirror Vertex Groups + Mirror: X should lead to the weight painting being mirrored in the same way mirroring works in sculpt mode 2. Mirror Vertex Groups + Mirror: X + Topology Mirror should work for asymmetrical Meshes with mirrored Topology (and additionally should definitely not lead to the result in the middle column of the 3rd screenshot) I hope this helps a bit with the clarification, otherwise please let me know 🙂 Best regards and happy new year 🥳
Philipp Oeser added
Status
Needs Triage
and removed
Status
Needs Information from User
labels 2024-01-18 11:45:18 +01:00
Member
  1. Mirror Vertex Groups + Mirror: X should lead to the weight painting being mirrored in the same way mirroring works in sculpt mode

Second screenshot indicates that this is working for you (except for the Asymmetric Mesh (symmetric Topo) case). But since Topology Mirror is OFF, why should that case work?

  1. Mirror Vertex Groups + Mirror: X + Topology Mirror should work for asymmetrical Meshes with mirrored Topology (and additionally should definitely not lead to the result in the middle column of the 3rd screenshot)

That case I need to check again

The report description also does not mention for which scenario/combination the behavior changed between 3.6 and 4.0.

This is not answered yet

>1. Mirror Vertex Groups + Mirror: X should lead to the weight painting being mirrored in the same way mirroring works in sculpt mode Second screenshot indicates that this is working for you (except for the `Asymmetric Mesh (symmetric Topo)` case). But since Topology Mirror is OFF, why should that case work? >2. Mirror Vertex Groups + Mirror: X + Topology Mirror should work for asymmetrical Meshes with mirrored Topology (and additionally should definitely not lead to the result in the middle column of the 3rd screenshot) That case I need to check again >The report description also does not mention for which scenario/combination the behavior changed between 3.6 and 4.0. This is not answered yet
Author

Second screenshot indicates that this is working for you (except for the Asymmetric Mesh (symmetric Topo) case). But since Topology Mirror is OFF, why should that case work?

The Mesh "Asymmetric Mesh (symmetric Topology) is just very slightly asymmetric. Therefore I'd expect Vertices on the mirrored side which are in the Radius of the Weightpaint Brush to be influenced accordingly.
At least this is what would happen in Sculpt Mode. Here's a quick example of the same Mesh, but with the one arm moved to the side and instead a sphere in the location and roughly with the diameter of the arm/wrist at that point. See the dot(s) of the brush on the mirrored Vertices:
image
Does that make a little more sense? Maybe it's the Sculpt Mode that is confusing me here, but to me the way Sculpt works in this case seems to make sense and therefore I'd expect other Modes to work the same way.

This is not answered yet

I'm not sure what it was anymore, sorry. Just tested it and it seems to have the same problems as 4.0

> Second screenshot indicates that this is working for you (except for the `Asymmetric Mesh (symmetric Topo)` case). But since Topology Mirror is OFF, why should that case work? The Mesh "Asymmetric Mesh (symmetric Topology) is just very slightly asymmetric. Therefore I'd expect Vertices on the mirrored side which are in the Radius of the Weightpaint Brush to be influenced accordingly. At least this is what would happen in Sculpt Mode. Here's a quick example of the same Mesh, but with the one arm moved to the side and instead a sphere in the location and roughly with the diameter of the arm/wrist at that point. See the dot(s) of the brush on the mirrored Vertices: ![image](/attachments/54755caa-e11f-4642-ab1c-2fb8542faba8) Does that make a little more sense? Maybe it's the Sculpt Mode that is confusing me here, but to me the way Sculpt works in this case seems to make sense and therefore I'd expect other Modes to work the same way. > This is not answered yet I'm not sure what it was anymore, sorry. Just tested it and it seems to have the same problems as 4.0
379 KiB
Member

I'm not sure what it was anymore, sorry. Just tested it and it seems to have the same problems as 4.0

I will remove this from the report description then

Worked: (3.6.5 though not quite as expected either)

> I'm not sure what it was anymore, sorry. Just tested it and it seems to have the same problems as 4.0 I will remove this from the report description then >Worked: (3.6.5 though not quite as expected either)
Member

Sorry again this took a while to answer.

The Mesh "Asymmetric Mesh (symmetric Topology) is just very slightly asymmetric. Therefore I'd expect Vertices on the mirrored side which are in the Radius of the Weightpaint Brush to be influenced accordingly. At least this is what would happen in Sculpt Mode

This is indeed different in weightpaint mode (with Mirror Vertex Groups ON) vs. sculptmode -- or vs. weightpaint mode (with Mirror Vertex Groups OFF). In weightpaint (with Mirror Vertex Groups ON), there are no symmetry strokes on "the other side" :

/* We don't do any symmetry strokes when mirroring vertex groups. */

So with Mirror Vertex Groups OFF, you will actually get the behavior you described from sculptmode : the brush location gets mirrored and everything inside the brush radius (based off of the mirrored location) is still affected

With Mirror Vertex Groups ON, we dont have mirrored strokes, instead the weights get copied over and this then depends on mesh_get_x_mirror_vert to determine which verts to copy the weight to. Using a KDTree and the following threshold

#define KD_THRESH 0.00002f

This might be unexpected, but does this at least explain the situation from the code side of view?

From the user side of view, I do understand that this is a bit unintuitive.
It might even be possible to not use the KDTree and just use mirrored strokes, but this is probably a little more involved (also some research would have to be done prior to actually know why the current approach was chosen). Will also ask around in chat.

Regarding the whole Topology Mirror side of things: I cannot properly comment on that, see also discussion in #81698

Sorry again this took a while to answer. >The Mesh "Asymmetric Mesh (symmetric Topology) is just very slightly asymmetric. Therefore I'd expect Vertices on the mirrored side which are in the Radius of the Weightpaint Brush to be influenced accordingly. At least this is what would happen in Sculpt Mode This is indeed different in weightpaint mode (with `Mirror Vertex Groups` ON) vs. sculptmode -- or vs. weightpaint mode (with `Mirror Vertex Groups` OFF). In weightpaint (with `Mirror Vertex Groups` ON), there are no symmetry **strokes** on "the other side" : `/* We don't do any symmetry strokes when mirroring vertex groups. */` So with `Mirror Vertex Groups` OFF, you will actually get the behavior you described from sculptmode : the brush location gets mirrored and everything inside the brush radius (based off of the mirrored location) is still affected With `Mirror Vertex Groups` ON, we dont have mirrored strokes, instead the weights get copied over and this then depends on `mesh_get_x_mirror_vert` to determine which verts to copy the weight to. Using a KDTree and the following threshold `#define KD_THRESH 0.00002f` This might be unexpected, but does this at least explain the situation from the code side of view? From the user side of view, I do understand that this is a bit unintuitive. It might even be possible to not use the KDTree and just use mirrored strokes, but this is probably a little more involved (also some research would have to be done prior to actually know why the current approach was chosen). Will also ask around in chat. Regarding the whole Topology Mirror side of things: I cannot properly comment on that, see also discussion in #81698
Member

but does this at least explain the situation from the code side of view?

@PanicPug : ^^

> but does this at least explain the situation from the code side of view? @PanicPug : ^^
Philipp Oeser added
Status
Needs Information from User
and removed
Status
Needs Triage
labels 2024-03-21 14:30:32 +01:00
Member

poke ^^

poke ^^
Author

Hi, sorry for the late reply on my part this time. Thank you for the research and explanations. I don't fully understand the technicalities behind it, but I think I get the gist of it.
As you said, from a user perspective it's somewhat unintuitive, so if it would be possible to use mirrored strokes, it might be a great help for Weightpainting. If you manage to find out more about it and maybe get an answer from the chat, I'd be very interested :)

The discussion you linked (#81698), I can unfortunately not see, only getting a 404 Error when I click on it.

Thanks again for all your work on this.

Hi, sorry for the late reply on my part this time. Thank you for the research and explanations. I don't fully understand the technicalities behind it, but I think I get the gist of it. As you said, from a user perspective it's somewhat unintuitive, so if it would be possible to use mirrored strokes, it might be a great help for Weightpainting. If you manage to find out more about it and maybe get an answer from the chat, I'd be very interested :) The discussion you linked (#81698), I can unfortunately not see, only getting a 404 Error when I click on it. Thanks again for all your work on this.
Philipp Oeser added
Status
Needs Triage
and removed
Status
Needs Information from User
labels 2024-04-22 09:44:04 +02:00
Member

The discussion you linked (#81698), I can unfortunately not see, only getting a 404 Error when I click on it.

Sorry, this should have directed to blender/blender-manual#81698

> The discussion you linked (#81698), I can unfortunately not see, only getting a 404 Error when I click on it. Sorry, this should have directed to https://projects.blender.org/blender/blender-manual/issues/81698
Member

As you said, from a user perspective it's somewhat unintuitive, so if it would be possible to use mirrored strokes, it might be a great help for Weightpainting. If you manage to find out more about it and maybe get an answer from the chat, I'd be very interested :)

I did not get an answer on that question, no.
But like I said, this seems to be expected behavior, at least in code due to the comment
/* We don't do any symmetry strokes when mirroring vertex groups. */

So this makes it a non-bug (even if the behavior might be unexpected) and I will have to close this report.

Thanks again for the report, but the issue reported here is a request for modified/improved behavior and not a bug in current behavior. Closing as this bug tracker is only for bugs and errors.

For user requests and feedback, please use other channels: https://developer.blender.org/docs/handbook/communication/user_feedback/

For more information on why this isn't considered a bug, visit: https://developer.blender.org/docs/handbook/bug_reports/not_a_bug/

Of course feel free to comment again, but iirc, we have gone over all issues mentioned.

> As you said, from a user perspective it's somewhat unintuitive, so if it would be possible to use mirrored strokes, it might be a great help for Weightpainting. If you manage to find out more about it and maybe get an answer from the chat, I'd be very interested :) I did not get an answer on that question, no. But like I said, this seems to be expected behavior, at least in code due to the comment `/* We don't do any symmetry strokes when mirroring vertex groups. */` So this makes it a non-bug (even if the behavior might be unexpected) and I will have to close this report. ``` Thanks again for the report, but the issue reported here is a request for modified/improved behavior and not a bug in current behavior. Closing as this bug tracker is only for bugs and errors. For user requests and feedback, please use other channels: https://developer.blender.org/docs/handbook/communication/user_feedback/ For more information on why this isn't considered a bug, visit: https://developer.blender.org/docs/handbook/bug_reports/not_a_bug/ ``` Of course feel free to comment again, but iirc, we have gone over all issues mentioned.
Blender Bot added
Status
Archived
and removed
Status
Needs Triage
labels 2024-04-22 15:00:06 +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
3 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#116115
No description provided.