based on some code by Sswift, I am trying to achieve this, but all meshes change in some sort of abstract cubism :(
Type triangle Field index Field surface End Type Function newMeshOneSurface(ThisMesh) ; Create a new mesh. NewMesh = CreateMesh() Surfaces=CountSurfaces(ThisMesh) destSurface = CreateSurface(NewMesh) ; Loop through each surface of the mesh. For Surface_Index = 1 To Surfaces ; Get the pointer to the this surface and the number of vertices in it. SrcSurface = GetSurface(ThisMesh, Surface_Index) Tris = CountTriangles(SrcSurface) ; Copy all the vertices from the source surface to the destination surface. SrcVerts = CountVertices(SrcSurface) For VertLoop = 0 To SrcVerts-1 Vx# = VertexX#(SrcSurface, VertLoop) Vy# = VertexY#(SrcSurface, VertLoop) Vz# = VertexZ#(SrcSurface, VertLoop) Vu# = VertexU#(SrcSurface, VertLoop) Vv# = VertexV#(SrcSurface, VertLoop) Vw# = VertexW#(SrcSurface, VertLoop) Vnx# = VertexNX#(SrcSurface, VertLoop) Vny# = VertexNY#(SrcSurface, VertLoop) Vnz# = VertexNZ#(SrcSurface, VertLoop) Vr = VertexRed(SrcSurface, VertLoop) Vg = VertexGreen(SrcSurface, VertLoop) Vb = VertexBlue(SrcSurface, VertLoop) AddVertex(DestSurface, Vx#, Vy#, Vz#, Vu#, Vv#, Vw#) VertexNormal(DestSurface, VertLoop, Vnx#, Vny#, Vnz#) VertexColor(DestSurface, VertLoop, Vr, Vg, Vb) Next ; Copy all triangles from the source surface to the destination surface. SrcTris = CountTriangles(SrcSurface) For TriLoop = 0 To SrcTris-1 Copy_Tri = True For ThisTri.Triangle = Each Triangle ; If this triangle is a coincident triangle that should be removed... If (ThisTri\Surface = SrcSurface) And (ThisTri\Index = TriLoop) ; Do not copy the triangle. Copy_Tri = False ; Exit ThisTri loop early. Exit EndIf Next ; If it's okay to copy this triangle... If Copy_Tri V0 = TriangleVertex(SrcSurface, TriLoop, 0) V1 = TriangleVertex(SrcSurface, TriLoop, 1) V2 = TriangleVertex(SrcSurface, TriLoop, 2) AddTriangle(DestSurface, V0, V1, V2) EndIf Next Next Return NewMesh End Function