Curves: change default font offset from 1.0 to 0.0 #105182

Merged
Hans Goudey merged 1 commits from pioverfour/blender:dp_default_font_offset into main 2023-03-06 14:31:07 +01:00
Member

Currently, curves have a default offset of 1.0, while the initial (and
expected) value is 0.0. When resetting this value to its default, the
curve is now modified unexpectedly. This is most noticeable with text
objects: when resetting the offset of a new text, it will look very
broken.

Internally the value is stored with an offset of 1.0, with custom
setter and getter adding and subtracting 1.0 respectively. To give
this property a default of 0.0, we also need to add 1.0 to the initial
value upon curve creation.


Image by @Harley illustrating the issue of resetting the offset to 1:
TextOffset.png

Currently, curves have a default offset of 1.0, while the initial (and expected) value is 0.0. When resetting this value to its default, the curve is now modified unexpectedly. This is most noticeable with text objects: when resetting the offset of a new text, it will look very broken. Internally the value is stored with an offset of 1.0, with custom setter and getter adding and subtracting 1.0 respectively. To give this property a default of 0.0, we also need to add 1.0 to the initial value upon curve creation. ----- Image by @Harley illustrating the issue of resetting the offset to 1: ![TextOffset.png](/attachments/5ea21756-1694-49a3-9461-03de0b9d53b3)

I think I've seen discussion of this. And there was a reason to consider 1.0 correct ... but I don’t remember the details

I think I've seen discussion of this. And there was a reason to consider 1.0 correct ... but I don’t remember the details
Author
Member

I think I've seen discussion of this. And there was a reason to consider 1.0 correct ... but I don’t remember the details

Oh ok, I’ll try to dig.

> I think I've seen discussion of this. And there was a reason to consider 1.0 correct ... but I don’t remember the details Oh ok, I’ll try to dig.
Jeroen Bakker added a new dependency 2023-02-24 16:24:44 +01:00
Jeroen Bakker removed a dependency 2023-02-24 16:24:49 +01:00
Author
Member

@mod_moder The only thing I could find was issue #90819, which seems to concur that this is not the proper behaviour. A blame didn’t give much info, the original commit 9a076dd95a didn’t state any rationale.

I’ll leave this open for discussion but I really don’t see what the reason could be.

@mod_moder The only thing I could find was issue #90819, which seems to concur that this is not the proper behaviour. A blame didn’t give much info, the original commit 9a076dd95a didn’t state any rationale. I’ll leave this open for discussion but I really don’t see what the reason could be.
Harley Acheson requested review from Hans Goudey 2023-02-25 15:56:20 +01:00
Member

This PR looks correct. This property uses 0.0 as default since this is an amount to move the geometry away from its original location parallel to its normals.

When you add a new text object, the following shows the change when modifiying that value from 0 to 1:

TextOffset.png

There might be some complication because this used to be called "width" before a refactor.

If you add a new "Bezier Circle" for example, it starts with an initial offset value of -1. But if you change the "Extrude" value your circle with 1m radius turns into a vertical pole of 0 radius. This is because of the offset value. Change that to 0 and see that you get a cylinder of your expected width. Change offset to 1.0 and your cyclinder is now twice as big as expected.

This PR looks correct. This property uses 0.0 as default since this is an amount to move the geometry away from its original location parallel to its normals. When you add a new text object, the following shows the change when modifiying that value from 0 to 1: ![TextOffset.png](/attachments/5ea21756-1694-49a3-9461-03de0b9d53b3) There might be some complication because this used to be called "width" before a [refactor](https://projects.blender.org/blender/blender/commit/60fa80de0b2c7138fc86b8b688f22a9d2623e8ed). If you add a new "Bezier Circle" for example, it starts with an initial offset value of -1. But if you change the "Extrude" value your circle with 1m radius turns into a vertical pole of 0 radius. This is because of the offset value. Change that to 0 and see that you get a cylinder of your expected width. Change offset to 1.0 and your cyclinder is now twice as big as expected.
Member

@pioverfour

You should edit your original (first) comment and include some more details on exactly what you are proposing to change (the value you get when you "Reset to Default Value" the geometry "offset" value for text and curves) and why this change is needed. Include captures if not not very clear. You want to make it as easy as possible to understand and review without having to dig, explore, and test ourselves. The following explains what is requested:

https://wiki.blender.org/wiki/Process/Contributing_Code#Ingredients_of_a_Pull_Request

@pioverfour You should edit your original (first) comment and include some more details on exactly what you are proposing to change (the value you get when you "Reset to Default Value" the geometry "offset" value for text and curves) and why this change is needed. Include captures if not not very clear. You want to make it as easy as possible to understand and review without having to dig, explore, and test ourselves. The following explains what is requested: https://wiki.blender.org/wiki/Process/Contributing_Code#Ingredients_of_a_Pull_Request
Author
Member

If you add a new "Bezier Circle" for example, it starts with an initial offset value of -1. But if you change the "Extrude" value your circle with 1m radius turns into a vertical pole of 0 radius. This is because of the offset value. Change that to 0 and see that you get a cylinder of your expected width. Change offset to 1.0 and your cyclinder is now twice as big as expected.

Wait actually, I don’t know how I didn’t realise this but newly added text objects have the same issue with this change: the “default” offset is 0.0, but the one applied to new objects is -1.0, make new text objects look broken—and other curves too.

Perhaps this was the issue discussed?

I’ll try to find a better fix.

> If you add a new "Bezier Circle" for example, it starts with an initial offset value of -1. But if you change the "Extrude" value your circle with 1m radius turns into a vertical pole of 0 radius. This is because of the offset value. Change that to 0 and see that you get a cylinder of your expected width. Change offset to 1.0 and your cyclinder is now twice as big as expected. Wait actually, I don’t know how I didn’t realise this but newly added text objects have the same issue with this change: the “default” offset is 0.0, but the one applied to new objects is -1.0, make new text objects look broken—and other curves too. Perhaps this was the issue discussed? I’ll try to find a better fix.
Damien Picard changed title from Font: change default font offset from 1.0 to 0.0 to WIP: Font: change default font offset from 1.0 to 0.0 2023-02-25 16:26:58 +01:00
Member

Ah yes, I see that this change breaks the initial values for both text and curves. Thanks for changing this to "WIP" as I am now unable to remove Hans as reviewer (known gitea issue).

Ah yes, I see that this change breaks the **initial** values for both text and curves. Thanks for changing this to "WIP" as I am now unable to remove Hans as reviewer (known gitea issue).
Member

I would guess that your patch should look something like the following. But you'd have to think it through, test thoroughly of course.

diff --git a/source/blender/blenkernel/intern/displist.cc b/source/blender/blenkernel/intern/displist.cc
index 49a2861afae..9be280afaba 100644
--- a/source/blender/blenkernel/intern/displist.cc
+++ b/source/blender/blenkernel/intern/displist.cc
@@ -1136,15 +1136,15 @@ static GeometrySet evaluate_curve_type_object(Depsgraph *depsgraph,
 
   /* If curve has no bevel will return nothing */
   ListBase dlbev = BKE_curve_bevel_make(cu);
 
   /* no bevel or extrude, and no width correction? */
-  if (BLI_listbase_is_empty(&dlbev) && cu->offset == 1.0f) {
+  if (BLI_listbase_is_empty(&dlbev) && cu->offset == 0.0f) {
     curve_to_displist(cu, deformed_nurbs, for_render, r_dispbase);
   }
   else {
-    const float widfac = cu->offset - 1.0f;
+    const float widfac = cu->offset;
 
     const BevList *bl = (BevList *)ob->runtime.curve_cache->bev.first;
     const Nurb *nu = (Nurb *)deformed_nurbs->first;
     for (; bl && nu; bl = bl->next, nu = nu->next) {
       float *data;
diff --git a/source/blender/makesdna/DNA_curve_defaults.h b/source/blender/makesdna/DNA_curve_defaults.h
index 57c06cbb9f7..dfe6cab425f 100644
--- a/source/blender/makesdna/DNA_curve_defaults.h
+++ b/source/blender/makesdna/DNA_curve_defaults.h
@@ -18,11 +18,11 @@
     .texspace_size = {1, 1, 1}, \
     .flag = CU_DEFORM_BOUNDS_OFF | CU_PATH_RADIUS, \
     .pathlen = 100, \
     .resolu = 12, \
     .resolv = 12, \
-    .offset = 1.0, \
+    .offset = 0.0, \
     .wordspace = 1.0, \
     .spacing = 1.0f, \
     .linedist = 1.0, \
     .fsize = 1.0, \
     .ulheight = 0.05, \
diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c
index ab58f9ae884..8e13ba802c1 100644
--- a/source/blender/makesrna/intern/rna_curve.c
+++ b/source/blender/makesrna/intern/rna_curve.c
@@ -547,22 +547,10 @@ static void rna_Curve_resolution_v_update_data(Main *bmain, Scene *scene, Pointe
   }
 
   rna_Curve_update_data(bmain, scene, ptr);
 }
 
-static float rna_Curve_offset_get(PointerRNA *ptr)
-{
-  Curve *cu = (Curve *)ptr->owner_id;
-  return cu->offset - 1.0f;
-}
-
-static void rna_Curve_offset_set(PointerRNA *ptr, float value)
-{
-  Curve *cu = (Curve *)ptr->owner_id;
-  cu->offset = 1.0f + value;
-}
-
 static int rna_Curve_body_length(PointerRNA *ptr);
 static void rna_Curve_body_get(PointerRNA *ptr, char *value)
 {
   Curve *cu = (Curve *)ptr->owner_id;
   BLI_strncpy(value, cu->str, rna_Curve_body_length(ptr) + 1);
@@ -1639,11 +1627,10 @@ static void rna_def_curve(BlenderRNA *brna)
   RNA_def_property_update(prop, 0, "rna_Curve_bevel_resolution_update");
 
   prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE | PROP_UNIT_LENGTH);
   RNA_def_property_float_sdna(prop, NULL, "offset");
   RNA_def_property_ui_range(prop, -1.0, 1.0, 0.1, 3);
-  RNA_def_property_float_funcs(prop, "rna_Curve_offset_get", "rna_Curve_offset_set", NULL);
   RNA_def_property_ui_text(prop, "Offset", "Distance to move the curve parallel to its normals");
   RNA_def_property_update(prop, 0, "rna_Curve_update_data");
 
   prop = RNA_def_property(srna, "extrude", PROP_FLOAT, PROP_NONE | PROP_UNIT_LENGTH);
   RNA_def_property_float_sdna(prop, NULL, "extrude");

This seems to create text and curves correctly initially, the offset value changing as expected, and the default value resetting properly.

I would guess that your patch should look something like the following. But you'd have to think it through, test thoroughly of course. ``` diff --git a/source/blender/blenkernel/intern/displist.cc b/source/blender/blenkernel/intern/displist.cc index 49a2861afae..9be280afaba 100644 --- a/source/blender/blenkernel/intern/displist.cc +++ b/source/blender/blenkernel/intern/displist.cc @@ -1136,15 +1136,15 @@ static GeometrySet evaluate_curve_type_object(Depsgraph *depsgraph, /* If curve has no bevel will return nothing */ ListBase dlbev = BKE_curve_bevel_make(cu); /* no bevel or extrude, and no width correction? */ - if (BLI_listbase_is_empty(&dlbev) && cu->offset == 1.0f) { + if (BLI_listbase_is_empty(&dlbev) && cu->offset == 0.0f) { curve_to_displist(cu, deformed_nurbs, for_render, r_dispbase); } else { - const float widfac = cu->offset - 1.0f; + const float widfac = cu->offset; const BevList *bl = (BevList *)ob->runtime.curve_cache->bev.first; const Nurb *nu = (Nurb *)deformed_nurbs->first; for (; bl && nu; bl = bl->next, nu = nu->next) { float *data; diff --git a/source/blender/makesdna/DNA_curve_defaults.h b/source/blender/makesdna/DNA_curve_defaults.h index 57c06cbb9f7..dfe6cab425f 100644 --- a/source/blender/makesdna/DNA_curve_defaults.h +++ b/source/blender/makesdna/DNA_curve_defaults.h @@ -18,11 +18,11 @@ .texspace_size = {1, 1, 1}, \ .flag = CU_DEFORM_BOUNDS_OFF | CU_PATH_RADIUS, \ .pathlen = 100, \ .resolu = 12, \ .resolv = 12, \ - .offset = 1.0, \ + .offset = 0.0, \ .wordspace = 1.0, \ .spacing = 1.0f, \ .linedist = 1.0, \ .fsize = 1.0, \ .ulheight = 0.05, \ diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index ab58f9ae884..8e13ba802c1 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -547,22 +547,10 @@ static void rna_Curve_resolution_v_update_data(Main *bmain, Scene *scene, Pointe } rna_Curve_update_data(bmain, scene, ptr); } -static float rna_Curve_offset_get(PointerRNA *ptr) -{ - Curve *cu = (Curve *)ptr->owner_id; - return cu->offset - 1.0f; -} - -static void rna_Curve_offset_set(PointerRNA *ptr, float value) -{ - Curve *cu = (Curve *)ptr->owner_id; - cu->offset = 1.0f + value; -} - static int rna_Curve_body_length(PointerRNA *ptr); static void rna_Curve_body_get(PointerRNA *ptr, char *value) { Curve *cu = (Curve *)ptr->owner_id; BLI_strncpy(value, cu->str, rna_Curve_body_length(ptr) + 1); @@ -1639,11 +1627,10 @@ static void rna_def_curve(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_Curve_bevel_resolution_update"); prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE | PROP_UNIT_LENGTH); RNA_def_property_float_sdna(prop, NULL, "offset"); RNA_def_property_ui_range(prop, -1.0, 1.0, 0.1, 3); - RNA_def_property_float_funcs(prop, "rna_Curve_offset_get", "rna_Curve_offset_set", NULL); RNA_def_property_ui_text(prop, "Offset", "Distance to move the curve parallel to its normals"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); prop = RNA_def_property(srna, "extrude", PROP_FLOAT, PROP_NONE | PROP_UNIT_LENGTH); RNA_def_property_float_sdna(prop, NULL, "extrude"); ``` This seems to create text and curves correctly initially, the offset value changing as expected, and the default value resetting properly.
Author
Member

@Harley, thank you, I’ll study your solution tomorrow. The one I came up with was simply:

diff --git a/source/blender/blenkernel/intern/curve.cc b/source/blender/blenkernel/intern/curve.cc
index 6a85e268bca..5a6e75e6407 100644
--- a/source/blender/blenkernel/intern/curve.cc
+++ b/source/blender/blenkernel/intern/curve.cc
@@ -402,6 +402,8 @@ void BKE_curve_init(Curve *cu, const short curve_type)
     cu->totbox = cu->actbox = 1;
     cu->tb = (TextBox *)MEM_calloc_arrayN(MAXTEXTBOX, sizeof(TextBox), "textbox");
     cu->tb[0].w = cu->tb[0].h = 0.0;
+    /* Initialize an offset to counteract it being set to -1.0. */
+    cu->offset = 1.0;
   }
   else if (cu->type == OB_SURF) {
     cu->flag |= CU_3D;

But I didn’t know about displist.cc, and it did seem a bit stupid!

@Harley, thank you, I’ll study your solution tomorrow. The one I came up with was simply: ```diff diff --git a/source/blender/blenkernel/intern/curve.cc b/source/blender/blenkernel/intern/curve.cc index 6a85e268bca..5a6e75e6407 100644 --- a/source/blender/blenkernel/intern/curve.cc +++ b/source/blender/blenkernel/intern/curve.cc @@ -402,6 +402,8 @@ void BKE_curve_init(Curve *cu, const short curve_type) cu->totbox = cu->actbox = 1; cu->tb = (TextBox *)MEM_calloc_arrayN(MAXTEXTBOX, sizeof(TextBox), "textbox"); cu->tb[0].w = cu->tb[0].h = 0.0; + /* Initialize an offset to counteract it being set to -1.0. */ + cu->offset = 1.0; } else if (cu->type == OB_SURF) { cu->flag |= CU_3D; ``` But I didn’t know about displist.cc, and it did seem a bit stupid!
Member

Internally that offset value is a movement away from the original locations, so with 0 having no change. And for users we expose that value the same way, with zero being no change.

For some reason we add one to the user's value when setting it and subtract one when reading it. And then we subtract that one again when we use it. Having a custom getter and setter screws setting our defaults correctly in DNA_curve_defaults.h because the UI subtracts one but it is not subtracted when creating a new object.

I suspect this all occurred because the value was originally called "width" and might have used 1 as a default value at one time, and was later changed to work as an offset instead.

My patch (if correct and complete) corrects all this weirdness by always treating it as zero-centered. Your suggestion above (if correct and complete) would compensate for this oddness instead.

Internally that offset value is a movement away from the original locations, so with 0 having no change. And for users we expose that value the same way, with zero being no change. For some reason we add one to the user's value when setting it and subtract one when reading it. And then we subtract that one again when we use it. Having a custom getter and setter screws setting our defaults correctly in DNA_curve_defaults.h because the UI subtracts one but it is not subtracted when creating a new object. I suspect this all occurred because the value was originally called "width" and might have used 1 as a default value at one time, and was later changed to work as an offset instead. My patch (if correct and complete) corrects all this weirdness by always treating it as zero-centered. Your suggestion above (if correct and complete) would compensate for this oddness instead.
Damien Picard changed title from WIP: Font: change default font offset from 1.0 to 0.0 to WIP: Curves: change default font offset from 1.0 to 0.0 2023-02-26 17:28:09 +01:00
Damien Picard force-pushed dp_default_font_offset from ebbb204ebb to f2beddd936 2023-02-26 17:32:39 +01:00 Compare
Author
Member

@Harley So I had a look at your patch, and although it seems most logical to get rid of the entire offset of 1, it causes issues with compatibility: old files saved with the offset need to be updated in versioning.

This in turns means that we lose forward compatibility, and curves in newer files get broken when opened with old versions of Blender.

I tried this in this other branch if you are interested.

My opinion is that this break is not worth it even though the fix makes more sense, so I propose just compensating for the offset when creating new curve objects.

@Harley So I had a look at your patch, and although it seems most logical to get rid of the entire offset of 1, it causes issues with compatibility: old files saved with the offset need to be updated in versioning. This in turns means that we lose forward compatibility, and curves in newer files get broken when opened with old versions of Blender. I tried this [in this other branch](https://projects.blender.org/pioverfour/blender/commit/5c294ee9ce5c6ce879c08ae0786713b79a0a8314) if you are interested. My opinion is that this break is not worth it even though the fix makes more sense, so I propose just compensating for the offset when creating new curve objects.
Member

it causes issues with compatibility: old files saved with the offset need to be updated in versioning.

Yes, that makes a lot of sense. I'm glad you tested that. And not really worth it to version correct old files just to fix this "reset to default value" issue.

No worries, just make sure your correction is in the most logical place, has a good comment, and test is well. Hans will let you know if it is off base.

> it causes issues with compatibility: old files saved with the offset need to be updated in versioning. Yes, that makes a lot of sense. I'm glad you tested that. And not really worth it to version correct old files just to fix this "reset to default value" issue. No worries, just make sure your correction is in the most logical place, has a good comment, and test is well. Hans will let you know if it is off base.
Damien Picard force-pushed dp_default_font_offset from f2beddd936 to 8edc32be29 2023-02-26 20:57:17 +01:00 Compare
Damien Picard changed title from WIP: Curves: change default font offset from 1.0 to 0.0 to Curves: change default font offset from 1.0 to 0.0 2023-02-26 20:57:51 +01:00
Member

It's a bit hard to tell if the change in the description still holds up after all the comments here. Are forward/backward compatibility affected by the change in the PR now? IMO anything that affects forward compatibility or backward compatibility in any complex way isn't worth it here, since the curve system is being replaced (and later maybe the text object data-block (mentioned briefly here: #95355). Forward and backward compatibility are a little more important than smaller usability improvements for these types.

It's a bit hard to tell if the change in the description still holds up after all the comments here. Are forward/backward compatibility affected by the change in the PR now? IMO anything that affects forward compatibility or backward compatibility in any complex way isn't worth it here, since the curve system is being replaced (and later maybe the text object data-block (mentioned briefly here: #95355). Forward and backward compatibility are a little more important than smaller usability improvements for these types.
Author
Member

It's a bit hard to tell if the change in the description still holds up after all the comments here. Are forward/backward compatibility affected by the change in the PR now?

No, the description was updated to fit what the PR currently does.

Forward and backward compatibility are a little more important than smaller usability improvements for these types.

I agree. There were two options to fix the issue of new objects having a wrong offset value, Harley’s and mine. Mine has no effect for forward or backward compatibility, and it’s the option that is currently in the PR.

> It's a bit hard to tell if the change in the description still holds up after all the comments here. Are forward/backward compatibility affected by the change in the PR now? No, the description was updated to fit what the PR currently does. > Forward and backward compatibility are a little more important than smaller usability improvements for these types. I agree. There were two options to fix the issue of new objects having a wrong offset value, Harley’s and mine. Mine has no effect for forward or backward compatibility, and it’s the option that is currently in the PR.
Member

That makes sense. Thanks for the clarification. But now the offset seems to reset to 1.0 when using the "Reset to Default Value" operator. That probably isn't expected?

That makes sense. Thanks for the clarification. But now the offset seems to reset to 1.0 when using the "Reset to Default Value" operator. That probably isn't expected?
Author
Member

That makes sense. Thanks for the clarification. But now the offset seems to reset to 1.0 when using the "Reset to Default Value" operator. That probably isn't expected?

Uhh no, that’s unexpected and honestly a bit baffling, because that’s what this PR intends to fix 😅

I just tested the patch again and I can’t reproduce this behaviour, not sure what went wrong.

Just to make sure, you’re talking about curve objects’ Offset, including texts, right?

> That makes sense. Thanks for the clarification. But now the offset seems to reset to 1.0 when using the "Reset to Default Value" operator. That probably isn't expected? Uhh no, that’s unexpected and honestly a bit baffling, because that’s what this PR intends to fix 😅 I just tested the patch again and I can’t reproduce this behaviour, not sure what went wrong. Just to make sure, you’re talking about curve objects’ Offset, including texts, right?
Member

Just to make sure, you’re talking about curve objects’ Offset, including texts, right?

Yeah, that's what I was referring to.

I thought I understood the problem but now I don't. I noticed that's how it works in master too. The defaults system is odd. Now I'm confused about the patch again! Very strange.

>Just to make sure, you’re talking about curve objects’ Offset, including texts, right? Yeah, that's what I was referring to. I thought I understood the problem but now I don't. I noticed that's how it works in master too. The defaults system is odd. Now I'm confused about the patch again! Very strange.
Author
Member

I thought I understood the problem but now I don't. I noticed that's how it works in master too. The defaults system is odd. Now I'm confused about the patch again! Very strange.

What I’ve noticed is that defaults are usually the expected “neutral” value, but it’s not the case for the curve offsets, probably for historical reasons.

So this patch attempts to make that right by changing the default to the expected 0.0, but for some reason it doesn’t work on your end. I’ll try to investigate what is happening, because it does when I try it.

But anyway the defaults system does seem odd!

> I thought I understood the problem but now I don't. I noticed that's how it works in master too. The defaults system is odd. Now I'm confused about the patch again! Very strange. What I’ve noticed is that defaults are usually the expected “neutral” value, but it’s not the case for the curve offsets, probably for historical reasons. So this patch attempts to make that right by changing the default to the expected 0.0, but for some reason it doesn’t work on your end. I’ll try to investigate what is happening, because it does when I try it. But anyway the defaults system does seem odd!
Hans Goudey approved these changes 2023-02-28 14:28:33 +01:00
Hans Goudey left a comment
Member

Ah, I thought you said you could reproduce what I was seeing. Not sure what went wrong in my testing, this works for me too.

Ah, I thought you said you could reproduce what I was seeing. Not sure what went wrong in my testing, this works for me too.
Hans Goudey reviewed 2023-02-28 14:29:24 +01:00
@ -411,1 +411,4 @@
cu->bevel_profile = nullptr;
/* Initialize the offset to 1.0, to compensate for it being set to -1.0
in the property getter. */
cu->offset = 1.0;
Member

1.0 -> 1.0f

`1.0` -> `1.0f`
pioverfour marked this conversation as resolved
Hans Goudey merged commit 4fb6e45b37 into main 2023-03-06 14:28:51 +01:00
Damien Picard deleted branch dp_default_font_offset 2023-03-06 20:38:18 +01:00
Sign in to join this conversation.
No reviewers
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#105182
No description provided.