From 5d54f389496c45eed4b90746a2850d7ee6b36788 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 8 Jul 2021 13:06:54 +0200 Subject: Fix: instances are made real when they shouldn't be The original assumption that the `modifyMesh` function is only called when the modifier is applied was wrong. There are still a couple of other places calling it through `BKE_modifier_modify_mesh`. Now there is an extra check that makes sure instances are only realized when the modifier is actually applied. --- source/blender/modifiers/intern/MOD_nodes.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'source/blender') diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc index 51f9bedc0a9..9af2472f2c6 100644 --- a/source/blender/modifiers/intern/MOD_nodes.cc +++ b/source/blender/modifiers/intern/MOD_nodes.cc @@ -1022,9 +1022,11 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh * *ctx->object); modifyGeometry(md, ctx, geometry_set); - /* This function is only called when applying modifiers. In this case it makes sense to realize - * instances, otherwise in some cases there might be no results when applying the modifier. */ - geometry_set = blender::bke::geometry_set_realize_mesh_for_modifier(geometry_set); + if (ctx->flag & MOD_APPLY_TO_BASE_MESH) { + /* In this case it makes sense to realize instances, otherwise in some cases there might be no + * results when applying the modifier. */ + geometry_set = blender::bke::geometry_set_realize_mesh_for_modifier(geometry_set); + } Mesh *new_mesh = geometry_set.get_component_for_write().release(); if (new_mesh == nullptr) { -- cgit v1.2.3