Graphics3D 800,600,0,2 cam=CreateCamera() light=CreateLight() cube=SixSurfaceCube(2,2,2) PositionEntity cam,0,2,-8 PointEntity cam,cube While Not KeyHit(1) TurnEntity cube,.1,.6,.3 UpdateWorld() RenderWorld() Flip Wend End Function SixSurfaceCube(w#,h#,d#) Local m,s Local dw#,dh#,dd# dw=w/2.0 dh=h/2.0 dd=d/2.0 m=CreateMesh() ; front s=CreateSurface(m) AddRect s,-dw,-dh,-dd,-dw,dh,-dd,dw,dh,-dd,dw,-dh,-dd ; back s=CreateSurface(m) AddRect s,dw,-dh,dd,dw,dh,dd,-dw,dh,dd,-dw,-dh,dd ;bottom s=CreateSurface(m) AddRect s,-dw,-dh,dd,-dw,-dh,-dd,dw,-dh,-dd,dw,-dh,dd ; top s=CreateSurface(m) AddRect s,-dw,dh,-dd,-dw,dh,dd,dw,dh,dd,dw,dh,-dd ;left side s=CreateSurface(m) AddRect s,-dw,-dh,dd,-dw,dh,dd,-dw,dh,-dd,-dw,-dh,-dd ;right side s=CreateSurface(m) AddRect s,dw,-dh,-dd,dw,dh,-dd,dw,dh,dd,dw,-dh,dd Return m End Function Function AddRect(s,x1#,y1#,z1#,x2#,y2#,z2#,x3#,y3#,z3#,x4#,y4#,z4#) ; make normal dx1#=x2-x1 dy1#=y2-y1 dz1#=z2-z1 dx2#=x3-x1 dy2#=y3-y1 dz2#=z3-z1 nx#=dy1*dz2-dz1*dy2 ny#=dz1*dx2-dx1*dz2 nz#=dx1*dy2-dy1*dx2 mag#=Sqr(nx*nx+ny*ny+nz*nz) nx#=nx/mag ny#=ny/mag nz#=nz/mag v1=AddVertex(s,x1,y1,z1,0,0) v2=AddVertex(s,x2,y2,z2,0,1) v3=AddVertex(s,x3,y3,z3,1,1) v4=AddVertex(s,x4,y4,z4,1,0) VertexNormal s,v1,nx,ny,nz VertexNormal s,v2,nx,ny,nz VertexNormal s,v3,nx,ny,nz VertexNormal s,v4,nx,ny,nz AddTriangle s,v1,v2,v3 AddTriangle s,v1,v3,v4 End Function