Ok, i knocked this up. It should do what you want it to. I've not tried it on any complex meshes, but it works on primates. All you need to do, is copy the function into your code, and call it. You must pass across a mesh and a plane you wish to mirror along. 0 = x, 1 = y and 2 = z.
Also, if you have a surface you wish to mirror, you can pass that across. If not, omit it, and the function will mirror all surfaces.
Also, if you have a surface you wish to mirror, you can pass that across. If not, omit it, and the function will mirror all surfaces.
Graphics3D 800,600 SetBuffer BackBuffer() Global cam = CreateCamera() PositionEntity cam,0,0,-10 Global light = CreateLight() Global cube = CreateCube() PositionMesh cube,2,1,2 While Not KeyHit(1) If KeyHit(203) Then mirror_mesh(cube,0) If KeyHit(200) Then mirror_mesh(cube,1) If KeyHit(208) Then mirror_mesh(cube,2) UpdateWorld RenderWorld Flip Wend End Function mirror_mesh(mesh,plane,surface = 0) If plane < 0 Or plane > 2 Then Return 0 If surface = 0 Then s_count = CountSurfaces(mesh) l_count = 1 Else For loop = 0 To CountSurfaces(mesh) temp = GetSurface(mesh,loop) If surface = temp Then s_count = temp l_count = temp End If Next End If average_x# = EntityX(mesh) - (MeshWidth(mesh)/2.0) average_y# = EntityY(mesh) - (MeshHeight(mesh)/2.0) average_z# = EntityZ(mesh) - (MeshDepth(mesh)/2.0) If plane = 0 Then For sloop = l_count To s_count surface = GetSurface(mesh,sloop) For loop = 0 To CountVertices(surface) - 1 ny# = VertexNY (surface,loop) nz# = VertexNZ (surface,loop) nx# = VertexNX (surface,loop) VertexCoords surface,loop, average_x - ( average_x + VertexX(surface,loop)), VertexY(surface,loop), VertexZ(surface,loop) VertexNormal surface,loop,nx,ny,-nz Next Next ElseIf plane = 1 Then For sloop = l_count To s_count surface = GetSurface(mesh,sloop) For loop = 0 To CountVertices(surface) - 1 ny# = VertexNY (surface,loop) nz# = VertexNZ (surface,loop) nx# = VertexNX (surface,loop) VertexCoords surface,loop, VertexX(surface,loop), average_y - ( average_y + VertexY(surface,loop)), VertexZ(surface,loop) VertexNormal surface,loop,-nx,ny,-nz Next Next ElseIf plane = 2 Then For sloop = l_count To s_count surface = GetSurface(mesh,sloop) For loop = 0 To CountVertices(surface) - 1 ny# = VertexNY (surface,loop) nz# = VertexNZ (surface,loop) nx# = VertexNX (surface,loop) VertexCoords surface,loop, VertexX(surface,loop), VertexY(surface,loop), average_z - ( average_z + VertexZ(surface,loop)) VertexNormal surface,loop,-nx,ny,nz Next Next End If FlipMesh mesh End Function