.[ ČeskéHry.cz ].
c++ 2d animace

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
kidd.sadam



Založen: 11. 06. 2009
Příspěvky: 18

PříspěvekZaslal: 10. červenec 2009, 18:06:44    Předmět: c++ 2d animace Odpovědět s citátem

Zdravím,
jsem zde na foru nový. V dnešní době jsem pouze Java programátor (cca 1 a 1/2 roku praxe) a chtěl bych začít v C++ nějakou jednoduchou gamesku. Chtěl bych se naučit i třeba základy DirectX, atd..
Zajímalo by mě, v čem by bylo nejlepší (a nejjednodušší ale zároveň i "elegantní") udělat animaci postavy (panáčka) Smile ve 2D. Napadlo mě použít obrázek typu *.gif, ale nevím, jestli by to šlo, a jestli by to taky bylo elegantní. Koukal jsem zde na foru, ale podobný thread jsem zatím nenašel. Tak by mě zajímalo, jaké jsou možnosti a výhody/nevýhody.

Díky moc,
kidd.sadam
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 10. červenec 2009, 18:17:47    Předmět: Odpovědět s citátem

Pokud jde o uložení série obrázků, tak lepší než jeden gif je série očíslovaných png obrázků. Snáz se provádí změna jednoho snímku a není potřeba používat speciální software pro animaci gifů. Navíc je formát png otevřený a nezatížený nějakými licenčními problémy.

Z hlediska vykreslování 2D grafiky jsou dnešní běžné počítače sra*ky, a proto se spousta programátorů uchyluje ke zneužití 3D API i pro 2D grafiku. Tím se dá celkem zakrýt fakt, že CPU je slabý a k ničemu.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 10. červenec 2009, 18:40:47    Předmět: Odpovědět s citátem

možná spíš bych doporučil OpenGL, alespoň základy v tom jsou jednoduché

(vykreslit nějaký obdélník s texturou)

a jak napsal frca, animace jsou spíš série obrázků, případně všechny pohyby máš v jednom obrázku vedle sebe a vždy vykreslíš jen část textury
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 10. červenec 2009, 21:13:08    Předmět: Odpovědět s citátem

frca napsal:
Pokud jde o uložení série obrázků, tak lepší než jeden gif je série očíslovaných png obrázků. Snáz se provádí změna jednoho snímku a není potřeba používat speciální software pro animaci gifů. Navíc je formát png otevřený a nezatížený nějakými licenčními problémy.


GIF je od roku 2005 kompletně free tzn. není zatížen licenčními problémy a dá se snadno načíst a uložit jako posloupnost obrázků. Knihovna FreeImage má podporu pro GIF tuším také od roku 2005.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 11. červenec 2009, 11:00:51    Předmět: Odpovědět s citátem

Uff, len OpenGL nie. To ho zavedie do pointeroveho pekla by NeHe, a to v dnesnej dobe skutocne nema za potreby.

salam: mas nejaky konkretny dovod preco chces ist do C++, alebo iba kvoli DX ? DX mas obsiahnuty v XNA a to kedze bezi primarne pod C#, je k Jave podstatne blizsie. A je to uzivatelsky privetivejsie ako cisty, starsi DX.
Nehovoriac o tom, ze je primarne podporovane MS a su nan updaty. Cim netvrdim, ze DX11 nie je podporovane, ale HW naroky su niekde uplne inde (okrem inych dovodov).

Plus mas ako bonus XBOX platformu Wink

Pozri napr. http://creators.xna.com/en-US/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 11. červenec 2009, 13:39:56    Předmět: Odpovědět s citátem

Hlavní nevýhoda DX11 je, že je to Vista/Se7en only. DX11 podporuje vše od DX9-hardware pomocí tzv. feature levels. Kdyby to bylo i pro WinXP, byla by to jasná volba na všechno.

OpenGL je taky fajn, je dnes někde na úrovni DX10.1, řekl bych. Jede všude (no, skoro...) a pokud je člověk schopný a trpělivý, veškeré problémy (týkající se např. NeHe tutoriálů) dokáže vyřešit. Že s tím má někdo problémy na fórech ještě neznamená, že je to špatně - každý si tím přece musí projít. Wink

C++ bych taky nezatracoval. Sice tam člověk ze začátku dost často padá na hubu, ale to je potřeba, aby se to naučil - z dlouhodobého hlediska se to vyplatí. Určitě je důvod se ho učit a to nejenom kvůli hrám, má docela velké uplatnění. Přejít z C++ na jiný jazyk je mnohem jednodušší než přejít z jiného jazyka na C++ (pokud bereme v potaz procedurální jazyky). A nezapomenout na RAII, což je věc, kterou v .NETu nebo v Javě jen tak neuděláte, a umožňuje si elegantně pohlídat jak memory leak, tak resource leak, který už garbage collector nepohlídá. Jazyk C++0x* pak přispívá ke zlepšení celkové čitelnosti kódu a eliminuje některé nedostatky C++, což z něj dělá ještě silnější nástroj.

* i když on to asi bude spíš C++1x

Pokud se chce autor vlákna oprostit od jazyků závislých na garbage collectoru, C++ je dobrá volba. A jestli výběr 3D API padne na D3D nebo OpenGL, už je celkem jedno...
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 11. červenec 2009, 15:28:48    Předmět: Odpovědět s citátem

Eosie Smile

Ty tu vytahujes veci, ktore vie zo 100 nahodne vybranych C++ programatorov - kolko ? 5-10 ?

C++0x je monstrum, a to sa neda len tak skrotit za par vikendov...

Moja pointa spociva v tom, ze ja proste neverim, ze clovek, ktory sa opyta na fore, ci ist do C++,sa dostane tak daleko. Ak by ten "drajv" mal, tak to uz davno robi a len priebezne si nechava vysvetlovat koncepty jazyka, ktore mu nie su jasne (a ze ich v C++ mozno najst).

No a hlavne, potrebuje k tomu nejake poriadne knihy, mega davku trpezlivosti a jasny dlhodoby ciel (povedzme, ze chce ist robit financne derivaty do Londyna za 100.000 GBP rocne Smile )
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 11. červenec 2009, 15:41:19    Předmět: Odpovědět s citátem

kidd: Ja osobne za najvacsi problem povazujem to, ze sa budes nepriamo ucit C++ z tutorialov a vygooglovanych linkov ohladom grafiky.

Aj ked odhliadneme od NeHeho, ktory ma v svojich C++ tutorialoch k C++ urcite dalej ako ty s Javou, mas nenormalne kvantum tutorialov a PDFiek, ktore su pisane v PureC style a vobec sa tam C++ (o C++0x nehovoriac) nevyuziva. Kazdy len pouziva bohapusty blud, ze kvoli jednoduchosti (ich myslenia) to de-classuje na purec styl, co je nieco za co by som vesal do prievanu za nasolene gule ...
Proste je to v style, radsej nech to zbastli kazdy debil, ako to napisat poriadne.

Keby si sem prisiel s 2 rokmi praxe v C++ a genericke programovanie ti bolo ako tvoje druhe ja, a Alexandrescu/Miller by boli tvojim citanim na dobru noc, tak OK - iba sa zasmejes pri citani tych tutorialov, ale oni ta ovplyvnia (ci uz priamo alebo nepriamo) a vysledny kod bude vykazovat neodstranitelne znamky krochtania...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 11. červenec 2009, 17:30:43    Předmět: Odpovědět s citátem

Nasolené koule? Chrochtání? Dneska boduješ. Laughing

C# 3.0/4.0 je taky monstrum, sice o pár let mladší, ale má našlápnuto na to stát se nejkomplikovanějím jazykem po C++ - s každou verzí Visual Studia vychází nová verze C#.

Jinak já se učil C++ v podstatě z builderu a z NeHe tutoriálů a dalo se to přežít. Wink Nějakou nohou se vykročit přece musí. Ty špatný návyky se v průběhu let dají napravit, člověk si v tom musí vymáchat rypák, aby pochopil, co je na tom vlastně špatně a čemu se má vyhnout (a doplňovat to dobrou literaturou).

Ale máš samozřejmě pravdu i s tím, že je dobrý se naučit hned na začátku ten správný postup, jenomže to není tak lehký u někoho, kdo nemá takový rozhled, že je schopný napoprvé sáhnout po kvalitní literatuře...

Minimálně první rok ten kód bude vykazovat známky i horších věcí než jen chrochtání.

PS: Na dobrou noc mám radši D. Eberlyho... Wink
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
kidd.sadam



Založen: 11. 06. 2009
Příspěvky: 18

PříspěvekZaslal: 13. červenec 2009, 13:02:28    Předmět: Odpovědět s citátem

THX frca a Houp za vecny příspěvek Wink diky za radu!
OpenGL bude pro mě asi jasná volba Smile

Jinak jsem zde pánové chtěl řešit, jak jednoduše rozpohybovat postavičku, a ne kvalitu NeHe tutoriálů a verzí C++ Wink

Nicméně na NeHe tutoriály se rozhodně podívám, a myslím, že jsem si sehnal i kvalitní literaturu co se týče C++

Ale to do tohoto threadu nepatří Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Hardwire



Založen: 04. 09. 2007
Příspěvky: 117

PříspěvekZaslal: 13. červenec 2009, 17:08:58    Předmět: Odpovědět s citátem

Trochu advanced metoda je pouzit skeletonovou animace... rozdelit si postavicku na kusy, ktery spojis kloubama. Jednotlivy kusy muzou bejt sprity (klidne animovany ala GIF). V animatoru pak definujes pro urcity casy (feyframy) konfigurace kloubu a ve hre mezi nima interpolujes. Tenhle pristup pouziva napr. Aquaria (http://www.bit-blot.com/aquaria/). Kdyz si pustis editor, muzes se tam dostat nejak i do editace animaci Naijy.

Dalsi moznej pristup je popsat objekt jako potexturovanej mesh (ale 2D mesh), slozenej treba jen z trojuhelniku, a do keyframu pak ukladat pozice vsech jeho bodu. Ve hre bys pak interpoloval pozice mezi jednotlivejma keyframama.

Vim, ze jsi psal "nejjednodussi", a tohle na implementaci nejjednodussi urcite neni, ale z hlediska dlouhodobejsiho vyvoje to muze bejt efektivnejsi, nez chrlit tuny spritovejch animaci.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
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