From 5282a2f03361e2b8a7fd53efc793c3ae06226904 Mon Sep 17 00:00:00 2001 From: tariqsulley Date: Sat, 4 Oct 2025 23:32:02 +0000 Subject: [PATCH] Fix #146183: Assert in Mesh->Transform->Randomize Enabling the normal parameter in the randomize operator triggered a debug assert, since BKE_object_get_editmesh_eval_cage() was called on the original object. Resolved by retrieving the evaluated object from the depsgraph. Ref !146608 --- source/blender/editors/object/object_random.cc | 6 +++++- source/blender/editors/util/ed_transverts.cc | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/object/object_random.cc b/source/blender/editors/object/object_random.cc index 4faf4b67b58..f6d927a52f0 100644 --- a/source/blender/editors/object/object_random.cc +++ b/source/blender/editors/object/object_random.cc @@ -18,6 +18,8 @@ #include "RNA_access.hh" #include "RNA_define.hh" +#include "DEG_depsgraph_query.hh" + #include "WM_api.hh" #include "WM_types.hh" @@ -86,6 +88,7 @@ static wmOperatorStatus object_rand_verts_exec(bContext *C, wmOperator *op) const uint seed = RNA_int_get(op->ptr, "seed"); bool changed_multi = false; + Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C); Vector objects = BKE_view_layer_array_from_objects_in_mode_unique_data( scene, view_layer, CTX_wm_view3d(C), eObjectMode(ob_mode)); for (const int ob_index : objects.index_range()) { @@ -104,7 +107,8 @@ static wmOperatorStatus object_rand_verts_exec(bContext *C, wmOperator *op) continue; } - ED_transverts_create_from_obedit(&tvs, ob_iter, mode); + const Object *ob_iter_eval = DEG_get_evaluated(depsgraph, ob_iter); + ED_transverts_create_from_obedit(&tvs, ob_iter_eval, mode); if (tvs.transverts_tot == 0) { continue; } diff --git a/source/blender/editors/util/ed_transverts.cc b/source/blender/editors/util/ed_transverts.cc index ba316d96b41..28972dad5d1 100644 --- a/source/blender/editors/util/ed_transverts.cc +++ b/source/blender/editors/util/ed_transverts.cc @@ -218,6 +218,7 @@ bool ED_transverts_check_obedit(const Object *obedit) void ED_transverts_create_from_obedit(TransVertStore *tvs, const Object *obedit, const int mode) { using namespace blender; + BLI_assert(DEG_is_evaluated(obedit)); Nurb *nu; BezTriple *bezt;