Vertices of a Face (Ordered)

loops = faces.loops # all of the face’s loops
oloop = face.outer_loop # outermost perimeter
iloops = loops - [oloop] #other inner loops [aka holes]

oloop.vertices are arranged ccw around the face.normal, unless the face is flat and it is exactly at Z=0 and then face.normal==Z_AXIS.reverse just like manually drawing the face. So trap for that.

each of the iloop’s loop.vertices are arranged cw around the face.normal [see above about exception]

face loops are always ordered one after the other… even if its starting vertex might seem random…

3 Likes