[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