Replace Bone Layers+Groups with Bone Collections #109976

Merged
Nathan Vegdahl merged 7 commits from dr.sybren/blender:anim/armature-collections into main 2023-08-29 14:31:31 +02:00

This implements the design described in #108941, and then specifically the targets for 4.0-bcon1

A demo file 108941-bone-collections-test.blend is attached. The 108941-saved-with-main-branch.blend is the same file, but then saved with Blender 4.0 main branch (so without any bone collections) to test the versioning of armature layers & bone groups.

Note: the cleanup to remove all traces of bone layers & groups (except where necessary for versioning) is not yet complete. That'll happen in a later patch, early September.

  • new blender/source/animrig module for new Animation & Rigging code (e604f3db91).
  • source/blender/animrig/ANIM_bone_collections.h file for (e604f3db91):
    • abstracting away access to the current bone layers system, so that they can later be reimplemented for bone collections
    • API for managing bone collections
  • Changing existing code that accesses bone layers to use the above API (e604f3db91)
  • Changing existing code that accesses bone groups to use bone collections
  • UI for displaying and managing bone collections.
  • Code to read/write bone collections from/to blend files.
  • new source/blender/editors/armature/bone_collections.cc file for operations on bone collections, mimicking what's currently possible for bone groups.
  • Versioning code to convert bone group colors to bone colors.
  • Removal of bone group colors from the UI.
  • Removal of bone group colors from RNA. not going to do this, as this would also remove access to action group colors, and this PR does not provide any alternative implementation for those.
  • Add visibility toggles to bone collections (could be split between pose mode and edit mode visibility of bone layers is also shared between pose & edit mode, so keeping that behaviour for now)
  • Update the sync-to-actiongroup-colors code to use bone colors instead of bonegroup colors.
  • Versioning code to convert bone layers & groups to collections.
  • Removal of bone layer code & UI
  • UI: show which collection contains the active bone.
  • Make Assign/Unassign/Select/Deselect buttons work in edit mode.
  • Replace Ctrl+G 'Pose Groups' menu.

It is intended that this PR will result in multiple commits:

  • Moving bone color from bone groups to the bones themselves (which introduces edit bone colors as well).
  • Bone Collections.

New API

import bpy

C = bpy.context

ob = C.object
assert ob.type == 'ARMATURE'
arm = ob.data

# Access to bone collections via the armature:
bcoll = arm.collections.new('Created in Python')

# Assignment via bonecollection.assign(X) works for bones (arm.bones['name']),
# pose bones (ob.pose.bones['name']), and edit bones (arm.bones['name'] in edit
# mode).
for posebone in ob.pose.bones:
    bcoll.assign(posebone)

# Bone collection membership can be queried via bone.collections:
bone = arm.bones['Middle Low']
print(f'Bone {bone.name} is in the new collection: {bcoll.name in bone.collections}')

# Bone colors can be accessed via:
arm.bones['Middle Low'].color.palette = 'THEME04'
ob.pose.bones['Middle Low'].color.palette = 'THEME08'

# Bone Collection deletion via Python:
bcoll = arm.collections.new('Another One')
arm.collections.remove(bcoll)

User Interface

Bone Colors can be configured in the Bone property panel:

image

Bone Collections can be managed in the Armature property panel:

image

M menu in pose mode (extending to edit mode is for bcon2). This will un-assign the selected bones from all their bone collections, then assign to the selected one (i.e. 'move to collection').

image

Shift+M menu in pose mode (extending to edit mode is for bcon2). This will simply assign to the chosen collection, keeping the other assignments intact.

image

Ctrl+G menu in pose mode (mimicking the current Ctrl+G for bone group assignments). This one will likely disappear before the release; I ported it just for completeness sake. Contrary to the above menus, it requires setting the active bone collection in the properties panel, the convenience of which is dubious.

image

This implements the design described in #108941, and then specifically the **targets for 4.0-bcon1** A demo file `108941-bone-collections-test.blend` is attached. The `108941-saved-with-main-branch.blend` is the same file, but then saved with Blender 4.0 `main` branch (so without any bone collections) to test the versioning of armature layers & bone groups. Note: the cleanup to remove all traces of bone layers & groups (except where necessary for versioning) is not yet complete. That'll happen in a later patch, early September. - [x] new `blender/source/animrig` module for new Animation & Rigging code (e604f3db91e4e3eef0ecc4a8b6145aef2af23560). - [x] `source/blender/animrig/ANIM_bone_collections.h` file for (e604f3db91e4e3eef0ecc4a8b6145aef2af23560): - [x] abstracting away access to the current **bone layers** system, so that they can later be reimplemented for bone collections - [x] API for managing bone collections - [x] Changing existing code that accesses bone layers to use the above API (e604f3db91e4e3eef0ecc4a8b6145aef2af23560) - [x] Changing existing code that accesses bone groups to use bone collections - [x] UI for displaying and managing bone collections. - [x] Code to read/write bone collections from/to blend files. - [x] new `source/blender/editors/armature/bone_collections.cc` file for operations on bone collections, mimicking what's currently possible for bone groups. - [x] Versioning code to convert bone group colors to bone colors. - [x] Removal of bone group colors from the UI. - [x] ~~Removal of bone group colors from RNA.~~ not going to do this, as this would also remove access to action group colors, and this PR does not provide any alternative implementation for those. - [x] Add visibility toggles to bone collections (~~could be split between pose mode and edit mode~~ visibility of bone layers is also shared between pose & edit mode, so keeping that behaviour for now) - [x] Update the sync-to-actiongroup-colors code to use bone colors instead of bonegroup colors. - [x] Versioning code to convert bone layers & groups to collections. - [x] Removal of bone layer code & UI - [x] UI: show which collection contains the active bone. - [x] Make Assign/Unassign/Select/Deselect buttons work in edit mode. - [x] Replace Ctrl+G 'Pose Groups' menu. It is intended that this PR will result in multiple commits: - Moving bone color from bone groups to the bones themselves (which introduces edit bone colors as well). - Bone Collections. ## New API ```py import bpy C = bpy.context ob = C.object assert ob.type == 'ARMATURE' arm = ob.data # Access to bone collections via the armature: bcoll = arm.collections.new('Created in Python') # Assignment via bonecollection.assign(X) works for bones (arm.bones['name']), # pose bones (ob.pose.bones['name']), and edit bones (arm.bones['name'] in edit # mode). for posebone in ob.pose.bones: bcoll.assign(posebone) # Bone collection membership can be queried via bone.collections: bone = arm.bones['Middle Low'] print(f'Bone {bone.name} is in the new collection: {bcoll.name in bone.collections}') # Bone colors can be accessed via: arm.bones['Middle Low'].color.palette = 'THEME04' ob.pose.bones['Middle Low'].color.palette = 'THEME08' # Bone Collection deletion via Python: bcoll = arm.collections.new('Another One') arm.collections.remove(bcoll) ``` ## User Interface Bone Colors can be configured in the Bone property panel: ![image](/attachments/572b72e8-1ad3-404f-8449-bcf827718cde) Bone Collections can be managed in the Armature property panel: ![image](/attachments/067ab6b0-4370-426b-8800-f52c47bce6f3) `M` menu in pose mode (extending to edit mode is for bcon2). This will un-assign the selected bones from all their bone collections, then assign to the selected one (i.e. 'move to collection'). ![image](/attachments/28a3c091-a956-45e3-863e-479e26d1000a) `Shift+M` menu in pose mode (extending to edit mode is for bcon2). This will simply assign to the chosen collection, keeping the other assignments intact. ![image](/attachments/05da34b9-74bd-4f57-8d5b-352be4cc3b3f) `Ctrl+G` menu in pose mode (mimicking the current Ctrl+G for bone group assignments). This one will likely disappear before the release; I ported it just for completeness sake. Contrary to the above menus, it requires setting the active bone collection in the properties panel, the convenience of which is dubious. ![image](/attachments/17cc4030-c0fa-467c-8487-12d38a3d6fce)
Sybren A. Stüvel force-pushed anim/armature-collections from 0d2ba6097e to 688ea60721 2023-07-20 15:46:59 +02:00 Compare
Sybren A. Stüvel force-pushed anim/armature-collections from e405f1ee06 to 90c27798e1 2023-07-27 16:07:13 +02:00 Compare
Sybren A. Stüvel added the
Module
Animation & Rigging
label 2023-07-28 11:51:05 +02:00
Sybren A. Stüvel added this to the 4.0 milestone 2023-07-28 11:51:10 +02:00
Sybren A. Stüvel added this to the Animation & Rigging project 2023-07-28 11:51:14 +02:00
Sybren A. Stüvel self-assigned this 2023-07-28 11:51:21 +02:00
Sybren A. Stüvel changed title from WIP: Armature Collections to Replace Bone Layers+Groups with Bone Collections 2023-08-21 09:48:51 +02:00
Sybren A. Stüvel changed title from Replace Bone Layers+Groups with Bone Collections to WIP: Replace Bone Layers+Groups with Bone Collections 2023-08-21 09:48:59 +02:00
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109976) when ready.
Sybren A. Stüvel force-pushed anim/armature-collections from 406aafb056 to af89de7139 2023-08-22 12:12:33 +02:00 Compare
Sybren A. Stüvel force-pushed anim/armature-collections from af89de7139 to e3f1af6fee 2023-08-22 12:17:57 +02:00 Compare
Sybren A. Stüvel force-pushed anim/armature-collections from e3f1af6fee to cd1a5e8df4 2023-08-22 12:44:44 +02:00 Compare
Sybren A. Stüvel force-pushed anim/armature-collections from cd1a5e8df4 to eef2629628 2023-08-22 15:15:32 +02:00 Compare
Sybren A. Stüvel requested review from Nathan Vegdahl 2023-08-22 15:23:27 +02:00
Sybren A. Stüvel requested review from Christoph Lendenfeld 2023-08-22 15:23:34 +02:00
Sybren A. Stüvel changed title from WIP: Replace Bone Layers+Groups with Bone Collections to Replace Bone Layers+Groups with Bone Collections 2023-08-22 15:23:43 +02:00
Author
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109976) when ready.
Nathan Vegdahl reviewed 2023-08-23 12:19:36 +02:00
Nathan Vegdahl reviewed 2023-08-23 12:21:13 +02:00
Nathan Vegdahl reviewed 2023-08-23 14:50:09 +02:00
Nathan Vegdahl left a comment
Member

Nothing blocking jumped out at me looking through the code again. So mainly just some nits that can be addressed later.

Nothing blocking jumped out at me looking through the code again. So mainly just some nits that can be addressed later.
@ -170,2 +138,2 @@
# row.operator("pose.bone_group_remove_from", text="Remove")
sub.operator("pose.group_unassign", text="Remove")
sub.operator("armature.collection_assign", text="Assign")
sub.operator("armature.collection_unassign", text="Remove")
Member

These should be disabled if there is no active_bcoll. (Just needs to be added to poll.)

These should be disabled if there is no `active_bcoll`. (Just needs to be added to poll.)
Member

When I looked at the actual poll functions, that doesn't actually look like the appropriate place, since these operators can be called with an explicitly specified collection rather than the active one. So it probably makes sense to disable them in the Python code here after all. Same for the other comment about this below.

When I looked at the actual poll functions, that doesn't actually look like the appropriate place, since these operators can be called with an explicitly specified collection rather than the active one. So it probably makes sense to disable them in the Python code here after all. Same for the other comment about this below.
@ -174,2 +142,2 @@
sub.operator("pose.group_select", text="Select")
sub.operator("pose.group_deselect", text="Deselect")
sub.operator("armature.collection_select", text="Select")
sub.operator("armature.collection_deselect", text="Deselect")
Member

These should be disabled if there is no active_bcoll. (Just needs to be added to poll.)

These should be disabled if there is no `active_bcoll`. (Just needs to be added to poll.)
@ -0,0 +16,4 @@
#include "DNA_anim_types.h"
struct ThemeWireColor;
Member

It looks like this is defined in DNA_userdef_types.h. I'd be more comfortable just including that instead to make it explicit where ThemeWireColor is coming from. I guess the concern here is bloating build times?

It looks like this is defined in `DNA_userdef_types.h`. I'd be more comfortable just including that instead to make it explicit where `ThemeWireColor` is coming from. I guess the concern here is bloating build times?
nathanvegdahl marked this conversation as resolved
@ -19,3 +26,4 @@
#endif
struct AnimData;
struct BoneCollection;
Member

Same comment as before, about preferring includes of the relevant header(s) to make it explicit where things come from. Although see this in other places as well, it appears this is a common pattern in Blender's code base. So maybe never mind.

Same comment as before, about preferring includes of the relevant header(s) to make it explicit where things come from. Although see this in other places as well, it appears this is a common pattern in Blender's code base. So maybe never mind.
nathanvegdahl marked this conversation as resolved
@ -31,0 +45,4 @@
*/
int8_t palette_index;
uint8_t _pad0[7];
ThemeWireColor custom;
Member

When we were looking through this in person, I noted that we could eliminate this padding by arranging the fields from largest to smallest. However, looking at other DNA structs in this PR, it looks the strategy is to ensure a multiple-of-8-bytes size anyway, which I assume is a general pattern/requirement in DNA (which totally makes sense).

So moving palette_index to the end here wouldn't actually save us any space with these struct members.

When we were looking through this in person, I noted that we could eliminate this padding by arranging the fields from largest to smallest. However, looking at other DNA structs in this PR, it looks the strategy is to ensure a multiple-of-8-bytes size anyway, which I assume is a general pattern/requirement in DNA (which totally makes sense). So moving `palette_index` to the end here wouldn't actually save us any space with these struct members.
Nathan Vegdahl requested changes 2023-08-23 14:55:34 +02:00
Nathan Vegdahl left a comment
Member

While testing, I got a reproducible crash in debug:

SUMMARY: AddressSanitizer: heap-use-after-free /home/guest/Projects/blender/blender/source/blender/animrig/intern/bone_collections.cc:325 in any_bone_collection_visible

The steps are fairly simple. In the provided example blend file: delete a bone in edit mode, leave edit mode, and then ctrl-z undo.

I'll investigate and fix this before landing.

While testing, I got a reproducible crash in debug: > SUMMARY: AddressSanitizer: heap-use-after-free /home/guest/Projects/blender/blender/source/blender/animrig/intern/bone_collections.cc:325 in any_bone_collection_visible The steps are fairly simple. In the provided example blend file: delete a bone in edit mode, leave edit mode, and then ctrl-z undo. I'll investigate and fix this before landing.

can confirm that crash.
So I tried to review this patch but given its size I am sure I missed something. Two things I noticed though

  • when opening a file from 3.6 the groups are still shown in the Outliner. It crashed on me once while trying to edit the name, but so far I wasn't able to reproduce it
  • subdividing a bone retains the collection assignment, while extrusion doesn't. Was that a deliberate choice?
can confirm that crash. So I tried to review this patch but given its size I am sure I missed something. Two things I noticed though * when opening a file from 3.6 the groups are still shown in the Outliner. It crashed on me once while trying to edit the name, but so far I wasn't able to reproduce it * subdividing a bone retains the collection assignment, while extrusion doesn't. Was that a deliberate choice?
Member

Thanks for looking it over! And yeah, it's quite a lot to go through.

when opening a file from 3.6 the groups are still shown in the Outliner. It crashed on me once while trying to edit the name, but so far I wasn't able to reproduce it

Poking around, I'm not able to trigger a crash with that either. If you can figure out a repro, that would be awesome!

As for Bone Group's still being there: I believe the intention is to finish removing Bone Groups in a follow up PR. They also show up under Bone -> Relations in the properties panel.

subdividing a bone retains the collection assignment, while extrusion doesn't. Was that a deliberate choice?

Looks like an oversight to me.

Thanks for looking it over! And yeah, it's quite a lot to go through. > when opening a file from 3.6 the groups are still shown in the Outliner. It crashed on me once while trying to edit the name, but so far I wasn't able to reproduce it Poking around, I'm not able to trigger a crash with that either. If you can figure out a repro, that would be awesome! As for Bone Group's still being there: I believe the intention is to finish removing Bone Groups in a follow up PR. They also show up under `Bone -> Relations` in the properties panel. > subdividing a bone retains the collection assignment, while extrusion doesn't. Was that a deliberate choice? Looks like an oversight to me.

ok so I did a bit more testing
the crash happens for me when deleting a bone collection and trying to undo a bunch of times
crash is in bone_collections.cc/325
so maybe it's the same issue you discovered

and a usability feedback I have that doesn't need to be changed for this PR
calling it "Pose Mode override" instead of just "Pose Bone Color"
I feel like atm the UI is lying to me because it says "Pose Bone Color - Default Color" while it's not actually the default color but the edit mode color

ok so I did a bit more testing the crash happens for me when deleting a bone collection and trying to undo a bunch of times crash is in `bone_collections.cc/325` so maybe it's the same issue you discovered and a usability feedback I have that doesn't need to be changed for this PR calling it "Pose Mode override" instead of just "Pose Bone Color" I feel like atm the UI is lying to me because it says "Pose Bone Color - Default Color" while it's not actually the default color but the edit mode color
First-time contributor

Will the UI be messy if I have like 20 layers and 8 groups?
Or I should wirte my own python script to have a better view?

Will the UI be messy if I have like 20 layers and 8 groups? Or I should wirte my own python script to have a better view?
First-time contributor

The layer panel from cloudrig is too good, I have to mention it.
https://gitlab.com/blender/CloudRig

I wish I cloud have something like the picture when I press M, rather than write my own script.

The layer panel from cloudrig is too good, I have to mention it. [https://gitlab.com/blender/CloudRig](url) I wish I cloud have something like the picture when I press M, rather than write my own script.
Member

@yujiaxin Those are good thoughts, but are questions for future work. Right now we're just working on getting the basic functionality in.

@yujiaxin Those are good thoughts, but are questions for future work. Right now we're just working on getting the basic functionality in.
Nathan Vegdahl force-pushed anim/armature-collections from eef2629628 to 3cdbfd6e9a 2023-08-25 16:48:53 +02:00 Compare
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109976) when ready.

I've been digging into the crashes. And there is odd behavior around the edit mode.

Deleting a bone collection cannot be undone in edit mode. (In fact none of the operators can be undone in edit mode)
Deleting it in edit mode and then going to object mode to undo causes a crash.

As I learned there is a special undo mode for armature edit modes in editarmature_undo.c which doesn't take into account the new collections

I've been digging into the crashes. And there is odd behavior around the edit mode. Deleting a bone collection cannot be undone in edit mode. (In fact none of the operators can be undone in edit mode) Deleting it in edit mode and then going to object mode to undo causes a crash. As I learned there is a special undo mode for armature edit modes in `editarmature_undo.c` which doesn't take into account the new collections
Nathan Vegdahl force-pushed anim/armature-collections from 3cdbfd6e9a to ac648f9e49 2023-08-28 17:00:37 +02:00 Compare
Member

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR109976) when ready.
Nathan Vegdahl force-pushed anim/armature-collections from 69f1ca3904 to c6e026a72f 2023-08-29 12:32:13 +02:00 Compare
Nathan Vegdahl force-pushed anim/armature-collections from c6e026a72f to ab07c48b81 2023-08-29 12:35:12 +02:00 Compare
Member

Okay, so I've figured out what the crashes are, thanks to the investigation from @ChrisLend. The issue is simply that the armature undo code doesn't handle bone collections at all. There are two aspects to this:

  1. The armature undo code is relatively simplistic, just storing copies of the edit bones of an armature. The code didn't get updated to also copy the collection membership ListBase of those edit bones, so the copies just point to the same ListBase as the original edit bones. However, that ListBase gets freed when exiting edit mode, leaving dangling pointers in the edit bone copies stored by the undo system.
  2. The addition and deletion of the bone collections themselves does not get recorded by the armature undo system. This means that they don't get restored if they were removed while in edit mode. I haven't been able to actually trigger any crashes this way, but it seems like this has the potential to lead to crashes due to dangling membership pointers in the edit bones after an undo. Edit: I figured out how to reliably crash from this: first delete a bone, then delete one of the collections that it was a member of, and then undo twice.

Addressing this properly will require some thought, so in the interest of getting the PR landed today, I'm going to just prevent the crash by clearing bone collection membership of the copied undo edit bones. This means that undoing in edit mode will lose collection membership, but undo already isn't working with collections in edit mode, so this seems like a reasonable stop gap.

A proper fix is of course necessary before release, so I'll add it as the top priority task on my TODO list.

Okay, so I've figured out what the crashes are, thanks to the investigation from @ChrisLend. The issue is simply that the armature undo code doesn't handle bone collections *at all*. There are two aspects to this: 1. The armature undo code is relatively simplistic, just storing copies of the edit bones of an armature. The code didn't get updated to also copy the collection membership ListBase of those edit bones, so the copies just point to the same ListBase as the original edit bones. However, that ListBase gets freed when exiting edit mode, leaving dangling pointers in the edit bone copies stored by the undo system. 2. The addition and deletion of the bone collections *themselves* does not get recorded by the armature undo system. This means that they don't get restored if they were removed while in edit mode. I haven't been able to actually trigger any crashes this way, but it seems like this has the potential to lead to crashes due to dangling membership pointers in the edit bones after an undo. Edit: I figured out how to reliably crash from this: first delete a bone, then delete one of the collections that it was a member of, and then undo twice. Addressing this properly will require some thought, so in the interest of getting the PR landed today, I'm going to just prevent the crash by clearing bone collection membership of the copied undo edit bones. This means that undoing in edit mode will lose collection membership, but undo already isn't working with collections in edit mode, so this seems like a reasonable stop gap. A proper fix is of course necessary before release, so I'll add it as the top priority task on my TODO list.
Nathan Vegdahl force-pushed anim/armature-collections from ab07c48b81 to d4af8e7f14 2023-08-29 14:23:44 +02:00 Compare
Nathan Vegdahl approved these changes 2023-08-29 14:29:04 +02:00
Nathan Vegdahl left a comment
Member

All the outstanding issues have been addressed well enough for initial landing. There are still outstanding issues that will need to be addressed after landing. Here are the outstanding issues I'm currently aware of, to be addressed after this lands:

  • Armature undo needs to handle bone collections and memberships.
  • Joining armature objects needs to account for multi-user Armature data blocks. (This was a pre-existing bug, but was made more evident when adding support for bone collections.)
  • The Python API edit_bones.new() shouldn't add the bone to any collection. Done: ab67d410a9
  • Extruding and subdividing bones should add the new bones to the same collection(s) as their source bone. Done: ab67d410a9
  • Add a Python API for reordering bone collections. Done: 830572a1bb
All the outstanding issues have been addressed well enough for initial landing. There are still outstanding issues that will need to be addressed after landing. Here are the outstanding issues I'm currently aware of, to be addressed after this lands: - [ ] [Armature undo needs to handle bone collections and memberships](https://projects.blender.org/blender/blender/issues/111780). - [ ] Joining armature objects needs to account for multi-user Armature data blocks. (This was a pre-existing bug, but was made more evident when adding support for bone collections.) - [x] The Python API `edit_bones.new()` shouldn't add the bone to any collection. Done: ab67d410a90d5d2d07f5c34d3dae197331b41dc8 - [x] Extruding and subdividing bones should add the new bones to the same collection(s) as their source bone. Done: ab67d410a90d5d2d07f5c34d3dae197331b41dc8 - [x] Add a Python API for reordering bone collections. Done: 830572a1bbdb595dcd1cbe5e65909e0ec95cf11e
Nathan Vegdahl merged commit fc8c8da885 into main 2023-08-29 14:31:31 +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 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#109976
No description provided.