Тема: КАМЕРЫ
Показать сообщение отдельно
Старый 09.12.2005, 16:58   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Смущение

Ну если кортенько, то вот:
Graphics3D 640,480,32,2


Global C_ind=2;номер активной камеры

Type iCamera
	Field cam
	Field preview_cam
	Field obj
End Type

Function Create_iCamera.iCamera(Iparam)
	iC.iCamera= New iCamera
	iC\obj=CreateCube()
	iC\cam=CreateCamera (iC\obj)
	iC\preview_cam=CreateCamera (iC\obj)
	CameraViewport iC\preview_cam,0,0,180,120
	PositionEntity iC\obj,Iparam*10,1,0
	EntityColor iC\obj,Rnd(255),Rnd(255),Rnd(255)
	PositionEntity iC\cam,0,2,-15
	PositionEntity iC\preview_cam,0,2,-15
	Return iC
End Function
;ставим объекты 

Global Preview_Image=CreateImage(180,120)

Const C_Count=3;колво объектов
Local CMas.iCamera[C_Count]

For i=1 To C_Count
	CMas[i]=Create_iCamera(i)
Next 

;нарисуем поле в клетачку 
grid_tex=CreateTexture( 16,16,8,2 )
ScaleTexture grid_tex,10,10
SetBuffer TextureBuffer( grid_tex )
ClsColor 255,255,255:Cls:ClsColor 0,0,0
Color 192,192,192:Rect 0,0,8,8:Rect 8,8,8,8


plane=CreatePlane()
EntityTexture plane,grid_tex

;--------------------------------------
SetBuffer BackBuffer()
While Not KeyHit(1)

;устанавливаем номер активной камеры
If KeyDown(59) c_ind=1
If KeyDown(60) c_ind=2
If KeyDown(61) c_ind=3

For i=1 To c_count;переключаем камеры
If i=c_ind 
	CameraProjMode CMas[c_ind]\cam,1
	CameraProjMode CMas[c_ind]\preview_cam,1
Else 
	CameraProjMode CMas[i]\cam,0
	CameraProjMode CMas[c_ind]\preview_cam,0
EndIf
Next

ScreenCamera(CMas[c_ind],CMas[3])
RenderWorld

DrawImage Preview_Image,0,0
Flip
Wend
End


Function ScreenCamera(ind.iCamera,plan_cam.iCamera)
;Описание: ind -активная камера
; plan_cam- номер камеры которая ваводится о окне 

CameraProjMode ind\cam,0
CameraProjMode plan_cam\preview_cam,1

RenderWorld()
CopyRect 0,0,180,120,0,0,FrontBuffer(),ImageBuffer( Preview_Image )

CameraProjMode ind\cam,1
CameraProjMode plan_cam\preview_cam,0

End Function
Тут ещё бы оптимизацию переключения камер и т.п.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием