diff --git a/scene/3d/mesh_instance.cpp b/scene/3d/mesh_instance.cpp index 3d66ce5047c4..29c11c541946 100644 --- a/scene/3d/mesh_instance.cpp +++ b/scene/3d/mesh_instance.cpp @@ -355,9 +355,9 @@ void MeshInstance::_initialize_skinning(bool p_force_reset) { } RID render_mesh = software_skinning ? software_skinning->mesh_instance->get_rid() : mesh->get_rid(); - set_base(render_mesh); + if (update_mesh || (render_mesh != get_base())) { + set_base(render_mesh); - if (update_mesh) { // Update instance materials after switching mesh. int surface_count = mesh->get_surface_count(); for (int surface_index = 0; surface_index < surface_count; ++surface_index) {