I would do it like this (untested):
Function CollapseMesh(Mesh) BaseSurface = GetSurface(Mesh, 1) For i = 2 To CountSurfaces(Mesh) S = GetSurface(Mesh, i) For j = 0 To CountTriangles(S) - 1 V0 = TriangleVertex(S, j, 0) V1 = TriangleVertex(S, j, 1) V2 = TriangleVertex(S, j, 2) NV0 = AddVertex(BaseSurface, VertexX#(S, V0), VertexY#(S, V0), VertexZ#(S, V0), VertexU#(S, V0), VertexV#(S, V0)) VertexNormal BaseSurface, NV0, VertexNX#(S, V0), VertexNY#(S, V0), VertexNZ#(S, V0) VertexColor BaseSurface, NV0, VertexRed#(S, V0), VertexGreen#(S, V0), VertexBlue#(S, V0), VertexAlpha#(S, V0) NV1 = AddVertex(BaseSurface, VertexX#(S, V1), VertexY#(S, V1), VertexZ#(S, V1), VertexU#(S, V1), VertexV#(S, V1)) VertexNormal BaseSurface, NV1, VertexNX#(S, V1), VertexNY#(S, V1), VertexNZ#(S, V1) VertexColor BaseSurface, NV1, VertexRed#(S, V1), VertexGreen#(S, V1), VertexBlue#(S, V1), VertexAlpha#(S, V1) NV2 = AddVertex(BaseSurface, VertexX#(S, V2), VertexY#(S, V2), VertexZ#(S, V2), VertexU#(S, V2), VertexV#(S, V2)) VertexNormal BaseSurface, NV2, VertexNX#(S, V2), VertexNY#(S, V2), VertexNZ#(S, V2) VertexColor BaseSurface, NV2, VertexRed#(S, V2), VertexGreen#(S, V2), VertexBlue#(S, V2), VertexAlpha#(S, V2) AddTriangle BaseSurface, NV0, NV1, NV2 Next Next End Function