|
camera - указатель камеры
x# - глобальная координата x y# - глобальная координата y z# - глобальная координата z |
| Проецирует глобальные координаты x,y,z в 2D-координаты экрана. |
|
; Пример CameraProject
; --------------------- Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,2,-10 light=CreateLight() RotateEntity light,90,0,0 plane=CreatePlane() ground_tex=LoadTexture("media/Chorme-2.bmp") EntityTexture plane,ground_tex cube=CreateCube() cube_tex=LoadTexture("media/b3dlogo.jpg") EntityTexture cube,cube_tex PositionEntity cube,0,1,0 While Not KeyDown( 1 ) If KeyDown( 205 )=True Then TurnEntity camera,0,-1,0 If KeyDown( 203 )=True Then TurnEntity camera,0,1,0 If KeyDown( 208 )=True Then MoveEntity camera,0,0,-0.05 If KeyDown( 200 )=True Then MoveEntity camera,0,0,0.05 ; Преобразуем 3D-координаты куба в 2D-координаты экрана CameraProject(camera,EntityX(cube),EntityY(cube),EntityZ(cube)) RenderWorld ;Если куб в поле зрения, пишем надпись If EntityInView(cube,camera)=True ; Используйте команды ProjectedX() и ProjectedY(), чтобы получить 2D-координаты после использования CameraProject. ; Используйте эти координаты для печати текста в 2D, поверх 3D-сцены. Text ProjectedX#(),ProjectedY#(),"Cube" EndIf Text 0,0,"Use cursor keys to move about" Text 0,20,"ProjectedX: "+ProjectedX#() Text 0,40,"ProjectedY: "+ProjectedY#() Text 0,60,"ProjectedZ: "+ProjectedZ#() Text 0,80,"EntityInView: "+EntityInView(cube,camera) Flip Wend End |