Code archives/3D Graphics - Misc/draw 3d from 2d
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
leftmouse on bitmap=place cube rightmouse and drag=change height | |||||
Graphics3D 600,400,16,2 camera2 = CreateCamera() camera3 = CreateCamera() camera4 = CreateCamera() ;CameraViewport(camera1,0,0,300,200) ; top view CameraViewport(camera2,300,0,300,200) ; left CameraViewport(camera3,0,200,300,200) ; angle CameraViewport(camera4,300,200,300,200) ; texture window ;world is 100X100 units (in the x and z directions) center = CreatePivot() PositionEntity center,50,1,50 PositionEntity camera2,50,10,0 PositionEntity camera3,0,25,0 PositionEntity camera4,50,100,50 ; up 50 units CameraClsColor camera2,200,0,0 CameraClsColor camera3,00,0,220 CameraClsColor camera4,200,80,200 worldboxtex = CreateTexture(256,256) SetBuffer TextureBuffer(worldboxtex) ClsColor 200,200,200 Cls Color 3,3,3 Rect 0,0,128,128,1 Rect 128,128,128,128 worldbox = CreateCube() ScaleEntity worldbox,100,10,100 FlipMesh worldbox EntityTexture worldbox,worldboxtex ScaleTexture worldboxtex,.3,.3 ;EntityColor worldbox,0,230,0 tex = CreateImage(200,200) ; twice as big so we can see it SetBuffer ImageBuffer(tex) ClsColor 200,200,24 Cls light=CreateLight(camera1) AmbientLight 100,100,100 cube=CreateCube() Type world_object Field entity End Type Repeat plottimer=plottimer -1 If plottimer<0 Then plottimer = -1 ;PointEntity camera1,cube PointEntity camera2,center PointEntity camera3,center PointEntity camera4,center RotateMesh cube,1,2,1 MoveEntity camera3,.3,0,0 SetBuffer ImageBuffer(tex) Color 0,0,255 If MouseDown(2)=1 ypos = ypos + MouseYSpeed()/10 If ypos>30 Then ypos=30 If ypos<1 Then ypos=1 EndIf If MouseDown(1)=1 And plottimer<0 MX = MouseX() MY = MouseY() If mx<200 And my<200 Rect mx,my,2,2,1 b.world_object = New world_object b\entity = CopyEntity(cube) PositionEntity b\entity,mx/2,ypos,my/2 EntityColor b\entity,Rnd(0,255),Rnd(0,255),Rnd(0,255) plottimer=10 EndIf EndIf UpdateWorld RenderWorld SetBuffer BackBuffer() DrawImage tex,0,0 Color 0,0,30 Text 0,0,"mousex ="+MouseX()+" mousey ="+MouseY() Text 0,11,"3d_x = "+MouseX()/2 Text 0,25,"3d_y (HEIGHT)="+ypos Text 0,39,"3d_Z = "+MouseY()/2 Flip Until KeyHit(1) =1 |
Comments
None.
Code Archives Forum