|
Xors3D Графический движок с поддержкой DirectX9 |
08.07.2010, 06:38
|
#1
|
Оператор ЭВМ
Регистрация: 09.06.2010
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
синхронизация физики Bullet
Есть какой способ синхронизировать физику (чтобы скорость движения объектов не зависела от фпс)?
|
(Offline)
|
|
08.07.2010, 10:25
|
#2
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: синхронизация физики Bullet
С этой физикой неработал, но обычно функция обновления физики принмает в качестве параметра или прошедшее с прошлого вызова время, или коэффициент замедления/ускорения.
__________________
|
(Offline)
|
|
08.07.2010, 10:28
|
#3
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: синхронизация физики Bullet
Неужели они не реализовали это внутри движка?
Если не реализовали тогда нах такую физику вобще.
И это мегалол.
|
(Offline)
|
|
08.07.2010, 11:02
|
#4
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: синхронизация физики Bullet
Мегалол это Bullet к котому не удосужились хоть какую-то справку написать.
Однако, синхронизация есть. Только она не работает на уровне самого буллета (ложил он большой и толстый на получаемую дельту времени). Разбираться какова хера пока некогда.
|
(Offline)
|
|
08.07.2010, 13:35
|
#5
|
|
Ответ: синхронизация физики Bullet
Дык с чего там должна быть внутренняя синхронизация ? вызывать симуляцию каждый кадр это совсем не обязательное условие, к примеру на iphone прога вообще свернется и что физ. двиг будет делать ? правьте входящую дельту и включайте vsync
|
|
|
08.07.2010, 13:45
|
#6
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: синхронизация физики Bullet
Внутренняя синхронизация где? В Bullet ее нет (да ее ни в одном физ. движне нет), но при симулации он получает дельту времени рассчитанную пользователем, в нашем случае - движком. Однако, хоть что ему передавай, результат одинаковый и напрямую зависит от ФПС (я прям константы разные сидел вбивал один хер, что самое ужасное - быстрее 60 FPS по сорцам самого Bullet расчет идти не должен). Где проблема? А хер ее знает, надо рыть исходники глубже (а комментированием кода Эрвин занимался так же как и документацией - почти нету нифига).
В общем будет время, будем курить, сейчас есть занятия поважнее.
|
(Offline)
|
|
08.07.2010, 20:40
|
#7
|
Оператор ЭВМ
Регистрация: 09.06.2010
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: синхронизация физики Bullet
Ясненько. Ну, надеюсь, решение всетаки найдется.
|
(Offline)
|
|
08.07.2010, 22:15
|
#8
|
Оператор ЭВМ
Регистрация: 09.06.2010
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: синхронизация физики Bullet
Knightmare, ты об этом говорил: btDiscreteDynamicsWorld::stepSimulation(deltaTime) ;?
Наткнулся на форуме www.bulletphysics.org
|
(Offline)
|
|
09.07.2010, 06:23
|
#9
|
Оператор ЭВМ
Регистрация: 18.05.2009
Адрес: РОССИЯ
Сообщений: 37
Написано 9 полезных сообщений (для 30 пользователей)
|
Ответ: синхронизация физики Bullet
Мегалол это Bullet к котому не удосужились хоть какую-то справку написать.
|
А вот интересно , почему решили использовать bullet ? Почему не другой физ. двиг ?
__________________
|
(Offline)
|
|
09.07.2010, 08:53
|
#10
|
Бывалый
Регистрация: 04.01.2008
Адрес: Казахстан \ Талдыкорган
Сообщений: 659
Написано 170 полезных сообщений (для 509 пользователей)
|
Ответ: синхронизация физики Bullet
Сообщение от =MAK$=
А вот интересно , почему решили использовать bullet ? Почему не другой физ. двиг ?
|
Кросс плотформа, сурсы, хорош понятен - развивается... И вроде как юзали его в ГТА 4 ( для симуляции общей физики - т.е. не людей )
В Astana Racer - e тоже булет, и юзаеться давно известная фича с прогоном логики( гдет есть статья от джокера )...
От меня же код!
// Глобально
int FPS = 35;
float period =1000.0/ FPS;
int elapsed=0;
int Ticks=0;
float tween=0;
int Time=0;
// В обновлении
while (true) {
elapsed = MilliSecs() - Time;
if (elapsed)
break;
}
Ticks = elapsed / period;
if (Ticks > 5)
Ticks = 4;
for (int k = 0; k < Ticks; k++) {
Time = Time + period;
//-Тут крутим логику и физику
}
///Сдесь рендер...
|
ЗЫ\ С таким такой штукой, игра продолжает быть играбельной при 13 фпс!
__________________
Жизнь как говориться игра- делать игры моя профессия(с)
Программирование, это религия! Её нужно исповедовать.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.07.2010, 01:12
|
#11
|
Оператор ЭВМ
Регистрация: 09.06.2010
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: синхронизация физики Bullet
Ну тогда нужен xCaptureWorld (которого нет )
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:25.
|