@@ -890,34 +890,22 @@ def _compute_vertex_normals(self, refresh: bool = False):
890
890
verts_normals = torch .zeros_like (verts_packed )
891
891
vertices_faces = verts_packed [faces_packed ]
892
892
893
+ faces_normals = torch .cross (
894
+ vertices_faces [:, 2 ] - vertices_faces [:, 1 ],
895
+ vertices_faces [:, 0 ] - vertices_faces [:, 1 ],
896
+ dim = 1 ,
897
+ )
898
+
893
899
# NOTE: this is already applying the area weighting as the magnitude
894
900
# of the cross product is 2 x area of the triangle.
895
901
verts_normals = verts_normals .index_add (
896
- 0 ,
897
- faces_packed [:, 1 ],
898
- torch .cross (
899
- vertices_faces [:, 2 ] - vertices_faces [:, 1 ],
900
- vertices_faces [:, 0 ] - vertices_faces [:, 1 ],
901
- dim = 1 ,
902
- ),
902
+ 0 , faces_packed [:, 0 ], faces_normals
903
903
)
904
904
verts_normals = verts_normals .index_add (
905
- 0 ,
906
- faces_packed [:, 2 ],
907
- torch .cross (
908
- vertices_faces [:, 0 ] - vertices_faces [:, 2 ],
909
- vertices_faces [:, 1 ] - vertices_faces [:, 2 ],
910
- dim = 1 ,
911
- ),
905
+ 0 , faces_packed [:, 1 ], faces_normals
912
906
)
913
907
verts_normals = verts_normals .index_add (
914
- 0 ,
915
- faces_packed [:, 0 ],
916
- torch .cross (
917
- vertices_faces [:, 1 ] - vertices_faces [:, 0 ],
918
- vertices_faces [:, 2 ] - vertices_faces [:, 0 ],
919
- dim = 1 ,
920
- ),
908
+ 0 , faces_packed [:, 2 ], faces_normals
921
909
)
922
910
923
911
self ._verts_normals_packed = torch .nn .functional .normalize (
0 commit comments