Here's an example I posted a few years back ..
Graphics3D 640,480,16,1 Global LIGHT = CreateLight() Global PLANE = CreatePlane() EntityColor PLANE, 200,100,100 texture = CreateTexture( 32, 32 ) SetBuffer TextureBuffer( texture ) For y = 0 To 1 For x = 0 To 1 Color 100, 150+25*( ( x+y) Mod 2 ) , 100 Rect x*16,y*16,16,16,1 Next Next SetBuffer BackBuffer() ScaleTexture texture, 50,50 EntityTexture PLANE, texture FreeTexture texture Global CUBE = CreateCube() : FitMesh CUBE, -2,0,-2,4,10,4 Tmp = CreateCube() : FitMesh Tmp, -1,7,2,2,2,2 : AddMesh Tmp, CUBE : FreeEntity Tmp Global TARGET = CreatePivot() Global CAMERApivot = CreatePivot() Global CAMERA = CreateCamera( CAMERApivot ) PositionEntity CAMERA, 0,50,-50 PointEntity CAMERA , CAMERApivot While Not KeyDown(1) PositionEntity CAMERApivot , EntityX( CUBE ) , 0, EntityZ( CUBE ) TurnEntity CAMERApivot, 0 , KeyDown(31) - KeyDown(30) , 0 ;move relative to camera Mx# = KeyDown(205) - KeyDown(203) Mz# = KeyDown(200) - KeyDown(208 ) If Mx <> 0 Or Mz <> 0 ;move relative to camera TFormVector Mx, 0, Mz , CAMERApivot , 0 TranslateEntity CUBE, TFormedX(), 0, TFormedZ() ;turn relative to movement PositionEntity TARGET, EntityX( CUBE ) + TFormedX() , 0, EntityZ( CUBE ) + TFormedZ() TurnEntity CUBE, 0 , DeltaYaw( CUBE, TARGET ) * .25, 0 EndIf RenderWorld() Flip Wend