Is this what you mean? I'm not entirely sure. I've still to implement the texture remaining still though.
Graphics3D 800,600 SetBuffer BackBuffer() Dim vertex_scale#(3,2) ; 4 vertices (0,1,2,3) and 3 axis (0 = x, 1 = y, 2 = z) Global camera = CreateCamera() PositionEntity camera,0,0,-10 Global light = CreateLight() Global mesh = CreateMesh() Global surf = CreateSurface(mesh) v0 = AddVertex ( surf,-1,-1,0,0,0) v1 = AddVertex ( surf, 1,-1,0,1,0) v2 = AddVertex ( surf,-1, 1,0,0,1) v3 = AddVertex ( surf, 1, 1,0,1,1) AddTriangle surf,v0,v2,v1 AddTriangle surf,v1,v2,v3 Global texture = CreateTexture(64,64) SetBuffer TextureBuffer(texture) Color 255,255,255 Oval 0,0,63,63 Rect 0,0,63,63,0 SetBuffer BackBuffer() EntityTexture mesh,texture Global scale# = 1 While Not KeyHit(1) If KeyDown(200) Then scale = 1.01 scale_quad(scale) ElseIf KeyDown(208) Then scale = 0.99 scale_quad(scale) End If UpdateWorld RenderWorld Flip Wend End Function scale_quad(scale#,index=0) vertex_scale(0,0) = VertexX(surf,index) vertex_scale(0,1) = VertexY(surf,index) vertex_scale(0,2) = VertexZ(surf,index) vertex_scale(1,0) = VertexX(surf,index+1) vertex_scale(1,1) = VertexY(surf,index+1) vertex_scale(1,2) = VertexZ(surf,index+1) vertex_scale(2,0) = VertexX(surf,index+2) vertex_scale(2,1) = VertexY(surf,index+2) vertex_scale(2,2) = VertexZ(surf,index+2) vertex_scale(3,0) = VertexX(surf,index+3) vertex_scale(3,1) = VertexY(surf,index+3) vertex_scale(3,2) = VertexZ(surf,index+3) centre_x# = (vertex_scale(0,0) + vertex_scale(1,0) + vertex_scale(2,0) + vertex_scale(3,0))/4 centre_y# = (vertex_scale(0,1) + vertex_scale(1,1) + vertex_scale(2,1) + vertex_scale(3,1))/4 centre_z# = (vertex_scale(0,2) + vertex_scale(1,2) + vertex_scale(2,2) + vertex_scale(3,2))/4 For loop = 0 To 3 ; loop through the 4 points ;get the distance from the vertex to it's centre point temp_x_dist# = vertex_scale(index+loop,0) - centre_x temp_y_dist# = vertex_scale(index+loop,1) - centre_y temp_z_dist# = vertex_scale(index+loop,2) - centre_z ;Scale the vertex temp_x_dist = temp_x_dist * scale temp_y_dist = temp_y_dist * scale temp_z_dist = temp_z_dist * scale tx# = centre_x + temp_x_dist ty# = centre_y + temp_y_dist tz# = centre_z + temp_z_dist VertexCoords surf,index+loop,tx,ty,tz ;fix UV's u_temp# = VertexU(surf,index+loop) * scale v_temp# = VertexV(surf,index+loop) * scale ; Stop VertexTexCoords surf,index+loop,u_temp,v_temp Next End Function