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
|