forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Проблема с PhysX (http://forum.boolean.name/showthread.php?t=4708)

Trilliput 09.10.2007 21:06

Проблема с PhysX
 
Решил прикрутить дельта-тайминг, возникла пробема: при использовании дельты в функции pxRenderPhysic(delta_t,0) исчезают, в моем случае, модели колес у машины. Дельта на моем компе 15-17, если подставить их в функцию то все работает.
Код:


If atime=0 atime=MilliSecs()
anew_time=MilliSecs()
delta_t=anew_time-atime
atime=anew_time
pxRenderPhysic(delta_t,0)
pxBodySetEntity(model, car_body)
pxWheelSetEntity(wheelFR,car_tireFR)
pxWheelSetEntity(wheelFL,car_tireFL)
pxWheelSetEntity(wheelBR,car_tireBR)
pxWheelSetEntity(wheelBL,car_tireBL)


tormoz 09.10.2007 22:42

Re: Проблема с PhysX
 
Угу.
Нельзя использовать для физикса произвольные значения.
Кроме пропадания ентити еще наблюдается дергание, мерцание и другие баги.
Используй опробованные значения : 30, 60.
Ребята из Агеи чего то намудрили...

Render 10.10.2007 01:33

Re: Проблема с PhysX
 
Вообщето можно. Но там нужно чётко следить за количеством ФПС, убрать все вертикальные синхронизации. И ещё что то, у меня было как то получилось. Да и в Михаила вроде тоже с плавающим дельта таймом работает. Но, я бы всё равно рекомендовал бы юзать фиксированый, а то можно нарватся на кучу нежелательных эфектов.

Trilliput 10.10.2007 08:13

Re: Проблема с PhysX
 
Блин тогда как сделать контроль фпс? Если использовать 30 или 60 то это не гарантирует 30 или 60 фпс.

jimon 10.10.2007 08:53

Re: Проблема с PhysX
 
Они же вообще советовали обновление physx в отдельный поток вынести
и там видимо вызывать по таймеру

moka 10.10.2007 11:18

Re: Проблема с PhysX
 
Сделать синхронизацию, стабилизирующую UPS, в той части и обновлять физику, будет стабильно.
Вот кодик, думаю всё понятно:
Цитата:

Const FPS=60
period=1000/FPS
time=MilliSecs()-period
Repeat
Repeat
elapsed=MilliSecs()-time
Until elapsed
ticks=elapsed/period
tween#=Float(elapsed Mod period)/Float(period)
For k=1 To ticks
time=time+period

; Тут логика

If KeyHit(1) End
UpdateWorld
Next
; Тут рендеры, кубемапы, тени и т.п.
RenderWorld
; Тут 2Д
Flip 0
Forever
Стабильно и надёжно.

Trilliput 10.10.2007 16:29

Re: Проблема с PhysX
 
попробуем.
Впрос:
If KeyHit(1) End - это всмысле нажимаем Esc и ппц программе?

moka 10.10.2007 16:38

Re: Проблема с PhysX
 
Угу ;)

ЛысыЙ_Чук-Иванчук 10.10.2007 17:37

Re: Проблема с PhysX
 
Тот код который выложил Мока просто супер!!!!! некаких там дельтатаймов, и хрени всякой!!! пашет на ура(правда я его взял из примера Ашадоу)!!! но суть такаяже!

Trilliput 10.10.2007 17:59

Re: Проблема с PhysX
 
так понимаю что писать обновление мира (те общет физ движков) надо около UpdateWorld, вся графика у RenderWorld()?

moka 10.10.2007 18:03

Re: Проблема с PhysX
 
Ну там 2 коммента за себя говорят. ;) Графа между Next и RenderWorld. А 2д графа перед Flip.
Этот синхронизатор вообще из стандартного IDE в тамплетаз лежит ;)

tormoz 11.10.2007 05:26

Re: Проблема с PhysX
 
У этого синхронизатора есть серъезные недостатки: если игра идет на "границе" заданного фпс, возникают очень неприятные рывки и задержки.

Trilliput 11.10.2007 09:20

Re: Проблема с PhysX
 
Есть еще какиенибудь варианты?

И что такое отдельный поток? И как его организовать на Blitz?

moka 11.10.2007 13:33

Re: Проблема с PhysX
 
tormoz, в стандартном твиининг стоит, его нада убрать и будет ок.

tormoz 11.10.2007 16:54

Re: Проблема с PhysX
 
Не будет


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot