А почему никто не сказал, что то как происходит вызов функции Advance и то как определяеться временной интервал приводит к хорошей десинхронизации?
IPSer
Да, абсолютно с тобой согласен. Отличительная черта мужиков - зацикленность на одной волне :) Однако, зато с логикой как правило, у мужиков лучше.
да вы запарили, ребята - женщин надо беречь и уважать, всячески холить и лелеять, тем более женщин из геймдева. давайте за честную критику. много из того, что было сказано - было сказано в тему, еще большее - не в тему. Статья для начинающих, ежу, понятно, так что, товарищи "профисионалы" (и те, кто себя им считает), молчите в тряпочку :о)
пусть молодежь говорит, они - целевая аудитория.
Кристине за статью - спасибо. Молодец, без вариантов, что нашла время написать.
Engine
А на эту тему поподробней можно?
Статья вполне приличная, а судя по народу который тусит на форуме, половина и такого не напишет :P
Тем более писала девушка :)
Я сам недавно заинтересовался физ.движками, да и для токамака написал простенький примерчик,
юзая при этом только сэмплы из SDK и их мало-полезные доки, что несколько раздражало...
Потом поставил Ньютон да сразу потёр, т.к. во всех примерах наблюдаются явный подтормоз,
правда доки были уже получше, но всё равно фиговые :)
Потом скомпилил и поставил ODE, доки понравились, но как-то не очень понравился сам движок по себе, так
что-то и не разобрался.
Потом ставил НоводеХ и офигел :) ньютон со всеми остальными явно подсасывает, особенно по части описания и примеров.
К сожалению для НоводеХа ничего не успел, т.к. слетела Partition Table и в данный момент занимаюсь её восстановлением :D
Ну и чуток на счет статейки:
>>t = pCubes[i]->GetTransform();
>>....
>>matrix[0] = t.rot[0][0];
>>....
>>matrix[15] = 1.0f;
>>glPushMatrix();
>>glMultMatrixf(matrix);
изврат! Можно ведь так, если не ошибаюсь: glMultMatrix((float*)pCubes->GetTransform());
а то в статье это заняло наверно самую большую её часть :)
Самое странное что именно так делалось в примерах, а если человек писал это дело сам,
то наверно он смотрел хоть куда-то... интерестно куда.
зы токо не пинайте....
gvm
>>Потом ставил НоводеХ и офигел :) ньютон со всеми остальными явно подсасывает, особенно по части описания и примеров.
нашел что сравнить :) коммерческий движок с движком, который пишется по выходным под пиво
Neonic
>А на эту тему поподробней можно?
void UpdateObjects() { static float oldElapsed; float newElapsed = GetElapsedTime( ); if ( oldElapsed != 0.0f) { // проверяем отклонение на 20% выше и ниже (120% и 80%) if ( newElapsed < 0.8f * oldElapsed) newElapsed = 0.8f * oldElapsed; if ( newElapsed > 1.2f * oldElapsed) newElapsed = 1.2f * oldElapsed; // на 1/45-ю секунды if ( newElapsed > 1.0f/45.0f) newElapsed = 1.0f/45.0f; } oldElapsed = newElapsed; pSim->Advance( newElapsed); }
Если FPS 200 - Tokamak будет думать что FPS равен 72 кадрам в секунду (+20% к 60 кадрам в секунду),
потому как там стоит условие, проверяющее интервал времени между кадрами на то, больше ли оно
значения на 20% большего чем 60 кадров.
Если FPS 20 - Tokamak будет думать что FPS равен 48 кадрам в секнду (-20% к 60 кадрам в секунду)...
По той-же причине.
Следовательно, Tokamak не будет просчитывать движения точно пропорционально текущему FPS.
Я бы предложил ограничить FPS на уровне 60 кадров в секунду и Tokamak'у говорить что время
между кадрами равно 1.0f / 60.0f - очень стабильное решение для всех физ. движков.
Проверено на своём опыте - юзал все перечисленные в топике движки и проверял стабильность каждого
опытными путями в самых различных условиях работы.
Клевая статья. Руль. Давно таких небыло.
Насчет отрисовки лишнее но никогда не мешает вспомнить что у нас внутри движка.
Хорошая статья. Автору большое спасибо от новичка!
Люди, помогите, как бы это все под c# заюзать ([DLLImport] - слишком муторно =()
NaTTs
наверно больше никак, кто будет етот Tokamak переписывать под другие языки, когда у них сайт-то и то тупой
Тогда может кто подскажет физический движок выполненный в виде com компонента, или Managed библиотеки классов(C#, managed c++)
Такой вопрос, возможно ли в Tokamak сымитировать вращение тела, те силы, которые возникают при нем.
Например физику гирокомпаса???
у кого-нибудь примеры работы tokamak с использованием convex есть?
или описание хоть какое-нибудь...
в хелпе по работе с convex телами ни слова...
поддерживается ли обработка convex-геометрии для animated?
Кристина молодец, вот только у нее одна ошибочка, когда она значения матрицы перегоняет из Tokamaka она копирует строки матрицы на места столбцов,
в результате кубики вращаюца неправильно...
в статье с РегДоллами все сделано правильно
Тема в архиве.