3D View: option only to show axis aligned image empties

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.
This commit is contained in:
Campbell Barton 2019-09-03 18:55:26 +10:00
parent 8a7a7af627
commit abfb8b6963
Notes: blender-bot 2023-02-14 06:35:59 +01:00
Referenced by issue #52668, Proposal: Replace background images with Image Empties in 2.8x
4 changed files with 19 additions and 0 deletions

View 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):

View 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;
}

View 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 */

View 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(