Triangle Vertices in Delaunay

In simple 2D Delaunay triangulation, it is useful to have the final list of vertices of the individual triangles. That way, the triangles can be individually  lofted. The routine Triangles below does this, by taking the Delaunay triangulation output. It returns the list of vertices of the unique triangles.

<<ComputationalGeometry`

data2D=RandomReal[{-5,5},{20,2}];

Triangles[data2D_]:=Module[{delval,ml,cl,tl},
delval=DelaunayTriangulation[data2D];
ml=Flatten[#,1]&@((Partition[#,2]&@Riffle[#[[2]],#[[1]],{1,-1,2}])&/@delval);
cl=Select[Tuples[#,2],(#[[1]]≠#[[2]])&]&/@(#[[2]]&/@delval);
tl=Select[#,MemberQ[ml,#]&]&/@cl;
Union@(Sort/@Flatten[#,1]&@Table[Append[#,i]&/@tl[[i]],{i,Length@tl}])
];

Triangles@data2D

Show[Graphics[{Hue[RandomReal[]],Polygon[data2D[[#]]]}]&/@(Triangles@data2D),ListPlot[data2D,PlotStyle->PointSize[Large]]]