View previous topic :: View next topic |
Author |
Message |
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Nov 21, 2007 8:07 pm Post subject: |
|
cerams, ka viņš iedos sourci, citādāk es nesaprotu vairs, kāpēc man nesanāk.. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Nov 21, 2007 9:32 pm Post subject: |
|
Iepriekš sourci neliku, jo domāju, ka ir acīmredzami kādam kodam jābūt. Tak visu laiku to rakstīju, ko es darīju - tik piereizināju speedupu. Viss pārējais fizikas updeits ir visparastākais fizikas dziņa updeits ar fiksētu laika soli. Tajā gaffer lapā tas aprakstīts: http://www.gaffer.org/game-physics/fix-your-timestep/ Man tik bija slinkums to interpolāciju/ekstrapolāciju taisīt - ar to sanāktu gludāka un precīzāka kustība. Bet bez tās arī izskatās ok.
Anyway, reku ir source: http://paste.php.lv/6459?lang=cpp
Ja vajag visu VS2k5 projektu, to arī varu piedāvāt.
Apskaties Update dokumentāciju: http://www.box2d.org/manual.html īpaši "Simulating the World (of Box2D)" daļu. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Nov 21, 2007 10:09 pm Post subject: |
|
skatos, ka tomēr nevis samaini to ciparu, bet dari kā es - vairākas reizes izsauc Step funkciju!
Code: |
while (delta > STEP)
{
world.Step(STEP, 10);
delta -= STEP;
}
|
citādāk es biju domājis, ka tu vienreiz izsauci Step funkciju ar citādāku "STEP" mainīgo.. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Nov 21, 2007 10:22 pm Post subject: |
|
Un ko tad tu pats iepriekš teici?
Quote: | ar to, ka, nevis es palielinu timestepu, bet gan updeita call'u skaitu |
orly? Tagad saki, ka vienreiz.... Nekādīgi tevi nevar saprast te vairs!
Citā topikā jau tika izrunāts, ka uzsaktu, ka nepieciešams atdalīt fizikas "freimreitu" no renderēšanas "freimreita". Pret ko tu visu laiku iebildi, ka tā nav pareizi. Un kā tev liekas tagad, joprojām tas ir nepareizi? |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Wed Nov 21, 2007 10:32 pm Post subject: |
|
Ieposto jau projektu, man slinkums likt visu tur |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Nov 21, 2007 10:41 pm Post subject: |
|
http://yy.lv/download.php?f=81897
Kompilēt tikai Release konfigurāciju, Debug konfigurāciju neesmu ne sakonfigurējis, ne arī to box2d un glfw uzbuildojis ar debug runtaimu. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Wed Nov 21, 2007 11:01 pm Post subject: |
|
bubu wrote: | Un ko tad tu pats iepriekš teici?
Quote: | ar to, ka, nevis es palielinu timestepu, bet gan updeita call'u skaitu |
orly? Tagad saki, ka vienreiz.... Nekādīgi tevi nevar saprast te vairs!
| nu to es visu laiku saku!
nekad neesmu teicis, ka ar viena updeita callu man kkas būtu izdevies.. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Wed Nov 21, 2007 11:53 pm Post subject: |
|
Laikam nevareesu nokompileet projektu jo esmu instaleejot studijai servisa paku, sabojaajis to xD
Anyway ideja:
Code: |
static float gameSpeed = 2.0f;
b2World world(worldAABB, b2Vec2(0.0f, -9.81f * gameSpeed), true);
obj.box.friction = 0.3f * gameSpeed;
objects[i].body->ApplyImpulse(b2Vec2(fx * gameSpeed, fy * gameSpeed), objects[i].body->GetWorldPoint(b2Vec2(0.0f, 0.0f)));
|
|
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Nov 22, 2007 12:13 am Post subject: |
|
A kāpēc tā būtu jādara, ja visdabiskākajā veidā kā paātrināt laiku - tīri pamainot tā vērtību, kas tiek padota fizikas dzinim, pie tam tikai vienā vietā kodā - viss korekti paātrinās?
Un pie tam tava metode nemaz nav tik vienkārša - daudzi lielumi nav lineāri atkarīgi no laika. Citi ir apgriezti atkarīgi, citi atkal kvadrātā - kā spēks piemēram F=ma = [kg*m/s/s] - sekunde kvadrātā tur ir. Tātad būtu nevis -9.81f * gameSpeed, bet gan -9.81f * gameSpeed * gameSpeed. Savukārt berzes koeficients vispār nav atkarīgs no laika, tas nav jāreizina ar gameSpeed. Ķēpa tur sanāk visus fizikālos lielumus korekti skeilot. |
|
Back to top |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: Thu Nov 22, 2007 1:14 am Post subject: |
|
Bet ja dzinim jau ieksaa nav taada lieta, tad naaksies, savaadaaka veida nav taapataas, izskaukt 5x peec kaartas ir vnk smielkiiga performances zagsana. Un saa ir jaadara tikai tapeec, ka dzinim, laikam, nemaz nevar piereguleet update intervaalu, jaaeditee source. |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Thu Nov 22, 2007 1:59 am Post subject: |
|
Kāpēc lai fizikas dzinim iekšā būtu kautkāda šāda lieta? Neesmu nevienu tādu redzējis.
Well katrā ziņā šis viss ir performance vs precizitāte treidofs. Jo lielāki ātrumi, jo nestabilākas sistēmas sanāks, tas dabiski. Nevar uz prasta PēCē simulēt fiziku 1000x pāatrinātu :)
Bet, ja nevar vispār updeita intervālu, tad tas vispār ir dīvains dzinis. No tāda pa gabalu būtu jāturas, imho. Box2D gan var visu pieregulēt. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Nov 22, 2007 4:16 pm Post subject: |
|
Box2D labs man!
bet, ja nevar updeita intervālu pieregulēt, un ja ir dziņa source, tad viss ir labojams _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
|