| Zobrazit předchozí téma :: Zobrazit následující téma |
| Autor |
Zpráva |
upir
Založen: 30. 07. 2007 Příspěvky: 31
|
Zaslal: 4. duben 2010, 21:50:58 Předmět: |
|
|
Díky za odpověď, tu interpolaci celkem chápu, jde mi spíš o to uložení dat.
Jak už jsem psal, animace má ve výsledku třeba 3000 framů, a já mám třeba 100 hodnot v různých pozicích pro otáčkoměr (pro rychlost je to ještě méně a pro zařazený rychlostní stupeň třeba jen 10) - přijde mi tím pádem zbytečné mít pole o velikosti 3000 prvků, když tam mám uloženo jenom 100 hodnot.
Doteď mi to celkem vyhovovalo, protože jsem na začátku ty zbylé hodnoty dopočítal, dovyplnil všechny položky pole a pak za běhu už jenom četl ty hodnoty z paměti. Teď ale když budu chtít hodnotu v bodě 34.25, tak to stejně budu muset vypočítat, tak jako tak, protože v tomhle bodě ta hodnota stejně uložená v paměti nebude.
Jde jen o to, že mě opravdu nenapadá, jak to nějak úhledně a pěkně řešit - a na netu jsem taky zatím nic nenašel, přestože si myslím, že programovat takové ukládání animace v keyframes muselo už aspoň milion lidí... |
|
| Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 6. duben 2010, 09:02:20 Předmět: |
|
|
Dobře, máš teda animaci délky "3000", ale keyframů máš 100, takže asi takhle:
| kód: |
// frame X z 3000
float t = ((float) X / 3000.0f); //na 0..1
int frameX = round(t * 99); // na 0..99 |
Tohle ale funguje jen když máš ty keyframy v čase vzdálený stejně daleko od sebe. Pokud ne, tak bys mohl třeba začít přehrávat animaci - tzn. k času přičítat deltu času a pokud by čas přelezl časovou pozici dalšího keyframu, tak počítat s tímto keyframem a s o jedno dalším (K a K+1).
Pak by ta interpolace byla asi takováhle:
| kód: |
// pseudo kod
t = (time - time_of(K)) / (time_of(K+1) - time_of(K))
value = value_of(K) + (value_of(K+1) - value_of(K)) * t |
_________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
| Návrat nahoru |
|
 |
|
|
Nemůžete odesílat nové téma do tohoto fóra Nemůžete odpovídat na témata v tomto fóru Nemůžete upravovat své příspěvky v tomto fóru Nemůžete mazat své příspěvky v tomto fóru Nemůžete hlasovat v tomto fóru
|
Powered by phpBB © 2001, 2005 phpBB Group
Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna