Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2022-01-24 07:25:29 +0300
committerHans Goudey <h.goudey@me.com>2022-01-24 07:25:29 +0300
commit05ef714edcf5282967a6c9451e6c9192c05a66e2 (patch)
treefd7103f1b910ff4574462239adaf4f136505a52f
parent47f02e1227af7aab01d41c3a7c0076e2de06aec8 (diff)
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc8
1 files changed, 3 insertions, 5 deletions
diff --git a/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc b/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
index 97237030cbb..68a42943da5 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
@@ -39,7 +39,7 @@ static void node_declare(NodeDeclarationBuilder &b)
b.add_input<decl::Geometry>("Mesh").supported_type(GEO_COMPONENT_TYPE_MESH);
b.add_input<decl::Bool>(N_("Selection")).default_value(true).supports_field().hide_value();
b.add_input<decl::Vector>(N_("Offset")).subtype(PROP_TRANSLATION).implicit_field().hide_value();
- b.add_input<decl::Float>(N_("Offset Scale")).default_value(1.0f).supports_field();
+ b.add_input<decl::Float>(N_("Offset Scale")).default_value(1.0f).min(0.0f).supports_field();
b.add_input<decl::Bool>(N_("Individual")).default_value(true);
b.add_output<decl::Geometry>("Mesh");
b.add_output<decl::Bool>(N_("Top")).field_source();
@@ -157,10 +157,6 @@ static void expand_mesh(Mesh &mesh,
CustomData_realloc(&mesh.ldata, mesh.totloop);
}
BKE_mesh_update_customdata_pointers(&mesh, false);
-
- for (MVert &vert : mesh_verts(mesh).take_back(vert_expand)) {
- vert.flag = 0;
- }
}
static MEdge new_edge(const int v1, const int v2)
@@ -1035,6 +1031,8 @@ static void extrude_individual_mesh_faces(MeshComponent &component,
Span<MPoly> orig_polys = mesh_polys(mesh);
Span<MLoop> orig_loops = mesh_loops(mesh);
+ /* Use a mesh for the result of the evaluation because the mesh is reallocated before
+ * the vertices are moved, and the evaluated result might reference an attribute. */
Array<float3> poly_offset(orig_polys.size());
GeometryComponentFieldContext poly_context{component, ATTR_DOMAIN_FACE};
FieldEvaluator poly_evaluator{poly_context, mesh.totpoly};