diff options
author | Hans Goudey <h.goudey@me.com> | 2021-03-17 04:55:35 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2021-03-17 04:55:35 +0300 |
commit | 21d774cef3001d06dc72c5666fa54b3cf5a7daec (patch) | |
tree | 6689667ecb6734fdefafac460ef4000949bbe437 | |
parent | 7bb5c86c1ed99b4bd007cfd26951a313e9f18409 (diff) |
Fixes and cleanup after mergegeometry-nodes-mesh-primitives
3 files changed, 23 insertions, 24 deletions
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index bf6fc08b3b8..04ff181d9b5 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -411,7 +411,6 @@ static EnumPropertyItem rna_node_geometry_mesh_circle_fill_type_items[] = { {GEO_NODE_MESH_CIRCLE_FILL_TRIANGLE_FAN, "TRIANGLE_FAN", 0, "Triangles", ""}, {0, NULL, 0, NULL, NULL}, }; - #endif #define ITEM_ATTRIBUTE \ diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc index ec96f9c1004..4b7177e2e0d 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cone.cc @@ -282,8 +282,8 @@ Mesh *create_cylinder_or_cone_mesh(const float radius_top, const int verts_num, const GeometryNodeMeshCircleFillType fill_type) { - const bool top_is_point = radius_top != 0.0f; - const bool bottom_is_point = radius_bottom != 0.0f; + const bool top_is_point = radius_top == 0.0f; + const bool bottom_is_point = radius_bottom == 0.0f; /* Handle the case of a line / single point before everything else to avoid * the need to check for it later. */ if (top_is_point && bottom_is_point) { @@ -291,7 +291,7 @@ Mesh *create_cylinder_or_cone_mesh(const float radius_top, Mesh *mesh = BKE_mesh_new_nomain(single_vertex ? 1 : 2, single_vertex ? 0 : 1, 0, 0, 0); copy_v3_v3(mesh->mvert[0].co, float3(0.0f, 0.0f, depth)); if (single_vertex) { - short up[3] = {0, 0, SHRT_MAX}; + const short up[3] = {0, 0, SHRT_MAX}; copy_v3_v3_short(mesh->mvert[0].no, up); return mesh; } @@ -304,15 +304,15 @@ Mesh *create_cylinder_or_cone_mesh(const float radius_top, } Mesh *mesh = BKE_mesh_new_nomain( - vert_total(fill_type, verts_num, !top_is_point, !bottom_is_point), - edge_total(fill_type, verts_num, !top_is_point, !bottom_is_point), + vert_total(fill_type, verts_num, top_is_point, bottom_is_point), + edge_total(fill_type, verts_num, top_is_point, bottom_is_point), 0, - corner_total(fill_type, verts_num, !top_is_point, !bottom_is_point), - face_total(fill_type, verts_num, !top_is_point, !bottom_is_point)); - MutableSpan<MVert> verts = MutableSpan<MVert>(mesh->mvert, mesh->totvert); - MutableSpan<MEdge> edges = MutableSpan<MEdge>(mesh->medge, mesh->totedge); - MutableSpan<MLoop> loops = MutableSpan<MLoop>(mesh->mloop, mesh->totloop); - MutableSpan<MPoly> polys = MutableSpan<MPoly>(mesh->mpoly, mesh->totpoly); + corner_total(fill_type, verts_num, top_is_point, bottom_is_point), + face_total(fill_type, verts_num, top_is_point, bottom_is_point)); + MutableSpan<MVert> verts{mesh->mvert, mesh->totvert}; + MutableSpan<MLoop> loops{mesh->mloop, mesh->totloop}; + MutableSpan<MEdge> edges{mesh->medge, mesh->totedge}; + MutableSpan<MPoly> polys{mesh->mpoly, mesh->totpoly}; /* Calculate vertex positions. */ const int top_verts_start = 0; @@ -331,16 +331,16 @@ Mesh *create_cylinder_or_cone_mesh(const float radius_top, } angle += angle_delta; } - if (!!top_is_point) { + if (top_is_point) { copy_v3_v3(verts[top_verts_start].co, float3(0.0f, 0.0f, depth)); } - if (!!bottom_is_point) { + if (bottom_is_point) { copy_v3_v3(verts[bottom_verts_start].co, float3(0.0f, 0.0f, -depth)); } /* Add center vertices for the triangle fans at the end. */ - const int top_center_vert_index = bottom_verts_start + (!bottom_is_point ? verts_num : 1); - const int bottom_center_vert_index = top_center_vert_index + (!top_is_point ? 1 : 0); + const int top_center_vert_index = bottom_verts_start + (bottom_is_point ? 1 : verts_num); + const int bottom_center_vert_index = top_center_vert_index + (top_is_point ? 0 : 1); if (fill_type == GEO_NODE_MESH_CIRCLE_FILL_TRIANGLE_FAN) { if (!top_is_point) { copy_v3_v3(verts[top_center_vert_index].co, float3(0.0f, 0.0f, depth)); diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc index ae7a338bfdb..da6c8ee0dd1 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc @@ -26,7 +26,7 @@ static bNodeSocketTemplate geo_node_mesh_primitive_uv_sphere_in[] = { {SOCK_INT, N_("Segments"), 32, 0.0f, 0.0f, 0.0f, 3, 1024}, - {SOCK_INT, N_("Rings"), 16, 0.0f, 0.0f, 0.0f, 3, 1024}, + {SOCK_INT, N_("Rings"), 16, 0.0f, 0.0f, 0.0f, 2, 1024}, {SOCK_FLOAT, N_("Radius"), 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, FLT_MAX, PROP_DISTANCE}, {SOCK_VECTOR, N_("Location"), 0.0f, 0.0f, 0.0f, 1.0f, -FLT_MAX, FLT_MAX, PROP_TRANSLATION}, {SOCK_VECTOR, N_("Rotation"), 0.0f, 0.0f, 0.0f, 1.0f, -FLT_MAX, FLT_MAX, PROP_EULER}, @@ -81,8 +81,8 @@ static void calculate_sphere_vertex_data(MutableSpan<MVert> verts, float phi = 0.0f; const float z = cosf(theta); for (const int UNUSED(segment) : IndexRange(segments)) { - const float x = sinf(theta) * cosf(phi); - const float y = sinf(theta) * sinf(phi); + const float x = std::sin(theta) * std::cos(phi); + const float y = std::sin(theta) * std::sin(phi); copy_v3_v3(verts[vert_index].co, float3(x, y, z) * radius); normal_float_to_short_v3(verts[vert_index].no, float3(x, y, z)); phi += delta_phi; @@ -263,10 +263,10 @@ static Mesh *create_uv_sphere_mesh(const float radius, const int segments, const 0, sphere_corner_total(segments, rings), sphere_face_total(segments, rings)); - MutableSpan<MVert> verts = MutableSpan<MVert>(mesh->mvert, mesh->totvert); - MutableSpan<MEdge> edges = MutableSpan<MEdge>(mesh->medge, mesh->totedge); - MutableSpan<MLoop> loops = MutableSpan<MLoop>(mesh->mloop, mesh->totloop); - MutableSpan<MPoly> polys = MutableSpan<MPoly>(mesh->mpoly, mesh->totpoly); + MutableSpan<MVert> verts{mesh->mvert, mesh->totvert}; + MutableSpan<MLoop> loops{mesh->mloop, mesh->totloop}; + MutableSpan<MEdge> edges{mesh->medge, mesh->totedge}; + MutableSpan<MPoly> polys{mesh->mpoly, mesh->totpoly}; calculate_sphere_vertex_data(verts, radius, segments, rings); @@ -285,7 +285,7 @@ static void geo_node_mesh_primitive_uv_sphere_exec(GeoNodeExecParams params) { const int segments_num = params.extract_input<int>("Segments"); const int rings_num = params.extract_input<int>("Rings"); - if (segments_num < 3 || rings_num < 3) { + if (segments_num < 3 || rings_num < 2) { params.set_output("Geometry", GeometrySet()); return; } |