3D View: option only to show axis aligned image empties
authorCampbell Barton <ideasman42@gmail.com>
Tue, 3 Sep 2019 08:55:26 +0000 (18:55 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 3 Sep 2019 09:01:27 +0000 (19:01 +1000)
Useful for using reference images that only make sense to see
in aligned axis-views.

This restores functionality possible with 2.7x background images.
See: T52668.

release/scripts/startup/bl_ui/properties_data_empty.py
source/blender/blenkernel/intern/object.c
source/blender/makesdna/DNA_object_types.h
source/blender/makesrna/intern/rna_object.c

index 6650aef61aa7ec7bb682c412177f6029c4b00d6c..4ce87b85410fb562b1db50c3c2cdac07628a6f6e 100644 (file)
@@ -60,6 +60,7 @@ class DATA_PT_empty(DataButtonsPanel, Panel):
             col.row().prop(ob, "empty_image_side", text="Side", expand=True)
             col.prop(ob, "show_empty_image_orthographic", text="Display Orthographic")
             col.prop(ob, "show_empty_image_perspective", text="Display Perspective")
+            col.prop(ob, "show_empty_image_only_axis_aligned")
 
 
 class DATA_PT_empty_image(DataButtonsPanel, Panel):
index 7ea395e93869455dff101312851ceb39e9492648..ed517bfc5137e42e3c6fa5733f124ff7576e5983 100644 (file)
@@ -2985,6 +2985,15 @@ bool BKE_object_empty_image_data_is_visible_in_view3d(const Object *ob, const Re
     }
   }
 
+  if (visibility_flag & OB_EMPTY_IMAGE_HIDE_NON_AXIS_ALIGNED) {
+    float proj[3];
+    project_plane_v3_v3v3(proj, ob->obmat[2], rv3d->viewinv[2]);
+    const float proj_length_sq = len_squared_v3(proj);
+    if (proj_length_sq > 1e-5f) {
+      return false;
+    }
+  }
+
   return true;
 }
 
index 613871b1feef3fd301d667fca0259e394aaa98d5..ff1839f997cf10e12835f42b11f1ad7f80c73498 100644 (file)
@@ -686,6 +686,7 @@ enum {
   OB_EMPTY_IMAGE_HIDE_ORTHOGRAPHIC = 1 << 1,
   OB_EMPTY_IMAGE_HIDE_BACK = 1 << 2,
   OB_EMPTY_IMAGE_HIDE_FRONT = 1 << 3,
+  OB_EMPTY_IMAGE_HIDE_NON_AXIS_ALIGNED = 1 << 4,
 };
 
 /** #Object.empty_image_flag */
index 3c0fd282b174b5be2a33107b5ebdc0df350273b2..c8a0d543b7078d4d492078884f59624f4c1f154b 100644 (file)
@@ -2821,6 +2821,14 @@ static void rna_def_object(BlenderRNA *brna)
       prop, "Display in Orthographic Mode", "Display image in orthographic mode");
   RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL);
 
+  prop = RNA_def_property(srna, "show_empty_image_only_axis_aligned", PROP_BOOLEAN, PROP_NONE);
+  RNA_def_property_boolean_sdna(
+      prop, NULL, "empty_image_visibility_flag", OB_EMPTY_IMAGE_HIDE_NON_AXIS_ALIGNED);
+  RNA_def_property_ui_text(prop,
+                           "Display Only Axis Aligned",
+                           "Only display the image when it is aligned with the view axis");
+  RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL);
+
   prop = RNA_def_property(srna, "use_empty_image_alpha", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "empty_image_flag", OB_EMPTY_IMAGE_USE_ALPHA_BLEND);
   RNA_def_property_ui_text(