Thanks, Stevie G. This is what I've been working on since I posted earlier. Can't get it to look quite right, there's a sharp fold that appears when the page bends.
Graphics3D 800,600,0,2 SetBuffer BackBuffer() Global Camera,Light,Pivot,Mesh,Temp Camera = CreateCamera() Light = CreateLight() Pivot = CreatePivot() MoveEntity Pivot,-5,0,0 TurnEntity Light,45,45,0 MoveEntity Camera,-5,15,-15 PointEntity Camera,Pivot Temp = CreateQuad (10,10,10,0) Mesh = CreateQuad (10,10,10,Pivot) EntityFX Mesh,16 While Not KeyDown (1) Cls If EntityRoll (Pivot) < 179 TurnEntity Pivot,0,0,1 If EntityRoll (Pivot) < 60 Curl (Mesh,1) EndIf If EntityRoll (Pivot) > 120 Curl (Mesh,-1) EndIf EndIf If KeyDown (57) Then WireFrame True Else WireFrame False If MouseHit (1) FreeEntity Mesh RotateEntity Pivot,0,0,0 Mesh = CreateQuad (10,10,10,Pivot) EntityFX Mesh,16 EndIf UpdateWorld RenderWorld Text 0,00," Space: Wireframe" Text 0,10,"LMouse: Restart" Flip Wend End Function CreateQuad (W#,D#,Seg,Parent) Local X,Z,V,V0,V1,V2,V3 Local Mesh = CreateMesh() Local Surf = CreateSurface (Mesh) Local HW# = W/2.0 Local HD# = D/2.0 Local DX# = 0.0 Local DZ# = 0.0 For X = 0 To Seg DX = X/Float(Seg) For Z = 0 To Seg DZ = Z/Float(Seg) V = AddVertex (Surf,DX*W-HW,0.0,DZ*D-HD,DX,DZ) VertexNormal (Surf,V,0,1,0) Next Next For X = 0 To Seg-1 For Z = 0 To Seg-1 V0 = X*(Seg+1)+Z V1 = X*(Seg+1)+Z+1 V2 = (X+1)*(Seg+1)+Z+1 V3 = (X+1)*(Seg+1)+Z AddTriangle (Surf,V0,V1,V2) AddTriangle (Surf,V0,V2,V3) Next Next EntityParent Mesh,Parent Return Mesh End Function Function Curl (Mesh,Dir) Local Surface,A,Index,I#,Add#,NewX#,NewY#,NewZ# For A = 1 To CountSurfaces (Mesh) Surface = GetSurface (Mesh,A) For Index = 0 To CountVertices (Surface)-1 I = I+1.8 Add = Sin (I)*0.05*Dir NewX = VertexX(Surface,Index) NewY = Add*VertexNY(Surface,Index)+VertexY(Surface,Index) NewZ = VertexZ(Surface,Index) If Index <= 10 NewX = VertexX (Surface,Index) NewY = VertexY (Surface,Index) NewZ = VertexZ (Surface,Index) EndIf VertexCoords Surface,Index,NewX,NewY,NewZ Next Next End Function