regression, instanced object can't have different vertex group names (preventing instances to be rigged to other bones) #94634

Closed
opened 2022-01-04 14:28:18 +01:00 by Massimiliano Puliero · 15 comments

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

Blender Version
Broken: version: 3.0.0, branch: master, commit date: 2021-12-02 18:35, hash: f1cca30557
Worked: 2.93 and before

Caused by 3b6ee8cee7

Short description of error
Vertex groups can't be unique on unigue objects sharing the same mesh anymore.

Exact steps for others to reproduce the error
In 2.93, objects could have different vertex group names (allowing them to be rigged to different bones in an armature).
In 3.0 onwards this is not possible anymore.

vg_err_ss.jpg

vg_armature.blend

**System Information** Operating system: Windows-10-10.0.19043-SP0 64 Bits Graphics card: NVIDIA GeForce RTX 2070 SUPER/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 497.29 **Blender Version** Broken: version: 3.0.0, branch: master, commit date: 2021-12-02 18:35, hash: `f1cca30557` Worked: 2.93 and before Caused by 3b6ee8cee7 **Short description of error** Vertex groups can't be unique on unigue objects sharing the same mesh anymore. **Exact steps for others to reproduce the error** In 2.93, objects could have different vertex group names (allowing them to be rigged to different bones in an armature). In 3.0 onwards this is not possible anymore. ![vg_err_ss.jpg](https://archive.blender.org/developer/F12789378/vg_err_ss.jpg) [vg_armature.blend](https://archive.blender.org/developer/F12789380/vg_armature.blend)

Added subscriber: @MassimilianoPuliero

Added subscriber: @MassimilianoPuliero
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Member

Changed status from 'Needs Triage' to: 'Needs User Info'

Changed status from 'Needs Triage' to: 'Needs User Info'
Member

It is just that the names are now part of the mesh (instead of the object) since 3b6ee8cee7.
This has an effect for names, true, but assignments/weights were always shared (even in 2.93, no?)

Afraid this is not going to be changed (even #93778 (Blender 3.0 doesn't save vertex groups from linked objects) wont be changed).
Question: what was the usecase for having different names for vertexgroups on shared meshes (where the actual values would be shared [index based] anyways?)

It is just that the names are now part of the mesh (instead of the object) since 3b6ee8cee7. This has an effect for names, true, but assignments/weights were always shared (even in 2.93, no?) Afraid this is not going to be changed (even #93778 (Blender 3.0 doesn't save vertex groups from linked objects) wont be changed). Question: what was the usecase for having different names for vertexgroups on shared meshes (where the actual values would be shared [index based] anyways?)

Weight paint and armature modifier are also affected.
Opening an old file created in blender 2.9 that contains multiple instances controlled by a single armature gave me problem for this reason.

thank you.

Weight paint and armature modifier are also affected. Opening an old file created in blender 2.9 that contains multiple instances controlled by a single armature gave me problem for this reason. thank you.
Member

In #94634#1282717, @MassimilianoPuliero wrote:
Weight paint and armature modifier are also affected.
Opening an old file created in blender 2.9 that contains multiple instances controlled by a single armature gave me problem for this reason.

thank you.

Still dont get it, I think.
Could you try to explain in more detail what exactly is now broken in your workflow with "multiple instances controlled by a single armature gave me problem"?

> In #94634#1282717, @MassimilianoPuliero wrote: > Weight paint and armature modifier are also affected. > Opening an old file created in blender 2.9 that contains multiple instances controlled by a single armature gave me problem for this reason. > > thank you. Still dont get it, I think. Could you try to explain in more detail what exactly is now broken in your workflow with "multiple instances controlled by a single armature gave me problem"?

Hi,
I attach here a more clear example file created in 2.93 and opened in 3.0.
Thank you.

vg_err_ss.jpg

vg_armature.blend

Hi, I attach here a more clear example file created in 2.93 and opened in 3.0. Thank you. ![vg_err_ss.jpg](https://archive.blender.org/developer/F12789378/vg_err_ss.jpg) [vg_armature.blend](https://archive.blender.org/developer/F12789380/vg_armature.blend)
Member

Changed status from 'Needs User Info' to: 'Needs Developer To Reproduce'

Changed status from 'Needs User Info' to: 'Needs Developer To Reproduce'
Member

Added subscribers: @HooglyBoogly, @dr.sybren

Added subscribers: @HooglyBoogly, @dr.sybren
Member

OK, get it now.

I am afraid this wont be changed, but agree this is a usecase that is not possible anymore in 3.0 (so in a way, this is a regression).
Even though this might not be changed (pretty sure it wont), I would still like a short-term answer/classification from @HooglyBoogly regarding this (so users know right away that they'll have to adjust their workflows...).
@dr.sybren might have a word here also.

OK, get it now. I am afraid this wont be changed, but agree this is a usecase that is not possible anymore in 3.0 (so in a way, this is a regression). Even though this might not be changed (pretty sure it wont), I would still like a short-term answer/classification from @HooglyBoogly regarding this (so users know right away that they'll have to adjust their workflows...). @dr.sybren might have a word here also.
Philipp Oeser changed title from regression, instanced object can't have different vertex group names to regression, instanced object can't have different vertex group names (preventing instances to be rigged to other bones) 2022-01-05 08:44:23 +01:00
Member

Changed status from 'Needs Developer To Reproduce' to: 'Archived'

Changed status from 'Needs Developer To Reproduce' to: 'Archived'
Member

Yes, there's just no way for this to work anymore. The list of names is stored in the mesh data, so it will be the same for multiple objects using the same mesh. The fact that it worked in the past seems useful in your situation, but it's not clear that it was ever actually designed behavior.

It's not ideal, but in your situation there is a simple workaround-- duplicating the mesh so that each object has a unique mesh and then renaming the groups on one of them.

I'm going to close this report, since though there is a compatibility issue with 2.93, this is the designed behavior now. Sorry for any inconvenience that caused, and thanks for the report.

(This issue is now listed in the release notes )

Yes, there's just no way for this to work anymore. The list of names is stored in the mesh data, so it will be the same for multiple objects using the same mesh. The fact that it worked in the past seems useful in your situation, but it's not clear that it was ever actually designed behavior. It's not ideal, but in your situation there is a simple workaround-- duplicating the mesh so that each object has a unique mesh and then renaming the groups on one of them. I'm going to close this report, since though there is a compatibility issue with 2.93, this is the designed behavior now. Sorry for any inconvenience that caused, and thanks for the report. (This issue is now listed in the [release notes ](https://wiki.blender.org/wiki/Reference/Release_Notes/3.0/Core#Compatibility))

Added subscriber: @DanielToma

Added subscriber: @DanielToma

@HooglyBoogly

With all the esteem and respect for those who develop this software, allow me to add a comment and apologize if I bother anyone.

Removing this option limits the functionality whereby instance objects can no longer be parented to a different rig.
In gaming this helps a lot. Object instances is a must to reduce the poly count and if those instances cannot be parented to different rig/joints, because vertex grouping is the same for every instance, it become useless.
This was a very important feature, is not ok to treeat it with such carelessness.

@HooglyBoogly With all the esteem and respect for those who develop this software, allow me to add a comment and apologize if I bother anyone. Removing this option limits the functionality whereby instance objects can no longer be parented to a different rig. In gaming this helps a lot. Object instances is a must to reduce the poly count and if those instances cannot be parented to different rig/joints, because vertex grouping is the same for every instance, it become useless. This was a very important feature, is not ok to treeat it with such carelessness.
Member

Hi @DanielToma, I don't mean to treat this feature carelessly. Unfortunately at the time we weren't aware of all the ways it was used.
However, I think in retrospect we would have come to the same decision in the end. Referencing geometry-level data on objects just doesn't work well from the perspective of proceduralism and data structures. The future of geometry data in Blender is attributes, and it was important to work with that.
The vertex group data was always the same for every object using the same mesh. The fact that the names could be different on different objects gave some flexibility on the object level that is gone indeed; you can't have different vertex group names on different objects now.

Unless I'm missing something, you should still be able to use the same mesh for different armatures, bones and vertex group names just have to match.

I'd also suggest that geometry nodes might be a solution to having procedural changes on an object level starting from the same mesh. Though that might not be enough in this case.
Maybe if we can provide the ability to rename attributes/vertex groups in geometry nodes, this would still be possible. Do you think that would work?

Hi @DanielToma, I don't mean to treat this feature carelessly. Unfortunately at the time we weren't aware of all the ways it was used. However, I think in retrospect we would have come to the same decision in the end. Referencing geometry-level data on objects just doesn't work well from the perspective of proceduralism and data structures. The future of geometry data in Blender is attributes, and it was important to work with that. The vertex group data was always the same for every object using the same mesh. The fact that the names could be different on different objects gave some flexibility on the object level that is gone indeed; you can't have different vertex group names on different objects now. Unless I'm missing something, you should still be able to use the same mesh for different armatures, bones and vertex group names just have to match. I'd also suggest that geometry nodes might be a solution to having procedural changes on an object level starting from the same mesh. Though that might not be enough in this case. Maybe if we can provide the ability to rename attributes/vertex groups in geometry nodes, this would still be possible. Do you think that would work?
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
4 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#94634
No description provided.