One surface

Blitz3D Forums/Blitz3D Programming/One surface

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

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