[Bf-blender-cvs] [05aea4bb51f] geometry-nodes-mesh-primitives: Fix issue with normals
Hans Goudey
noreply at git.blender.org
Thu Mar 11 23:15:10 CET 2021
Commit: 05aea4bb51f3e868801738544728668724f463bc
Author: Hans Goudey
Date: Thu Feb 25 18:39:36 2021 -0600
Branches: geometry-nodes-mesh-primitives
https://developer.blender.org/rB05aea4bb51f3e868801738544728668724f463bc
Fix issue with normals
===================================================================
M source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc
===================================================================
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 c9dd6888857..214cfaeb300 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
@@ -145,8 +145,7 @@ static void calculate_edge_indices(MutableSpan<MEdge> edges, const int segments,
static void calculate_faces(MutableSpan<MLoop> loops,
MutableSpan<MPoly> polys,
const int segments,
- const int rings,
- Span<MEdge> edges)
+ const int rings)
{
int loop_index = 0;
int poly_index = 0;
@@ -183,21 +182,36 @@ static void calculate_faces(MutableSpan<MLoop> loops,
poly.loopstart = loop_index;
poly.totloop = 4;
+ // MLoop &loop_a = loops[loop_index++];
+ // loop_a.v = ring_vert_index_start + segment;
+ // loop_a.e = ring_edge_index_start + segment;
+
+ // MLoop &loop_b = loops[loop_index++];
+ // loop_b.v = ring_vert_index_start + ((segment + 1) % segments);
+ // loop_b.e = ring_vertical_edge_index_start + ((segment + 1) % segments);
+
+ // MLoop &loop_c = loops[loop_index++];
+ // loop_c.v = next_ring_vert_index_start + ((segment + 1) % segments);
+ // loop_c.e = next_ring_edge_index_start + segment;
+
+ // MLoop &loop_d = loops[loop_index++];
+ // loop_d.v = next_ring_vert_index_start + segment;
+ // loop_d.e = ring_vertical_edge_index_start + segment;
MLoop &loop_a = loops[loop_index++];
loop_a.v = ring_vert_index_start + segment;
- loop_a.e = ring_edge_index_start + segment;
+ loop_a.e = ring_vertical_edge_index_start + segment;
MLoop &loop_b = loops[loop_index++];
- loop_b.v = ring_vert_index_start + ((segment + 1) % segments);
- loop_b.e = ring_vertical_edge_index_start + ((segment + 1) % segments);
+ loop_b.v = next_ring_vert_index_start + segment;
+ loop_b.e = next_ring_edge_index_start + segment;
MLoop &loop_c = loops[loop_index++];
loop_c.v = next_ring_vert_index_start + ((segment + 1) % segments);
- loop_c.e = next_ring_edge_index_start + segment;
+ loop_c.e = ring_vertical_edge_index_start + ((segment + 1) % segments);
MLoop &loop_d = loops[loop_index++];
- loop_d.v = next_ring_vert_index_start + segment;
- loop_d.e = ring_vertical_edge_index_start + segment;
+ loop_d.v = ring_vert_index_start + ((segment + 1) % segments);
+ loop_d.e = ring_edge_index_start + segment;
}
ring_vert_index_start += segments;
ring_edge_index_start += segments * 2;
@@ -215,15 +229,15 @@ static void calculate_faces(MutableSpan<MLoop> loops,
MLoop &loop_a = loops[loop_index++];
loop_a.v = last_vert_index;
- loop_a.e = bottom_edge_fan_start + segment;
+ loop_a.e = bottom_edge_fan_start + ((segment + 1) % segments);
MLoop &loop_b = loops[loop_index++];
- loop_b.v = last_vert_ring_start + segment;
+ loop_b.v = last_vert_ring_start + (segment + 1) % segments;
loop_b.e = last_edge_ring_start + segment;
MLoop &loop_c = loops[loop_index++];
- loop_c.v = last_vert_ring_start + (segment + 1) % segments;
- loop_c.e = bottom_edge_fan_start + ((segment + 1) % segments);
+ loop_c.v = last_vert_ring_start + segment;
+ loop_c.e = bottom_edge_fan_start + segment;
}
}
@@ -250,7 +264,7 @@ static Mesh *create_uv_sphere_mesh(const float3 location,
calculate_edge_indices(edges, segments, rings);
- calculate_faces(loops, polys, segments, rings, edges);
+ calculate_faces(loops, polys, segments, rings);
BLI_assert(BKE_mesh_is_valid(mesh));
More information about the Bf-blender-cvs
mailing list