Here is a function to create a mesh from a matrix. Doesn't texture it though.
The mwidth#,mheight#,mxseg and mzseg should be the same as your make matrix command.
function makemeshfrommatrix(matrixno,meshno,mwidth#,mheight#,mxseg,mzseg)
make memblock 1,12+(mxseg*mzseg*6*32)
write memblock dword 1,0,274
write memblock dword 1,4,32
write memblock dword 1,8,mxseg*mzseg*6
trino=0
frames=2
sync
for x=0 to mxseg-1
for z=0 to mzseg -1
segxwidth#=mwidth#/mxseg
segzwidth#=mheight#/mzseg
x1#=matrix position x(matrixno)+(x*segxwidth#)
y1#=get matrix height(matrixno,x,z)
z1#=matrix position z(matrixno)+(z*segzwidth#)
x2#=matrix position x(matrixno)+((x+1)*segxwidth#)
y2#=get matrix height(matrixno,x+1,z+1)
z2#=matrix position z(matrixno)+((z+1)*segzwidth#)
x3#=matrix position x(matrixno)+((x+1)*segxwidth#)
y3#=get matrix height(matrixno,x+1,z)
z3#=matrix position z(matrixno)+(z*segzwidth#)
x4#=matrix position x(matrixno)+(x*segxwidth#)
y4#=get matrix height(matrixno,x,z+1)
z4#=matrix position z(matrixno)+((z+1)*segzwidth#)
write memblock float 1,12+(trino*32),x1#
write memblock float 1,12+(trino*32)+4,y1#
write memblock float 1,12+(trino*32)+8,z1#
inc trino
write memblock float 1,12+(trino*32),x2#
write memblock float 1,12+(trino*32)+4,y2#
write memblock float 1,12+(trino*32)+8,z2#
inc trino
write memblock float 1,12+(trino*32),x3#
write memblock float 1,12+(trino*32)+4,y3#
write memblock float 1,12+(trino*32)+8,z3#
inc trino
write memblock float 1,12+(trino*32),x1#
write memblock float 1,12+(trino*32)+4,y1#
write memblock float 1,12+(trino*32)+8,z1#
inc trino
write memblock float 1,12+(trino*32),x4#
write memblock float 1,12+(trino*32)+4,y4#
write memblock float 1,12+(trino*32)+8,z4#
inc trino
write memblock float 1,12+(trino*32),x2#
write memblock float 1,12+(trino*32)+4,y2#
write memblock float 1,12+(trino*32)+8,z2#
inc trino
next z
next x
make mesh from memblock meshno,1
endfunction
Cheers,
Cloggy