|
3D-программирование Вопросы, касающиеся программирования 3D мира |
30.04.2008, 10:53
|
#1
|
Оператор ЭВМ
Регистрация: 03.05.2007
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Тормоза при загрузке из AnimSeq
Косяк, Когда чел стоит на месте всё хорошо, но иногда, когда нажимаю вперёд и он начинает двигаться вперёд вместе с запуском анимации из загруженного AnimSeq, то FPS Падает слишком быстро. До 2о-30 FPS.
Может я не там обновляю модель чела в игре?
|
(Offline)
|
|
30.04.2008, 11:24
|
#2
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Тормоза при загрузке из AnimSeq
мб ты грузишь анимацию в цикле? хотелось бы видеть кусок кода, где возможна ошибка, телепаты как всегда на отдыхе.
|
(Offline)
|
|
30.04.2008, 16:14
|
#3
|
Оператор ЭВМ
Регистрация: 03.05.2007
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Тормоза при загрузке из AnimSeq
Ну, вот он код главного файла:
Graphics3D 1024,768,32,1
Include "Includes.bb" ; Подгружаем нужные библиотеки
SetBuffer BackBuffer()
GUIw512_Init(1); Меню
Black_Init(); Видео
Black_SetSound(1); глобальный уровень звука в видео
SetFont LoadFont ("Tahoma",16); Шрифт программы
Include "CreateMenu.bb";//Создаюм окошки меню
While (1);//Обновляем всю программу
If KeyHit (1)
GState = 0
EndIf
;==========- UpDate GUI
Select GState; Определяем состояние программы пауза или игра
Case 0 ;//Если Пауза
PauseEkr(1) ; Пауза на видео
pxSetPause(1) ; Пауза на физику
WG_ShowElement(wim_0) ; Показать главное меню
StartDraw ;Рисуем картинку на Экране
DrawImageEx(im,0,0)
EndDraw
GUIw512_UpDate() ; Обновляем меню
DrawImage cursor,MouseX(), MouseY()
Case 1 ; Если Нажали на Старт
Select Gstarted; предыдущее состояние игры
Case 0; Если Старт
Include "new_game.bb" ; Сдесь грузим уровень и " player.player = CreatePlayer() ;Создаём Игрока "
Case 1 ; Если Продолжить // Здесь цикл обновления программы
old_time = MilliSecs ();
LimitFPS(); Ставим ограничение по FPS - 50 кадров "Не догнал как сделать нормальную интерполяцию"
Include "Upd_Game.bb" ; Сдесь функции типа UpdatePlayers()
WG_HideElement(win_opt)
WG_HideElement (win_autor)
WG_HideElement(wim_0)
FreeImageEx im
Filter_Textures()
pxSetPause(0)
End Select
End Select
Include "CheckMenu.bb";//обновляем меню
Flip 0
Include "Update.bb";//Рисуем и обновляем то что нужно
Wend
Black_CloseZ(Bl)
Black_DeInit()
End
Include "Functions.bb";// Основные функции программы
А это функция Загрузки чела в игру:
Function CreatePlayer.player()
pl.player = New player
;Создаём физ тело и материал для него
pl\body = pxBodyCreateCapsule(15, 2.5 ,45)
pxBodySetLinearDamping(pl\body, 10)
pxBodySetFrozenRot(pl\body, 1)
pxMaskSet(pl\body,3)
pl\mat = pxCreateMaterial%(); Материал на тело
pxMaterialSetDyFriction(pl\mat, 1)
pxMaterialSetToBody(pl\body, pl\mat)
;Загружаем анимированный меш игрока
pl\anim_move = LoadAnimMesh ("Media\Soviet\Soviet-Idle.3DS");anim seq 0
LoadAnimSeq pl\anim_move ,"Media\Soviet\Soviet-Move.3DS" ;anim seq 1
LoadAnimSeq pl\anim_move ,"Media\Soviet\Soviet-Move-Back.3DS" ;anim seq 3
ScaleEntity pl\anim_move, 10, 10, 10
Animate pl\anim_move,1,0.5
pl\x = 40
pl\y = 20
pl\z = 10
; Начальная позиция физ тела
pxBodySetPosition ( pl\body, pl\x,pl\y,pl\z )
pl\ray = pxCreateRay%()
;Точка обозначает тело
pl\pivot = CreatePivot(pl\anim_move)
PositionEntity pl\pivot, EntityX (pl\anim_move), EntityY (pl\anim_move)+2.5, EntityZ (pl\anim_move)-1.3
pl\camera = CreateCamera()
TurnEntity pl\Camera, 0,90,0
CameraClsColor pl\camera,20,40,45
CameraRange pl\camera,1.0,1000.0
pl\gravity = -40
Return pl
Кстати, подкиньте ктонить код интерполяции, желательно в примере
|
(Offline)
|
|
30.04.2008, 17:56
|
#4
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Тормоза при загрузке из AnimSeq
Ктож инклюды вызывает в цикле ?
Вызывай функции.
А инклюды подключаются ОДИН раз до цикла
__________________
|
(Offline)
|
|
30.04.2008, 18:39
|
#5
|
Мастер
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений (для 252 пользователей)
|
Ответ: Тормоза при загрузке из AnimSeq
Я, конечно, много повидал, но инклуды в цикле - это знаете ли, свежо!
|
(Offline)
|
|
30.04.2008, 19:01
|
#6
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Тормоза при загрузке из AnimSeq
вы народ особо не удивляйтесь. нет тут ничего удивительного, это просто неправильная блицовая терминология, надо было подключение обозвать uses или там add, но не include.
похоже на лексическое включение.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.04.2008, 19:12
|
#7
|
Оператор ЭВМ
Регистрация: 03.05.2007
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Тормоза при загрузке из AnimSeq
Скажу пару слов о моём использовании Include
1. Не всегда и не весь код срабатывает из функции,(во всяком случае у меня)
2. Ну не писать же 100 функций и описывать 100 типов в одном скрипте.
3. В Файле кода проги размером скажем 300 Кб х...кто разберётся
4. Не вижу негативных моменетов
P.S. Главное во всём знать меру
Насчёт анимации - Есть мысль что это тормоза компа, скорей всего вирусняки, базу давно не обнавлял
А инклюды подключаются ОДИН раз до цикла
|
Ну знаете ли, и любовью до свадьбы вроде как заниматься нельзя
|
(Offline)
|
|
30.04.2008, 19:46
|
#8
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Тормоза при загрузке из AnimSeq
Бу га га !
Он еще и спорит !
__________________
|
(Offline)
|
|
30.04.2008, 21:37
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Тормоза при загрузке из AnimSeq
Dstorton111, а попробовать сделать как тебе советуют люди далеко не первый год знакомые с блицом? в том числе и с пресловутым include?
|
(Offline)
|
|
30.04.2008, 22:19
|
#10
|
Оператор ЭВМ
Регистрация: 03.05.2007
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Тормоза при загрузке из AnimSeq
Ладно уж, попробую, что смогу перевду в функции.
Кстати как насчёт ИНТЕРПОЛЯЦИИ !!! Помогите хоть с ней, а то останется в переходе рядом с бомжами стоять с табличкой " Помогите исходником на прогу "
|
(Offline)
|
|
30.04.2008, 22:26
|
#11
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Тормоза при загрузке из AnimSeq
Если ты про сглаживание движения то вот:
;-Cubic Spline Interpolation-;
;[Updated] - Recursive Math Added For fastest Spline Speed Ever
;-by Chroma
;-based on a tutorial at www.gamedev.net
;The object starts at position S and is predicted ahead one second to be at 1.
;The object is then predicted to E and then time reversed one second to 2.
;The spline is then plotted from S to E based on the predicted points of 1 and 2
;and the starting And ending velocities. The object is then moved along the
;spline Until the Next packet arrives and then process starts over.
;S = starting point - time=0
;1 = predicted position after 1 sec
;2 = predicted position reversed from E after 1 sec
;E = ending point
AppTitle "Cubic Spline Interpolation"
Graphics 350,250,16,2
SetBuffer BackBuffer()
;Main Loop
While Not KeyHit(1)
Cls
;Cubic Spline Interpolation (I love those words!)
cspline(50,180,100,50,300,75,-20,-10,0,0)
Flip
Wend
End
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=;
;=Cubic Spline Interpolation=;
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=;
Function cspline(Xold,Yold,Xvelold,Yvelold,XNew=0,YNew=0,Xvelnew,Yvelnew,XAccelNew,YAccelNew,Time=3)
;Init Local Variables
Local x,y,x0,y0,x1,y1,x2,y2,x3,y3
Local a,b,c,d,e,f,g,h,t#
;Coord#1 is the current object's X,Y (or X,Z if using 3D)
Color 0,255,0
X0=Xold : Y0=Yold
Text X0-4,Y0-16,"S"
Rect X0,Y0,3,3,1
;Calc Coord#2
Color 255,255,0
X1 = X0 + XVelOld
Y1 = Y0 + YVelOld
Text X1-4,Y1-16,"1"
Rect X1,Y1,3,3,1
;Calc Coord#3 (must calc after Coord#4)
Color 200,100,0
X2=XNew + XVelNew * Time + .5 * XAccelNew * Time^2
Y2=YNew + YVelNew * Time + .5 * YAccelNew * Time^2
Text X2-4,Y2-16,"2"
Rect X2,Y2,3,3,1
;Calc Coord#4
Color 255,0,0
X3=XNew
Y3=YNew
;X3=X2 - (XVelNew + XAccelNew * Time)
;Y3=Y2 - (YVelNew + YAccelNew * Time)
Text X3-4,Y3-16,"E"
Rect X3,Y3,3,3,1
;Calc Cubic Spline Points
RecursiveMathA=3*x2
RecursiveMathB=3*x1
RecursiveMathC=6*x1
RecursiveMathD=3*x0
RecursiveMathE=3*y2
RecursiveMathF=3*y1
RecursiveMathG=6*y1
RecursiveMathH=3*y0
A = X3 - RecursiveMathA + RecursiveMathB - x0
B = RecursiveMathA - RecursiveMathC + RecursiveMathD
C = RecursiveMathB - RecursiveMathD
D = x0
E = y3 - RecursiveMathE +RecursiveMathF - y0
F = RecursiveMathE - RecursiveMathG + RecursiveMathH
G = RecursiveMathF - RecursiveMathH
H = y0
;Draw the Spline
For t#=0 To 1 Step .001
x = A*t^3 + B*t^2 + C*t + D
y = E*t^3 + F*t^2 + G*t + H
Plot x,y
Next
End Function
|
(Offline)
|
|
30.04.2008, 22:33
|
#12
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Тормоза при загрузке из AnimSeq
ненадо ничего переводить. просто вынеси инклюд за главный цикл (перед главнм циклом его поставь где нибудь, идеологически - лучше ближе к началу)
|
(Offline)
|
|
30.04.2008, 22:51
|
#13
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Тормоза при загрузке из AnimSeq
Все-таки эти tormoz'a запаланили!
|
(Offline)
|
|
30.04.2008, 23:10
|
#14
|
|
Ответ: Тормоза при загрузке из AnimSeq
Dstorton111
все инклуды нужно писать только в начале исходника
представь что если напишешь в другом месте то не скомпилируется
по крайней мере хотя бы руки выпрямляют такие вещи
|
|
|
30.04.2008, 23:23
|
#15
|
Оператор ЭВМ
Регистрация: 03.05.2007
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Тормоза при загрузке из AnimSeq
Tadeus vbmenu_register("postmenu_80416", true); Спасибо за код, постараюсь использовать его макс. эффективно, хотя пока не знаю для чего.
ИЗВИНЯЮСЬ ПЕРЕД ВСЕМИесли не так поняли, или если я ступил по незнанию.
Под словом интерполяция я имел ввиду: Когда скорость иры подстраивается под FPS, А то я поставил ограничение на 50 FPS. Но чувствую что оставлять это просто так нельзя иначе зас...у(сорри загажу) весь проект ещё на начальном этапе.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:57.
|