Mesh: Replace auto smooth with node group #108014

Merged
Hans Goudey merged 149 commits from HooglyBoogly/blender:refactor-mesh-corner-normals-lazy into main 2023-10-20 16:54:20 +02:00
Member

Design task: #93551

This PR replaces the auto smooth option with a geometry nodes modifier
that sets the sharp edge attribute. This solves a fair number of long-standing
problems related to auto smooth, simplifies the process of normal computation,
and allows Blender to automatically choose between face, vertex, and face corner
normals based on the sharp edge and face attributes.

Versioning adds a geometry node group to objects with meshes that had auto-
smooth enabled. The modifier can be applied, which also improves performance.

Auto smooth is now unnecessary to get a combination of sharp and smooth
edges. In general workflows are changed a bit. Separate procedural and destructive
workflows are available. Custom normals can be used immediately without turning
on the removed auto smooth option.

Procedural

image

The node group asset "Smooth by Angle" is the main way to set sharp normals
based on the edge angle. It can be accessed directly in the add modifier menu.
Of course the modifier can be reordered, muted, or applied like any other, or
changed internally like any geometry nodes modifier.

Note: Unfortunately the node group asset can't be published by this PR, this makes testing more difficult, it is attached below

Destructive
Often the sharp edges don't need to be dynamic. This can give better performance
since edge angles don't need to be recalculated. In edit mode the two operators
"Select Sharp Edges" and "Mark Sharp" can be used. In other modes, the
"Shade Smooth by Angle" controls the edge sharpness directly.

Breaking API Changes

  • use_auto_smooth is removed. Face corner normals are now used automatically
    if there are mixed smooth vs. not smooth tags. Meshes now always use custom
    normals if they exist.
    • In Cycles, the lack of the separate auto smooth state makes normals look
      triangulated when all faces are shaded smooth.
  • auto_smooth_angle is removed. Replaced by a modifier (or operator) controlling
    the sharp edge attribute. This means the mesh itself (without an object) doesn't know
    anything about automatically smoothing by angle anymore.
  • create_normals_split, calc_normals_split, and free_normals_split are removed,
    and are replaced by the simpler Mesh.corner_normals collection property. Since it gives
    access to the normals cache, it is automatically updated when relevant data changes.

Addons are updated here: blender/blender-addons#104609

Tests

  • geo_node_curves_test_deform_curves_on_surface has slightly different results because face corner normals are used instead of interpolated vertex normals.
  • bf_wavefront_obj_tests has different export results for one file which mixed sharp and smooth faces without turning on auto smooth.
  • cycles_mesh_cpu has one object which is completely flat shaded. Previously every edge was split before rendering, now it looks triangulated.
Design task: #93551 This PR replaces the auto smooth option with a geometry nodes modifier that sets the sharp edge attribute. This solves a fair number of long-standing problems related to auto smooth, simplifies the process of normal computation, and allows Blender to automatically choose between face, vertex, and face corner normals based on the sharp edge and face attributes. Versioning adds a geometry node group to objects with meshes that had auto- smooth enabled. The modifier can be applied, which also improves performance. Auto smooth is now unnecessary to get a combination of sharp and smooth edges. In general workflows are changed a bit. Separate procedural and destructive workflows are available. Custom normals can be used immediately without turning on the removed auto smooth option. **Procedural** ![image](/attachments/6d3aa6eb-d4a5-47bd-8d84-fb2584f9ffd0) The node group asset "Smooth by Angle" is the main way to set sharp normals based on the edge angle. It can be accessed directly in the add modifier menu. Of course the modifier can be reordered, muted, or applied like any other, or changed internally like any geometry nodes modifier. _Note: Unfortunately the node group asset can't be published by this PR, this makes testing more difficult, it is attached below_ **Destructive** Often the sharp edges don't need to be dynamic. This can give better performance since edge angles don't need to be recalculated. In edit mode the two operators "Select Sharp Edges" and "Mark Sharp" can be used. In other modes, the "Shade Smooth by Angle" controls the edge sharpness directly. ### Breaking API Changes - `use_auto_smooth` is removed. Face corner normals are now used automatically if there are mixed smooth vs. not smooth tags. Meshes now always use custom normals if they exist. - In Cycles, the lack of the separate auto smooth state makes normals look triangulated when all faces are shaded smooth. - `auto_smooth_angle` is removed. Replaced by a modifier (or operator) controlling the sharp edge attribute. This means the mesh itself (without an object) doesn't know anything about automatically smoothing by angle anymore. - `create_normals_split`, `calc_normals_split`, and `free_normals_split` are removed, and are replaced by the simpler `Mesh.corner_normals` collection property. Since it gives access to the normals cache, it is automatically updated when relevant data changes. Addons are updated here: https://projects.blender.org/blender/blender-addons/pulls/104609 ### Tests - `geo_node_curves_test_deform_curves_on_surface` has slightly different results because face corner normals are used instead of interpolated vertex normals. - `bf_wavefront_obj_tests` has different export results for one file which mixed sharp and smooth faces without turning on auto smooth. - `cycles_mesh_cpu` has one object which is completely flat shaded. Previously every edge was split before rendering, now it looks triangulated.
Hans Goudey added 42 commits 2023-05-17 16:41:55 +02:00
f44e13579a Progress removing auto smooth
This needs to wait until 4.0
55dd8b2db5 Progress
Need the normals shared cache changes to move forward here
Hans Goudey added this to the Nodes & Physics project 2023-05-17 21:13:46 +02:00
Hans Goudey added this to the 4.0 milestone 2023-05-17 21:13:55 +02:00
Hans Goudey added 2 commits 2023-05-17 22:39:57 +02:00
Hans Goudey added 3 commits 2023-05-17 23:11:43 +02:00
Hans Goudey added 1 commit 2023-05-18 00:53:59 +02:00

A good number of our shipped addons make use of all the APIs removed. They'll have to be updated too.

A good number of our shipped addons make use of all the APIs removed. They'll have to be updated too.
Hans Goudey added 2 commits 2023-05-18 15:45:01 +02:00
Author
Member

Right, I uploaded my changes to addons here: blender/blender-addons#104609

Right, I uploaded my changes to addons here: https://projects.blender.org/blender/blender-addons/pulls/104609
Hans Goudey added 1 commit 2023-05-18 22:15:50 +02:00
Hans Goudey added 1 commit 2023-05-19 20:18:52 +02:00
First-time contributor

Is it planned to use autosmooth as a modifier?

Is it planned to use autosmooth as a modifier?
Hans Goudey added 4 commits 2023-05-24 01:25:49 +02:00
Hans Goudey added 1 commit 2023-05-24 01:29:05 +02:00
Hans Goudey added 2 commits 2023-05-24 15:45:52 +02:00
Hans Goudey added 2 commits 2023-06-03 03:43:01 +02:00
Hans Goudey added 3 commits 2023-06-07 17:20:29 +02:00
Hans Goudey added 1 commit 2023-06-07 20:30:48 +02:00
Hans Goudey added 1 commit 2023-06-13 21:32:58 +02:00
Hans Goudey added 3 commits 2023-06-16 14:34:55 +02:00
Hans Goudey changed title from WIP: Mesh: Replace auto smooth with node group to Mesh: Replace auto smooth with node group 2023-06-21 22:02:14 +02:00
Hans Goudey added 6 commits 2023-06-21 22:02:40 +02:00
Hans Goudey added 1 commit 2023-06-26 22:10:25 +02:00
Hans Goudey added 1 commit 2023-07-02 19:08:01 +02:00
Hans Goudey added 1 commit 2023-07-25 22:30:24 +02:00
Hans Goudey added 2 commits 2023-07-26 22:26:11 +02:00
Hans Goudey added 1 commit 2023-07-26 22:29:46 +02:00
Hans Goudey added 2 commits 2023-08-04 16:11:29 +02:00
Bastien Montagne requested changes 2023-08-15 17:01:40 +02:00
@ -59,0 +170,4 @@
void do_versions_after_linking_400(FileData * /*fd*/, Main *bmain)
{
if (!MAIN_VERSION_FILE_ATLEAST(bmain, 400, 14)) {
version_mesh_objects_replace_auto_smooth(*bmain);

Creating IDs in versioning code is forbidden. Until a better system (more generic) is implemented, a specific call needs to be added after all versioning is done, see e.g. the call to BKE_lib_override_library_main_proxy_convert in setup_app_data()

Creating IDs in versioning code is forbidden. Until a better system (more generic) is implemented, a specific call needs to be added after all versioning is done, see e.g. the call to `BKE_lib_override_library_main_proxy_convert` in `setup_app_data()`
Hans Goudey added 1 commit 2023-08-20 02:50:14 +02:00
Hans Goudey added 3 commits 2023-08-21 13:54:55 +02:00
Hans Goudey added 1 commit 2023-08-21 17:38:52 +02:00
Iliya Katushenock reviewed 2023-08-21 17:51:48 +02:00
@ -2078,0 +2197,4 @@
BLI_addtail(&object->modifiers, md);
}
md->settings.properties = bke::idprop::create_group("Nodes Modifier Settings").release();

MOD_nodes_update_interface(object, md);?

`MOD_nodes_update_interface(object, md);`?
Author
Member

Maybe. I'd rather not bring in another "MOD" include to the blenkernel though, theoretically the dependency is supposed to be in the other direction. I'm investigating just importing the asset here anyway, that might simplify things.

Maybe. I'd rather not bring in another "MOD" include to the blenkernel though, theoretically the dependency is supposed to be in the other direction. I'm investigating just importing the asset here anyway, that might simplify things.
Hans Goudey added 3 commits 2023-08-25 23:20:31 +02:00
Hans Goudey added 2 commits 2023-08-26 03:51:08 +02:00
Hans Goudey added 2 commits 2023-08-29 13:59:54 +02:00
Hans Goudey added 1 commit 2023-08-30 06:05:36 +02:00
Hans Goudey added 3 commits 2023-08-30 15:22:23 +02:00
Hans Goudey added 5 commits 2023-08-30 20:03:31 +02:00
Hans Goudey added 1 commit 2023-08-30 20:13:20 +02:00
buildbot/vexp-code-patch-coordinator Build done. Details
8baa21e981
Fix versioning after change in main
Hans Goudey requested review from Campbell Barton 2023-08-30 20:14:24 +02:00
Hans Goudey requested review from Jacques Lucke 2023-08-30 20:14:25 +02:00
Author
Member

@blender-bot build

@blender-bot build
Hans Goudey added 3 commits 2023-09-01 14:40:53 +02:00
Hans Goudey requested review from Bastien Montagne 2023-09-01 14:53:17 +02:00
Hans Goudey added 1 commit 2023-09-04 23:41:53 +02:00
Campbell Barton approved these changes 2023-09-05 08:38:55 +02:00
Campbell Barton left a comment
Owner

While I didn't do a detailed review, overall this seems reasonable, only noted minor things in-line.

While I didn't do a detailed review, overall this seems reasonable, only noted minor things in-line.
@ -2819,3 +2819,2 @@
layout.operator("object.shade_smooth")
layout.operator("object.shade_smooth", text="Shade Auto Smooth").use_auto_smooth = True
layout.operator("object.shade_flat", text="Shade Flat")
layout.operator("object.shade_smooth_by_angle")

Shouldn't the by_angle operator only be shown for mesh objects? (the operator looks only to deal with meshes).

Shouldn't the `by_angle` operator only be shown for mesh objects? (the operator looks only to deal with meshes).
HooglyBoogly marked this conversation as resolved
@ -502,0 +470,4 @@
if (domain == ATTR_DOMAIN_FACE) {
mesh_final->face_normals();
}
else if (domain == ATTR_DOMAIN_FACE) {

Shouldn't this be ATTR_DOMAIN_VERT ?

Shouldn't this be `ATTR_DOMAIN_VERT` ?
HooglyBoogly marked this conversation as resolved
@ -783,0 +849,4 @@
}
}
static void build_edge_to_loop_map(const OffsetIndices<int> faces,

suggestion: this reads like a generic map generation function, it could include that this is for calculating sharp edges.

*suggestion*: this reads like a generic map generation function, it could include that this is for calculating sharp edges.
HooglyBoogly marked this conversation as resolved
@ -425,3 +441,1 @@
ME_AUTOSMOOTH = 1 << 5,
ME_FLAG_UNUSED_6 = 1 << 6, /* cleared */
ME_FLAG_UNUSED_7 = 1 << 7, /* cleared */
ME_AUTOSMOOTH = 1 << 5, /* deprecated */

Could call this: ME_AUTOSMOOTH_LEGACY

Could also rename Mesh::smoothresh -> Mesh::smoothresh_legacy.

Could call this: `ME_AUTOSMOOTH_LEGACY` Could also rename `Mesh::smoothresh` -> `Mesh::smoothresh_legacy`.
HooglyBoogly marked this conversation as resolved
Hans Goudey added 5 commits 2023-09-05 14:12:13 +02:00
Jacques Lucke requested changes 2023-09-05 21:46:40 +02:00
Jacques Lucke left a comment
Member

Very nice simplification overall. Just have a few smaller comments.
It would be nice if the node group could already be updated so that it shows in the Add Modifier menu, which is kind of essential before this can be committed.

Very nice simplification overall. Just have a few smaller comments. It would be nice if the node group could already be updated so that it shows in the Add Modifier menu, which is kind of essential before this can be committed.
@ -499,3 +469,1 @@
* (i.e. even if auto-smooth is disabled). */
if (CustomData_has_layer(&mesh_final->loop_data, CD_NORMAL)) {
CustomData_free_layers(&mesh_final->loop_data, CD_NORMAL, mesh_final->totloop);
/* Eager normal calculation can potentially be faster than deferring the to drawing code. */
Member

missing word after the

missing word after `the`
HooglyBoogly marked this conversation as resolved
@ -2075,0 +2110,4 @@
bNode *store_node = nodeAddNode(nullptr, node_tree, "GeometryNodeStoreNamedAttribute");
store_node->locx = 40.0f;
store_node->locy = 40.0f;
static_cast<NodeGeometryStoreNamedAttribute *>(store_node->storage)->data_type = CD_PROP_BOOL;
Member

Don't use more casts than necessary.

Don't use more casts than necessary.
HooglyBoogly marked this conversation as resolved
@ -342,1 +417,4 @@
}
BM_mesh_elem_table_ensure(bm, BM_FACE);
const VArrayImpl_For_SharpFace sharp_faces({bm->ftable, bm->totface});
Member

It seems like you could potentially use VArray::ForDerivedSpan here.

It seems like you could potentially use `VArray::ForDerivedSpan` here.
HooglyBoogly marked this conversation as resolved
@ -362,0 +366,4 @@
* face corner normals, since there is a 2-4x performance cost increase for each more complex
* domain.
*/
int normal_domain_all_info() const;
Member

I wonder if we could call this normals_domain. I found "all info" more confusing than useful at first.

I wonder if we could call this `normals_domain`. I found "all info" more confusing than useful at first.
HooglyBoogly marked this conversation as resolved
@ -2249,3 +2214,2 @@
RNA_def_property_range(prop, -1.0f, 1.0f);
RNA_def_property_float_funcs(
prop, "rna_MeshLoop_normal_get", "rna_MeshLoop_normal_set", nullptr);
RNA_def_property_float_funcs(prop, "rna_MeshLoop_normal_get", nullptr, nullptr);
Member

Think the description below has to be updated.

Think the description below has to be updated.
HooglyBoogly marked this conversation as resolved
Hans Goudey added 5 commits 2023-09-05 23:20:18 +02:00
Hans Goudey added 1 commit 2023-09-05 23:21:47 +02:00
Hans Goudey added 1 commit 2023-09-06 02:45:03 +02:00
Jacques Lucke reviewed 2023-09-06 09:36:31 +02:00
@ -337,1 +340,3 @@
void mesh_render_data_update_normals(MeshRenderData &mr, const eMRDataType data_flag)
static bool bm_edge_is_sharp(const BMEdge *const &edge)
{
return BM_elem_flag_test(edge, BM_ELEM_SMOOTH);
Member

Looks like there is a "not" missing. Same below.

Looks like there is a "not" missing. Same below.
HooglyBoogly marked this conversation as resolved
Hans Goudey added 4 commits 2023-09-06 18:18:41 +02:00
Hans Goudey added 1 commit 2023-09-06 21:24:04 +02:00
Author
Member

I have to resolve how "all flat" meshes are dealt with by Cycles, I've asked about that in blender.chat. But those changes should be local to Cycles, and other than that changes mentioned in comments are resolved.

I have to resolve how "all flat" meshes are dealt with by Cycles, I've asked about that in blender.chat. But those changes should be local to Cycles, and other than that changes mentioned in comments are resolved.
Hans Goudey requested review from Jacques Lucke 2023-09-06 21:29:39 +02:00
Jacques Lucke approved these changes 2023-09-07 14:28:50 +02:00
Jacques Lucke left a comment
Member

This patch looks good to me. I find the name of the Smooth by Angle node group a bit confusing, because it's not actually smoothing things if everything was flat. I'm contemplating whether the node group should just be called Auto Smooth, because it's design is based on that feature. If we build a Smooth by Angle node from scratch, it would probably have slightly different behavior, or a more obvious name.

This patch looks good to me. I find the name of the Smooth by Angle node group a bit confusing, because it's not actually smoothing things if everything was flat. I'm contemplating whether the node group should just be called Auto Smooth, because it's design is based on that feature. If we build a Smooth by Angle node from scratch, it would probably have slightly different behavior, or a more obvious name.
Hans Goudey modified the milestone from 4.0 to 4.1 2023-09-07 23:16:12 +02:00
Hans Goudey added 2 commits 2023-09-08 00:17:10 +02:00
Hans Goudey added 2 commits 2023-09-11 20:08:34 +02:00
Member

Hi @HooglyBoogly!

I tried out the geometry nodes setup smooth by angle but it smoothes all edges instead of taking angle into concideration. Perhaps there is code in this PR that I would need to test it? (See attached video)

Blender Version
Broken: version: 4.0.0 Alpha,
branch: main,
commit date: 2023-09-10 22:17,
hash: fca8df9415b1

Other thoughts:
The modifers WeightedNormal and NormalEdit uses the property auto smooth but I can see that you have changed he code in those modifiers. Just want to double check since I'm not familiar with c++.

Hi @HooglyBoogly! I tried out the geometry nodes setup `smooth by angle` but it smoothes all edges instead of taking angle into concideration. Perhaps there is code in this PR that I would need to test it? (See attached video) **Blender Version** Broken: version: 4.0.0 Alpha, branch: main, commit date: 2023-09-10 22:17, hash: `fca8df9415b1` Other thoughts: The modifers `WeightedNormal` and `NormalEdit` uses the property `auto smooth` but I can see that you have changed he code in those modifiers. Just want to double check since I'm not familiar with c++.
Member

After using auto smooth in the object data as Hans suggested I got the geometry node smooth by angle to work.

Posting a conversation we had on blender.chat for visibility

Hans Goudey @HooglyBoogly00:12
One option that might be useful for the modifier is something like "Replace" which would make it ignore the existing sharpness and just set everything by angle. But maybe there's other ways to expose that, or something else is more useful

DanielBystedt00:22
That might be useful. I think I would prefer the name ignore sharp edges though.

Since we currently do not have the option to store edge groups ( like vertex groups), it is sometimes useful to use sharp_edge and crease as a way of processing specific edges in geometry groups. In those cases it could be useful to ignore sharp edges in the node smooth by angle

Hans Goudey @HooglyBoogly00:23
Heh, right, that's painful to read every time someone says it. Though we sort of can do that now, with node group operators 🙂 (or half-way with the "Set Attribute" operator)

Ignoring sharp faces might be included in that too? Basically I'm thinking it might be nice if "Add Cylinder" "Smooth by Angle" worked to give the two rings of sharpness

DanielBystedt00:24
Sounds great to me 🙂

After using `auto smooth` in the object data as Hans suggested I got the geometry node `smooth by angle` to work. Posting a conversation we had on blender.chat for visibility Hans Goudey @HooglyBoogly00:12 One option that might be useful for the modifier is something like "Replace" which would make it ignore the existing sharpness and just set everything by angle. But maybe there's other ways to expose that, or something else is more useful DanielBystedt00:22 That might be useful. I think I would prefer the name `ignore sharp edges though`. Since we currently do not have the option to store edge groups ( like vertex groups), it is sometimes useful to use sharp_edge and crease as a way of processing specific edges in geometry groups. In those cases it could be useful to ignore sharp edges in the node smooth by angle Hans Goudey @HooglyBoogly00:23 Heh, right, that's painful to read every time someone says it. Though we sort of can do that now, with node group operators 🙂 (or half-way with the "Set Attribute" operator) Ignoring sharp faces might be included in that too? Basically I'm thinking it might be nice if "Add Cylinder" "Smooth by Angle" worked to give the two rings of sharpness DanielBystedt00:24 Sounds great to me 🙂
Hans Goudey added 1 commit 2023-09-21 22:22:09 +02:00
Hans Goudey added 1 commit 2023-09-28 14:04:08 +02:00
Hans Goudey added 3 commits 2023-09-28 23:32:47 +02:00
Hans Goudey added 3 commits 2023-09-29 15:45:30 +02:00
Hans Goudey added 2 commits 2023-09-29 20:06:30 +02:00
7dadb241f3 Remove unhelpful and slow eager normal calculation
Calculating normals early (especially corner normals) turns out to be
slower here, and prevents optimizations like the renderer only
requesting the normals it needs, or only requesting normals based
on some scene simplify option that doesn't affect object evaluation.
It adds significant complexity too.`calc_loop_normals` was also set
but not used.
Hans Goudey added 1 commit 2023-10-01 22:31:43 +02:00
Hans Goudey added 1 commit 2023-10-06 09:41:34 +02:00
Hans Goudey added 2 commits 2023-10-19 00:20:26 +02:00
Hans Goudey added 3 commits 2023-10-19 17:56:53 +02:00
Hans Goudey added 1 commit 2023-10-20 14:59:23 +02:00
Author
Member

@blender-bot build

@blender-bot build
Hans Goudey added 1 commit 2023-10-20 15:19:32 +02:00
buildbot/vexp-code-patch-coordinator Build done. Details
bc4dd268c1
Attempt to fix windows build error
Author
Member

@blender-bot build windows

@blender-bot build windows
Author
Member

@blender-bot build windows

@blender-bot build windows
Author
Member

The test failures were the expected ones, and the Cycles principled test is also failing in main

The test failures were the expected ones, and the Cycles principled test is also failing in main
Hans Goudey merged commit 89e3ba4e25 into main 2023-10-20 16:54:20 +02:00
Hans Goudey deleted branch refactor-mesh-corner-normals-lazy 2023-10-20 16:54:22 +02:00
First-time contributor

DanielBystedt00:22
That might be useful. I think I would prefer the name ignore sharp edges though.

Ignore Sharp Edges is very long for the default interface.
I propose Keep Sharp Edges with True by default:

Sharp Edges.png

> DanielBystedt00:22 > That might be useful. I think I would prefer the name `ignore sharp edges though`. `Ignore Sharp Edges` is very long for the default interface. I propose `Keep Sharp Edges` with `True` by default: ![Sharp Edges.png](/attachments/9a7a2fc9-c5e9-49f2-a034-b4cc23f8d575)
First-time contributor

DanielBystedt00:22
That might be useful. I think I would prefer the name ignore sharp edges though.

Ignore Sharp Edges is very long for the default interface.
I propose Keep Sharp Edges with True by default:

Sharp Edges.png

I agree with this as well, seems more clean and I also think its slightly easier to understand what it does. Also it feels a bit weird that output attribrutes and internal dependencies are aviable since they are useles in the context of the modifer and takes a lot of space.

> > DanielBystedt00:22 > > That might be useful. I think I would prefer the name `ignore sharp edges though`. > > `Ignore Sharp Edges` is very long for the default interface. > I propose `Keep Sharp Edges` with `True` by default: > > ![Sharp Edges.png](/attachments/9a7a2fc9-c5e9-49f2-a034-b4cc23f8d575) I agree with this as well, seems more clean and I also think its slightly easier to understand what it does. Also it feels a bit weird that output attribrutes and internal dependencies are aviable since they are useles in the context of the modifer and takes a lot of space.
First-time contributor

Also, it woulde be cool if theres where an option for overiden custom normals, currently I feel like this gives an unexpected results. Despit the smooth by angle being at the bottom of the modifer stack it still does not sharpen edges at 90 degress.

image

Also, it woulde be cool if theres where an option for overiden custom normals, currently I feel like this gives an unexpected results. Despit the smooth by angle being at the bottom of the modifer stack it still does not sharpen edges at 90 degress. ![image](/attachments/fd1d1d00-a0b0-4d42-b311-cdd312463fca)
Contributor

Is there going to be devtalk feedback topic on that? There are massive regressions both in performance and UX

Is there going to be devtalk feedback topic on that? There are massive regressions both in performance and UX
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
11 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#108014
No description provided.