[Bf-blender-cvs] [9506ef320eb] temp-geometry-nodes-fields-prototype: Merge branch 'soc-2021-porting-modifiers-to-nodes-extrude' into temp-geometry-nodes-fields-prototype
Fabian Schempp
noreply at git.blender.org
Tue Aug 10 09:57:25 CEST 2021
Commit: 9506ef320ebd470851c4869871c788db285b5b4e
Author: Fabian Schempp
Date: Fri Aug 6 20:25:44 2021 +0200
Branches: temp-geometry-nodes-fields-prototype
https://developer.blender.org/rB9506ef320ebd470851c4869871c788db285b5b4e
Merge branch 'soc-2021-porting-modifiers-to-nodes-extrude' into temp-geometry-nodes-fields-prototype
# Conflicts:
# source/blender/blenkernel/BKE_node.h
# source/blender/blenkernel/intern/node.cc
# source/blender/bmesh/intern/bmesh_mesh.c
# source/blender/bmesh/intern/bmesh_mesh.h
# source/blender/nodes/CMakeLists.txt
# source/blender/nodes/NOD_geometry.h
# source/blender/nodes/NOD_static_types.h
# source/blender/nodes/geometry/nodes/node_geo_extrude.cc
===================================================================
===================================================================
diff --cc source/blender/nodes/geometry/nodes/node_geo_extrude.cc
index a938c705484,67645b060dc..ad040ef79cf
--- a/source/blender/nodes/geometry/nodes/node_geo_extrude.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_extrude.cc
@@@ -28,10 -30,14 +30,12 @@@
static bNodeSocketTemplate geo_node_extrude_in[] = {
{SOCK_GEOMETRY, N_("Geometry")},
- {SOCK_STRING, N_("Distance")},
{SOCK_FLOAT, N_("Distance"), 0.0f, 0, 0, 0, FLT_MIN, FLT_MAX, PROP_DISTANCE},
- {SOCK_STRING, N_("Inset")},
{SOCK_FLOAT, N_("Inset"), 0.0f, 0, 0, 0, FLT_MIN, FLT_MAX, PROP_DISTANCE},
{SOCK_BOOLEAN, N_("Individual")},
- {SOCK_STRING, N_("Selection")},
- {SOCK_STRING, N_("Top Face")},
- {SOCK_STRING, N_("Side Face")},
+ {SOCK_BOOLEAN, N_("Selection"), 1, 0, 0, 0, 0, 0, PROP_NONE, SOCK_HIDE_VALUE},
++ //{SOCK_STRING, N_("Top Face")},
++ //{SOCK_STRING, N_("Side Face")},
{-1, ""},
};
@@@ -40,15 -46,38 +44,46 @@@ static bNodeSocketTemplate geo_node_ext
{-1, ""},
};
++<<<<<<< HEAD
++=======
+ static void geo_node_extrude_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
+ {
+ uiLayoutSetPropSep(layout, true);
+ uiLayoutSetPropDecorate(layout, false);
+ uiItemR(layout, ptr, "distance_mode", 0, nullptr, ICON_NONE);
+ uiItemR(layout, ptr, "inset_mode", 0, nullptr, ICON_NONE);
+ }
+
+ static void geo_node_extrude_init(bNodeTree *UNUSED(tree), bNode *node)
+ {
+ node->custom1 = GEO_NODE_ATTRIBUTE_INPUT_FLOAT;
+ node->custom2 = GEO_NODE_ATTRIBUTE_INPUT_FLOAT;
+ }
+
+ static void geo_node_extrude_update(bNodeTree *UNUSED(ntree), bNode *node)
+ {
+ blender::nodes::update_attribute_input_socket_availabilities(
+ *node, "Distance", (GeometryNodeAttributeInputMode)node->custom1, true);
+ blender::nodes::update_attribute_input_socket_availabilities(
+ *node, "Inset", (GeometryNodeAttributeInputMode)node->custom2, true);
+ }
+
++>>>>>>> soc-2021-porting-modifiers-to-nodes-extrude
using blender::Span;
static Mesh *extrude_mesh(const Mesh *mesh,
const Span<bool> selection,
+ const float distance,
+ const float inset,
+ const bool inset_individual_faces)
+{
+ BLI_assert(selection.size() == mesh->totpoly);
+ const Span<float> distance,
+ const Span<float> inset,
+ const bool inset_individual_faces,
+ bool **selection_top_faces_out,
+ bool **selection_all_faces_out)
+ {
const BMeshCreateParams bmesh_create_params = {true};
const BMeshFromMeshParams bmesh_from_mesh_params = {
true, 0, 0, 0, {CD_MASK_ORIGINDEX, CD_MASK_ORIGINDEX, CD_MASK_ORIGINDEX}};
@@@ -61,31 -90,43 +96,63 @@@
BMO_op_initf(bm,
&op,
0,
+ "inset_individual faces=%hf use_even_offset=%b thickness=%f depth=%f",
+ BM_ELEM_SELECT,
+ true,
+ inset,
+ distance);
+ "inset_individual faces=%hf use_even_offset=%b thickness=%f depth=%f "
+ "thickness_array=%p depth_array=%p use_attributes=%b",
+ BM_ELEM_SELECT,
+ true,
+ inset[0],
+ distance[0],
+ inset.data(),
+ distance.data(),
+ true);
}
else {
BMO_op_initf(bm,
&op,
0,
+ "inset_region faces=%hf use_boundary=%b use_even_offset=%b thickness=%f depth=%f",
+ BM_ELEM_SELECT,
+ true,
+ true,
+ inset,
+ distance);
+ }
+ BMO_op_exec(bm, &op);
+ BMO_op_finish(bm, &op);
+
+ CustomData_MeshMasks cd_mask_extra = {};
+ Mesh *result = BKE_mesh_from_bmesh_for_eval_nomain(bm, &cd_mask_extra, mesh);
+ BM_mesh_free(bm);
+
+ result->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
+ "inset_region faces=%hf use_boundary=%b use_even_offset=%b thickness=%f depth=%f "
+ "thickness_array=%p depth_array=%p use_attributes=%b",
+ BM_ELEM_SELECT,
+ true,
+ true,
+ inset[0],
+ distance[0],
+ inset.data(),
+ distance.data(),
+ true);
+ }
+ BM_tag_new_faces(bm, &op);
+ BMO_op_exec(bm, &op);
+
+ CustomData_MeshMasks cd_mask_extra = {CD_MASK_ORIGINDEX, CD_MASK_ORIGINDEX, CD_MASK_ORIGINDEX};
+
+ Mesh *result = BKE_mesh_from_bmesh_for_eval_nomain(bm, &cd_mask_extra, mesh);
+ BM_get_selected_faces(bm, selection_top_faces_out);
+ BM_get_tagged_faces(bm, selection_all_faces_out);
+
+ BM_mesh_free(bm);
+
+ BKE_mesh_normals_tag_dirty(result);
return result;
}
More information about the Bf-blender-cvs
mailing list