|
3D-программирование Вопросы, касающиеся программирования 3D мира |
14.01.2008, 23:21
|
#16
|
Бывалый
Регистрация: 04.01.2008
Адрес: Казахстан \ Талдыкорган
Сообщений: 659
Написано 170 полезных сообщений (для 509 пользователей)
|
Ответ: Грузить модели по ходу игры
грузить модели по ходу нормальное дело.
в Блиц3Д нельзя грузить объект через отдельный поток(это не излечимо)
ЗЫ\ на опыте проверял, 60к грузяться и глазом не успеешь моргнуть. но тут дело не в моделях(на счет анимации невкурсе) а текстурах, при таком методе нада обязательно юзать ДДС, да и вообще его нада обязательно юзать!
|
(Offline)
|
|
14.01.2008, 23:48
|
#17
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Грузить модели по ходу игры
avel +1
Андрюха, на этом сильно не с экономиш !!
|
(Offline)
|
|
15.01.2008, 00:28
|
#18
|
Разработчик
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений (для 122 пользователей)
|
Ответ: Грузить модели по ходу игры
ДДС - отстой, портит качество и слабо жмет пустоты..
|
(Offline)
|
|
16.01.2008, 03:22
|
#19
|
Разработчик
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений (для 53 пользователей)
|
Ответ: Грузить модели по ходу игры
А чё такое ДДС
А как пишется тег ОФФТОПА на форуме ???
|
(Offline)
|
|
16.01.2008, 04:10
|
#20
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Ответ: Грузить модели по ходу игры
.DDS - свободный к использованию графический формат. В основном заточен под DX. Под OpenGL юзать без специального загрузчика не выйдет. Формат поддерживает 1D,2D,3D, CubeMap текстуры, компрессию DXT, MipMap уровни.
А как пишется тег ОФФТОПА на форуме ???
|
Вот так: [ offtop] [ /offtop]. Только без пробелов
|
(Offline)
|
|
16.01.2008, 07:49
|
#21
|
Бывалый
Регистрация: 12.10.2006
Сообщений: 737
Написано 131 полезных сообщений (для 452 пользователей)
|
Ответ: Грузить модели по ходу игры
Raiter я с ддс форматом, вроде, знаком, но строчку
Формат поддерживает 1D,2D,3D
|
чего-то непонял... поясни.
|
(Offline)
|
|
16.01.2008, 08:45
|
#22
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Ответ: Грузить модели по ходу игры
Это была цитата. Тут имелось в виду уже дальнейшее разделение для задачи. 3Д - имелось в виду, что в качестве текстуры для модели, 2Д - рисунок, а 1Д - используется в шейдерах.
|
(Offline)
|
|
16.01.2008, 09:13
|
#23
|
|
Ответ: Грузить модели по ходу игры
Сам DDS НЕ МОЖЕТ влиять на качество картинки ВООБЩЕ, т.к. это формат хранения изображения в некотором формате. Звучит хитро, но на самом деле все просто - само изображение может быть в форматах RGB, RGBA, DXT1 и т.д., но "контейнер" в виде DDS для всех один.
По качеству может бить те же DXTn, а не DDS, но и JPG сжимает не без ухудшения картинки, т.к. тоже относится к методам сжатия с потерями. К тому же, декомпрессится DXTn быстрее JPG (хотя бы потому, что это делает сама видеокарта при семплинге), да и видео памяти занимает меньше (все потому же, что понимается видеокартой).
|
если руки кривые то все остальное читаем там же
http://www.gamedev.ru/code/forum/?id=16880
|
|
|
16.01.2008, 10:44
|
#24
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Грузить модели по ходу игры
текстура может быть одномерной, двумерной, трехмерной а такэе кубемапой.
народ, юзайте dds, его не зря придумали.
+ возможность нарисовать каждый уровень мипмапа, тоже очень полезно может быть.
+ экономится видеопамять.
+ вариант с одним битом на альфу очень хорош для всяких маск.
короче - сплошные плюсы, минус - у меня ну очень долго сохраняет фотошоп dds рисунок.
|
(Offline)
|
|
16.01.2008, 15:30
|
#25
|
Бывалый
Регистрация: 04.01.2008
Адрес: Казахстан \ Талдыкорган
Сообщений: 659
Написано 170 полезных сообщений (для 509 пользователей)
|
Ответ: Грузить модели по ходу игры
Сообщение от HolyDel
минус - у меня ну очень долго сохраняет фотошоп dds рисунок.
|
Самый большой минус это размер, но от того что его размер больше к пример jpg в 3-8 раз, скорость загрузкий больше раз в 10-20.
|
(Offline)
|
|
16.01.2008, 23:43
|
#26
|
|
Ответ: Грузить модели по ходу игры
FDsagizi
загрузка быстрее ... потому что сразу заганяется в видеокарту
а так надо пережимать в тот же dxt
|
|
|
17.01.2008, 23:58
|
#27
|
Знающий
Регистрация: 02.11.2007
Сообщений: 255
Написано 27 полезных сообщений (для 43 пользователей)
|
Re: Грузить модели по ходу игры
Вот выкладываю свой код смены и т.д оружия!
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
Type Shot
Field alpha#,num
End Type
;камера
cam=CreateCamera ()
;Пистолет МАКАРОВА
gun1=LoadAnimMesh("weapons\pm\model.b3d")
PositionEntity gun1,0,-10,0
ScaleEntity gun1,.5,.5,.5
RotateEntity gun1,-90,0,-180
LoadAnimSeq gun1, "weapons\pm\idle.b3d"
LoadAnimSeq gun1, "weapons\pm\shot.b3d"
LoadAnimSeq gun1, "weapons\pm\reload.b3d"
Animate gun1, 1,.3, 1
EntityParent gun1,cam
;Пистолет КОЛЬТ
gun2=LoadAnimMesh("weapons\colt\model.b3d")
PositionEntity gun2,0,-10,0
ScaleEntity gun2,.5,.5,.5
RotateEntity gun2,-90,0,-180
LoadAnimSeq gun2, "weapons\colt\idle.b3d"
LoadAnimSeq gun2, "weapons\colt\shot.b3d"
LoadAnimSeq gun2, "weapons\colt\reload.b3d"
Animate gun2, 1,.3, 1
EntityParent gun2,cam
;AK 47
gun3=LoadAnimMesh("weapons\ak74\model.b3d")
PositionEntity gun3,0,-10,0
ScaleEntity gun3,.5,.5,.5
RotateEntity gun3,-90,0,-180
LoadAnimSeq gun3, "weapons\ak74\idle.b3d"
LoadAnimSeq gun3, "weapons\ak74\shot.b3d"
LoadAnimSeq gun3, "weapons\ak74\reload.b3d"
Animate gun3, 1,.3, 1
HideEntity gun3
HideEntity gun3
HideEntity gun3
EntityParent gun3,cam
;Наличие оруий у игрока
gun1_pickup=1
gun2_pickup=1
gun3_pickup=1
;каоличество патронов у оружий
gun1_patron=42
gun2_patron=20
gun3_patron=96
;Патронов в обойме у оружий
gun1_magazin=12
gun2_magazin=8
gun3_magazin=30
;звуки
pistol_shot=LoadSound("shot.ogg")
reload=LoadSound("reload.ogg")
;необходимая переменная
relaod_delay_gun1=0
relaod_delay_gun2=0
relaod_delay_gun3=0
;ВЫбранное оружие
gun_select=1
While Not KeyHit(1)
MHIT=MouseHit(1)
RELOAD_KEY=KeyHit(19)
MDOWN=MouseDown(1)
;апдейт огонька
For s.shot =Each shot
s\alpha#=s\alpha#=-.001
EntityAlpha s\num,s\alpha#
If s\alpha#=<0 Then
FreeEntity s\num :Delete s
EndIf
Next
;Востановление анимации дыхания!!!
If relaod_delay_gun1=0 And relaod_delay_gun2=0 And relaod_delay_gun3=0 Then player_dblxanie=player_dblxanie+1
If player_dblxanie=>200 Then player_dblxanie=1
If player_dblxanie=190 Then Animate gun1, 1,.3, 1
If player_dblxanie=190 Then Animate gun2, 1,.3, 1
If player_dblxanie=190 Then Animate gun3, 1,.3, 1
If relaod_delay_gun1>0 Then relaod_delay_gun1=relaod_delay_gun1-1
If relaod_delay_gun2>0 Then relaod_delay_gun2=relaod_delay_gun2-1
If relaod_delay_gun3>0 Then relaod_delay_gun3=relaod_delay_gun3-1
;АПДЕЙТ ПИСТОЛЕТА(GUN1)//////////////////////////////
;перезарядка пистолета
If gun_select=1 And gun1_patron>0 And gun1_magazin=0 And RELOAD_KEY=1 And gun1_pickup=1 Then
If gun1_patron>12 Then gun1_magazin=12
If gun1_patron<12 Then
gun1_magazin=gun1_patron
gun1_patron=0
EndIf
PlaySound reload
Animate gun1, 3,.65,3
relaod_delay_gun1=140
EndIf
;стрельба из пистолета
If gun_select=1 And MHIT=1 And gun1_magazin>0 And gun1_pickup=1 And relaod_delay_gun1=0 Then
If gun1_patron>0 Then gun1_patron=gun1_patron-1
gun1_magazin=gun1_magazin-1
PlaySound pistol_shot
Animate gun1, 3,1, 2
;огонек у писотлета
s.shot = New shot
s\num=LoadSprite ("shot.jpg",1)
PositionEntity s\num,-12,-20,88
ScaleSprite s\num,20,20
RotateSprite s\num,Rnd(360)
s\alpha#=.6
EndIf
;АПДЕЙТ ПИСТОЛЕТА(GUN1)//////////////////////////////
;АПДЕЙТ ПИСТОЛЕТА(GUN2)//////////////////////////////
;перезарядка пистолета
If gun_select=2 And gun2_patron>0 And gun2_magazin=0 And RELOAD_KEY=1 And gun2_pickup=1 Then
If gun2_patron>8 Then gun2_magazin=8
If gun2_patron<8 Then
gun2_magazin=gun2_patron
gun2_patron=0
EndIf
PlaySound reload
Animate gun2, 3,.65,3
relaod_delay_gun2=110
EndIf
;стрельба из пистолета
If gun_select=2 And MHIT=1 And gun2_magazin>0 And gun2_pickup=1 And relaod_delay_gun2=0 Then
If gun2_patron>0 Then gun2_patron=gun2_patron-1
gun2_magazin=gun2_magazin-1
PlaySound pistol_shot
Animate gun2, 3,1, 2
;огонек у писотлета
s.shot = New shot
s\num=LoadSprite ("shot.jpg",1)
PositionEntity s\num,-12,-20,88
ScaleSprite s\num,20,20
RotateSprite s\num,Rnd(360)
EntityParent s\num,cam
s\alpha#=.6
EndIf
;АПДЕЙТ ПИСТОЛЕТА(GUN2)//////////////////////////////
;АПДЕЙТ АВТОМАТА(GUN3)//////////////////////////////
;ZOOM(ПРИКОЛ)!!!!!
gun3_zoom=0
gun3_zoom=MouseDown(2)
If gun_select=3 And gun3_zoom=1 Then PositionEntity gun3,5.5,-.25,-11
If gun_select=3 And gun3_zoom=0 Then PositionEntity gun3,0,-10,0
;необходимо для звука(чтоб не зациклевался)
GUN3_LOOPSOUND=GUN3_LOOPSOUND+1
If GUN3_LOOPSOUND>8 Then GUN3_LOOPSOUND=1
;перезарядка автомата
If gun_select=3 And gun3_patron>0 And gun3_magazin=0 And RELOAD_KEY=1 And gun3_pickup=1 Then
If gun3_patron>30 Then gun3_magazin=30
If gun3_patron<30 Then
gun3_magazin=gun3_patron
gun3_patron=0
EndIf
PlaySound reload
Animate gun3, 3,.55,3
relaod_delay_gun3=190
EndIf
;стрельба из автомата
If gun_select=3 And MDOWN=1 And GUN3_LOOPSOUND=1 And gun3_magazin>0 And gun3_pickup=1 And relaod_delay_gun3=0 Then
If gun3_patron>0 Then gun3_patron=gun3_patron-1
gun3_magazin=gun3_magazin-1
PlaySound pistol_shot
Animate gun3, 3,1, 2
;огонек у автомата
s.shot = New shot
s\num=LoadSprite ("shot.jpg",1)
PositionEntity s\num,-7,-19,88
ScaleSprite s\num,30,30
RotateSprite s\num,Rnd(360)
EntityParent s\num,cam
s\alpha#=.6
EndIf
;АПДЕЙТ АВТОМАТА(GUN3)//////////////////////////////
;Смена оружий
If gun_select=1 And gun1_pickup=1 Then
ShowEntity gun1
HideEntity gun2
HideEntity gun3
EndIf
If gun_select=2And gun2_pickup=1 Then
ShowEntity gun2
HideEntity gun1
HideEntity gun3
EndIf
If gun_select=3And gun3_pickup=1 Then
ShowEntity gun3
HideEntity gun1
HideEntity gun2
EndIf
If KeyHit(2)=1 Then gun_select=1
If KeyHit(3)=1 Then gun_select=2
If KeyHit(4)=1 Then gun_select=3
If KeyDown( 205 )=True Then TurnEntity cam,0,-1,0
If KeyDown( 203 )=True Then TurnEntity cam,0,1,0
If KeyDown( 208 )=True Then MoveEntity cam,0,0,-0.05
If KeyDown( 200 )=True Then MoveEntity cam,0,0,0.05
UpdateWorld
RenderWorld
;ТЕКСТ
If gun_select=1 Then Text 10,500,"выбранное оружие: МАКАРОВ"
If gun_select=1 Then
Text 10,530,"патронов:"+gun1_magazin+"/"+gun1_patron
EndIf
If gun_select=2 Then Text 10,500,"выбранное оружие: КОЛЬТ"
If gun_select=2 Then
Text 10,530,"патронов:"+gun2_magazin+"/"+gun2_patron
EndIf
If gun_select=3 Then Text 10,500,"выбранное оружие: КАЛАШ"
If gun_select=3 Then
Text 10,530,"патронов:"+gun3_magazin+"/"+gun3_patron
EndIf
Text 270,260,"Weapon module special for project - ЗОНА ОТЧУЖДЕНИЯ"
Flip
Wend
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:09.
|