Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 11.02.2007, 23:41   #1
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
1 окно, 2 камеры

Добрый день господа!

Позвольте задать Вам вопрос.

1. Как можно ли наложить окно первой камеры на окно второй с полупрозрачностью? Тоесть есть основная карта - а в углу показывается в отдельном окне 3-я камера, причем с точки зрения дизайна это окно должно быть полупрозрачным (иначе место теряется)
На ум приходит рендер в текстуру (но не уверен в качестве и скорости)

2. Как сделать так чтобы 2 камеры работая одновременно рендерили по разному, одна - солидом, вторая - WireFrame'ом

Заранее спасибо за ответ.
(Offline)
 
Ответить с цитированием
Старый 11.02.2007, 23:59   #2
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: 1 окно, 2 камеры

1) Не стоит делать дополнительные камеры - это дополнительные проходы рендера и соотвественно меньшая производительность. Поэтому карту делать квадом перед камерой с рендером в его текстуру, для высокой скорости юзай либу FastImage на форуме blitz.pp.ru в разделе "исходники"
2) Включай первую камеру, рендерь как обычно, включай вторую и рендерь с файрфреймом:
CameraProjMode(Камера2, 0)
CameraProjMode(Камера1, 1)
WireFrame(True)
RenderWorld()

CameraProjMode(Камера1, 0)
CameraProjMode(Камера2, 1)
WireFrame(False)
RenderWorld()
Возможно есть другой путь, для чего тебе это надо?
(Offline)
 
Ответить с цитированием
Старый 12.02.2007, 01:24   #3
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: 1 окно, 2 камеры

Сообщение от Cyan
1) Не стоит делать дополнительные камеры - это дополнительные проходы рендера и соотвественно меньшая производительность. Поэтому карту делать квадом перед камерой с рендером в его текстуру, для высокой скорости юзай либу FastImage на форуме blitz.pp.ru в разделе "исходники"
2) Включай первую камеру, рендерь как обычно, включай вторую и рендерь с файрфреймом:
CameraProjMode(Камера2, 0)
CameraProjMode(Камера1, 1)
WireFrame(True)
RenderWorld()

CameraProjMode(Камера1, 0)
CameraProjMode(Камера2, 1)
WireFrame(False)
RenderWorld()
Возможно есть другой путь, для чего тебе это надо?
Спасибо. Надо.. такс сейчас пример придумаю...

Во. Есть группа объектов (зданий, танков), выбранный объект(без окружения) дополнительно крутится в углу экрана с какими нибудь статсами (названия свойства) и доп эффектами (проволока + целшейдер). Это надо для пущей визуализации. Делается по совету холидела копированием его куда нить далеко(за границы мира) и установкой перед ним второй камеры.

Если просто врубать окно - то идет определенный диссонанс с имеющимся ГУИ и общим стилем.... Вот и пытаюсь как нибудь это безобразие подрехтовать.

собственно моделька низкополигональная так что 2-я камера много ресурсов кушать не должна.
(Offline)
 
Ответить с цитированием
Старый 12.02.2007, 02:19   #4
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: 1 окно, 2 камеры

Эм, непонял - зачем вторая камера? Ну скопируй ты этот мешь, отскаль его и помести его перед камерой (первой и единственной) и все дела. А делать "копированием его куда нить далеко" со второй камерой - это уже извращение чистой воды.
Еще лучше будет заранее наделать картинок (можно анимированных) и вместо меша выводить картинки с этим типом обьекта.
(Offline)
 
Ответить с цитированием
Старый 12.02.2007, 12:38   #5
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: 1 окно, 2 камеры

Сообщение от Cyan
Эм, непонял - зачем вторая камера? Ну скопируй ты этот мешь, отскаль его и помести его перед камерой (первой и единственной) и все дела. А делать "копированием его куда нить далеко" со второй камерой - это уже извращение чистой воды.
Еще лучше будет заранее наделать картинок (можно анимированных) и вместо меша выводить картинки с этим типом обьекта.
Спасибо за ответ!

по поводу 2 камеры. Ну это был самый простой вариант. И вполне укладывающийся в мои познания =)
А с рендерингом... хм, а пример есть какой нибудь? Точнее думается что он как то пересекается с вышеуказанным кодом... Боюсь начудить.

А вот картинки увы не катят, ибо в принципе отображаться должен ЛЮБОЙ объект, например только добавленный.
(Offline)
 
Ответить с цитированием
Старый 12.02.2007, 17:57   #6
ЛысыЙ_Чук-Иванчук
Дэвелопер
 
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений
(для 17 пользователей)
Re: 1 окно, 2 камеры

А если делать карту текстурой, тогда в 2Д неполучится(потомучто при повороте текстуры будет ГГлючить!!), прейдется делать 3Д(ну там спрайт вроде самый простой вариант), Так вот как сделать чтобы в углу показывался круг(небольшой, ну как в обычных играх), ну короче карта ведь большая, и её надо какбы этим кругом обрезать

ЗЫ. надеюсь вы поймете очем я, а есшо лутше если знаете как это сделать
(Offline)
 
Ответить с цитированием
Старый 12.02.2007, 21:28   #7
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: 1 окно, 2 камеры

Сообщение от vlad
А если делать карту текстурой, тогда в 2Д неполучится(потомучто при повороте текстуры будет ГГлючить!!), прейдется делать 3Д(ну там спрайт вроде самый простой вариант), Так вот как сделать чтобы в углу показывался круг(небольшой, ну как в обычных играх), ну короче карта ведь большая, и её надо какбы этим кругом обрезать

ЗЫ. надеюсь вы поймете очем я, а есшо лутше если знаете как это сделать
ну... если честно разговор не шел о карте...

но коль надо делать карту то самый простой вариант что приходит в голову:

Ты грузишь террейн из текстурки, так?. Берешь эту же текстуру и накладываешь на куб (короче любой мех, припивоченный к камере), сверху на него же альфа+бленд текстуру кружка = получаем круглую карту в углу экрана. Потом привязываем ее к осям (чтоб крутилась) и передаем координаты (чтобы скроллилась при перемещении)
(Offline)
 
Ответить с цитированием
Старый 15.02.2007, 16:07   #8
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: 1 окно, 2 камеры

дабы закрыть тему - код, нашел в семплах у себя.

Graphics3D 800,600
SetBuffer BackBuffer()

cone=CreateCone(6)
cube=CreateCube()

EntityColor cube,255,128,128
EntityColor cone,128,128,64

effectlight=CreateLight(1)
PositionEntity effectlight,40,30,40
PointEntity effectlight,cube

topcam=CreateCamera()
CameraViewport topcam,0,300,400,300
CameraProjMode topcam,2

sidecam=CreateCamera()
CameraViewport sidecam,0,0,400,300
CameraProjMode sidecam,2

frontcam=CreateCamera()
CameraViewport frontcam,400,0,400,300
CameraProjMode frontcam,2

rendercam=CreateCamera()
CameraViewport rendercam,400,300,400,300

PositionEntity cone,50,0,50

PositionEntity cube,52,0,50

PositionEntity topcam, 51,10,50
PositionEntity sidecam, 61,0,50
PositionEntity frontcam, 51,0,60
PositionEntity rendercam, 56,5,55

PointEntity topcam,cone
TurnEntity topcam,0,0,180
PointEntity sidecam,cone
PointEntity frontcam,cone
PointEntity rendercam,cone

EntityParent topcam,cone
EntityParent sidecam,cone
EntityParent frontcam,cone
EntityParent rendercam,cone

While Not KeyDown(1)

TranslateEntity cone,(KeyDown(208)-KeyDown(200)),0,0
TranslateEntity cone,0,0,(KeyDown(203)-KeyDown(205))
WireFrame True

HideEntity rendercam
ShowEntity sidecam
ShowEntity topcam
ShowEntity frontcam

RenderWorld
Flip

WireFrame False

ShowEntity rendercam
HideEntity sidecam
HideEntity topcam
HideEntity frontcam

RenderWorld
Flip

Wend

и для vlad'а примерчик карты в углу....

Graphics3D 800,600
SetBuffer BackBuffer()


Global camera = CreateCamera()
CameraRange camera,0.1,1000

Global light = CreateLight()

Global radar = CreateSphere(5)
EntityParent radar,camera
ScaleEntity radar,0.2,0.2,0.01
PositionEntity radar,0.7,-0.3,1
EntityFX radar,1
EntityColor radar,100,100,255

Global player_radar_ent = CreateSphere()
EntityParent player_radar_ent,radar
ScaleEntity player_radar_ent,0.05,0.05,0.05
PositionEntity player_radar_ent,0,0,-2
EntityFX player_radar_ent,1

Type entity
	Field ent
	Field radar_ent
	Field e_type ; 0 = player, 1 = enemy
End Type


For loop = 1 To 20
	e.entity = New entity
	e\ent = CreateCube()
	e\radar_ent = CreateCube()
	EntityParent e\radar_ent,radar
	EntityFX e\radar_ent,1
	ScaleEntity e\radar_ent,0.05,0.05,0.05
	PositionEntity e\ent,Rnd(-20,20),0,Rnd(-20,20)
	HideEntity e\radar_ent
Next



While Not KeyHit(1)



	If KeyDown(200) Then MoveEntity camera,0,0,0.1
	If KeyDown(208) Then MoveEntity camera,0,0,-0.1
	If KeyDown(203) Then TurnEntity camera,0,1,0
	If KeyDown(205) Then TurnEntity camera,0,-1,0
	
	updateradar()
	UpdateWorld
	RenderWorld
	Flip
Wend
End

Function updateradar()

	For e.entity = Each entity
		If EntityDistance#(e\ent,camera) < 10 Then
			ShowEntity e\radar_ent
			x_dif# = EntityX(e\ent,True) - EntityX(camera,True)
			z_dif# = EntityZ(e\ent,True) - EntityZ(camera,True)
			PositionEntity e\radar_ent,x_dif/10,z_dif/10,-1
		Else
			HideEntity e\radar_ent
		End If
	Next
	
End Function
(Offline)
 
Ответить с цитированием
Старый 16.02.2007, 01:38   #9
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: 1 окно, 2 камеры

собсно можно и две текстуры на объект наложить.
нижнюю карту
верхнюю - круг, с блендом 2.
а потом PositionTexture нижнюю.
хотя сам не пробовал, но должно работать. 2 текстуры аппаратно поддерживают почти все видюхи (даже моя).
(Offline)
 
Ответить с цитированием
Старый 18.02.2007, 01:14   #10
Chuma
ПроЭктировщик
 
Регистрация: 23.11.2006
Сообщений: 130
Написано 3 полезных сообщений
(для 35 пользователей)
Re: 1 окно, 2 камеры

Во - вообще 1 в 1....
AppTitle "Minimap" 

Dim GFX(3) 
   GFX(0) = 800 
   GFX(1) = 600 
   GFX(2) = 16 
   GFX(3) = 1 
       
Graphics3D GFX(0),GFX(1),GFX(2),GFX(3) 
SetBuffer BackBuffer() 

Global FPS = MilliSecs() 
Global player = CreateSphere() 
   PositionEntity player,0,2,0 
Global cam1p = CreatePivot(Player) 
   TurnEntity cam1p,30,0,0 
Global cam1 = CreateCamera(cam1p) 
   MoveEntity cam1,0,0,-5 
Global l1 = CreateLight(cam1) 
Global Boden = CreatePlane() 
Global Boden_tex = CreateTexture(16,16) 
   SetBuffer TextureBuffer(Boden_tex) : Color 155,155,155 : Rect 0,0,16,16 : Color 255,0,0 : Rect 4,4,8,8 : Line 0,0,15,15 : Line 0,15,15,0 : Color 0,0,0 : Rect 0,0,16,16,0 : SetBuffer BackBuffer() 
   ScaleTexture Boden_tex,8,8 
   EntityTexture Boden,Boden_tex 
    
;-man ben?igt fr diesen abschnitt die Media-datein-------- 
;-die man im Samples Order "/castle/castle" finden---------- 
;-diese einfach in einen "media"-order speichern und-------- 
;-den im Order abspeichern in dem sich diese Datei befindet- 
Global world = CreateCone();  LoadMesh("media/castle1.x") 
   ScaleEntity world,0.2,0.2,0.2 
   PositionEntity world,0,-0.5,0 
    
   ScaleEntity player,2,2,2 
   PositionEntity player,0,2,-30 
    
   EntityType player,1 
   EntityType world,2 
   EntityType Boden,3 
   EntityRadius player,2 
   Collisions 1,2,2,3 
   Collisions 1,3,2,3 
;-In der Hauptschleife folgt ein 2.Teil den man nicht------ 
;-ben?igt wenn man die Media-Dateien nicht haben---------- 

Const minimap_size = 250 
Global minimap = CreateImage(minimap_size,minimap_size) : MaskImage minimap,10,20,30 
Global minimap_cam = CreateCamera() 
   CameraViewport minimap_cam,GFX(0)-minimap_size,0,minimap_size,minimap_size 
Global minimap_alpha = CreateImage(minimap_size,minimap_size) : MaskImage minimap_alpha,0,0,255 
   SetBuffer ImageBuffer(minimap_alpha) : Color 10,20,30 : Rect 0,0,minimap_size,minimap_size : Color 0,0,255 : Oval 0,0,minimap_size,minimap_size : Color 255,0,0 : Oval 0,0,minimap_size,minimap_size,0 : Oval 1,1,minimap_size-2,minimap_size-2,0 : Color 0,0,0 : Oval Minimap_size/2-4,minimap_size/2-4,8,8 : Rect minimap_size/2-2,minimap_size/2-7,4,3 : SetBuffer BackBuffer() 

Repeat 

   If KeyDown(17) Then MoveEntity Player,0,0,+0.5 
   If KeyDown(31) Then MoveEntity Player,0,0,-0.5 
   If KeyDown(30) Then MoveEntity Player,-0.5,0,0 
   If KeyDown(32) Then MoveEntity Player,+0.5,0,0 
    
   PositionEntity minimap_cam,EntityX(player),100,EntityZ(player) 
   RotateEntity minimap_cam,90,EntityYaw(player),EntityRoll(player) 

;-2.Teil l?chen wer keine Media-Datein will- 
;-forsetzun von eben------------------------- 
   PositionEntity player,EntityX(player),EntityY(player)-0.2,EntityZ(player) 
    
   mxs = MouseXSpeed() 
   mys = MouseYSpeed() 
    
   TurnEntity player,0,-mxs,0 
   TurnEntity cam1p,mys,0,0 
   MoveMouse GFX(0)/2,GFX(1)/2 
   MouseXSpeed() : MouseYSpeed() 
;-------------------------------------------- 


UpdateWorld 

   EntityOrder minimap_cam,-1 
   EntityOrder player,1 
RenderWorld 
   CopyRect GFX(0)-minimap_size,0,minimap_size,minimap_size,0,0,BackBuffer(),ImageBuffer(minimap) 
   SetBuffer ImageBuffer(minimap) : DrawImage minimap_alpha,0,0 : SetBuffer BackBuffer() 
   EntityOrder minimap_cam,1 
   EntityOrder player,0 
RenderWorld 
    
   DrawImage minimap,10,10 
   Color 255,255,255 
      Text 10,GFX(1)-30,"TrisRendered() = " + TrisRendered() 
      Text 10,GFX(1)-15,"F(rames)P(er)S(econd) = " + FPS_return() 
    

Flip 
Until KeyHit(1) 

End 

Function FPS_return() 
    
   If FPS < MilliSecs() Then currentframes = 1000/(MilliSecs() - FPS) 
   FPS = MilliSecs() 
   Return currentframes 

End Function
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
окно? Coks PureBasic 1 22.11.2009 12:36
Тёрки Pro-текстурщегов и тех кто мимо проходил Organizm(-: Болтовня 54 11.06.2009 01:01
Окно:Необычное}*HELP* zheland 2D-программирование 1 08.12.2007 23:40
Окно инвентаря как в Diablo avel Blitz3D 2 17.11.2006 01:32


Часовой пояс GMT +4, время: 12:22.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com