[Bf-blender-cvs] [eaa15273852] master: UDIM: Fix tile number calculation when adding a range of image tiles

Jesse Yurkovich noreply at git.blender.org
Tue Aug 17 06:25:32 CEST 2021


Commit: eaa152738523bdd2163330fda7ffb1ad62e559cd
Author: Jesse Yurkovich
Date:   Mon Aug 16 21:19:39 2021 -0700
Branches: master
https://developer.blender.org/rBeaa152738523bdd2163330fda7ffb1ad62e559cd

UDIM: Fix tile number calculation when adding a range of image tiles

When adding a range of tiles, the operator could incorrectly calculate
the end_tile. It would not account for the start_tile itself and the
IMA_UDIM_MAX value was 1 too small. This is most noticeable when
attempting to fill the entire supported range of tiles.

Differential Revision: https://developer.blender.org/D11857

===================================================================

M	source/blender/blenkernel/BKE_image.h
M	source/blender/editors/space_image/image_ops.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h
index d298e5dcf6d..ac73bd2b595 100644
--- a/source/blender/blenkernel/BKE_image.h
+++ b/source/blender/blenkernel/BKE_image.h
@@ -45,7 +45,7 @@ struct StampData;
 struct anim;
 
 #define IMA_MAX_SPACE 64
-#define IMA_UDIM_MAX 1999
+#define IMA_UDIM_MAX 2000
 
 void BKE_images_init(void);
 void BKE_images_exit(void);
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index 613042a2ab9..999d2956fef 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -3922,7 +3922,7 @@ static int tile_add_exec(bContext *C, wmOperator *op)
   Image *ima = CTX_data_edit_image(C);
 
   int start_tile = RNA_int_get(op->ptr, "number");
-  int end_tile = start_tile + RNA_int_get(op->ptr, "count");
+  int end_tile = start_tile + RNA_int_get(op->ptr, "count") - 1;
 
   if (start_tile < 1001 || end_tile > IMA_UDIM_MAX) {
     BKE_report(op->reports, RPT_ERROR, "Invalid UDIM index range was specified");
@@ -3933,7 +3933,7 @@ static int tile_add_exec(bContext *C, wmOperator *op)
   char *label = RNA_string_get_alloc(op->ptr, "label", NULL, 0);
 
   bool created_tile = false;
-  for (int tile_number = start_tile; tile_number < end_tile; tile_number++) {
+  for (int tile_number = start_tile; tile_number <= end_tile; tile_number++) {
     ImageTile *tile = BKE_image_add_tile(ima, tile_number, label);
 
     if (tile != NULL) {
@@ -3949,6 +3949,7 @@ static int tile_add_exec(bContext *C, wmOperator *op)
   MEM_freeN(label);
 
   if (!created_tile) {
+    BKE_report(op->reports, RPT_WARNING, "No UDIM tiles were created");
     return OPERATOR_CANCELLED;
   }



More information about the Bf-blender-cvs mailing list