def compute_normals(self):
"""Compute vertex and face normals of the triangular mesh."""
# Compute face normals, easy as cake.
for fi, face in enumerate(self.faces):
self.face_normals[fi] = np.cross(self.vertices[face[2]] - self.vertices[face[0]],
self.vertices[face[1]] - self.vertices[face[0]])
# Next, compute the vertex normals.
for fi, face in enumerate(self.faces):
self.vertex_normals[face[0]] += self.face_normals[fi]
self.vertex_normals[face[1]] += self.face_normals[fi]
self.vertex_normals[face[2]] += self.face_normals[fi]
# Normalize all vectors
for i, f_norm in enumerate(self.face_normals):
self.face_normals[i] = normalize(f_norm)
for i, v_norm in enumerate(self.vertex_normals):
self.vertex_normals[i] = normalize(v_norm)
评论列表
文章目录