Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako animirati mesh-eve... od pocetka pa dokle stignemo

[es] :: 3D programiranje :: Kako animirati mesh-eve... od pocetka pa dokle stignemo

[ Pregleda: 3241 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.47.*

ICQ: 246436949


+10 Profil

icon Kako animirati mesh-eve... od pocetka pa dokle stignemo15.07.2004. u 20:58 - pre 240 meseci
Ucim se da radim sa DirectX-om. Napravio sam nekoliko prostih programa (malo naprednijih od onih u tutorial-u) i sve je islo lepo i glatko dok nije doslo do animacija. SkinnedMesh i MultiAnimation primeri iz DirectX SDK su mi prilicno nejasni. Moze li neko da mi objasni kako se radi sa skinned mesh-evima. Bilo bi mi od velike pomoci ako bi mi neko dao source code sa najminimalnijom podrskom za skinned mesh (materijali, texture, svetla... sve mi je to ne bitno za sad).
 
Odgovor na temu

bkaradzic
Branimir Karadžić
ArenaNet
Seattle, WA

Član broj: 14953
Poruke: 1630
*.pandemicstudios.com

Sajt: https://github.com/bkarad..


+11 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo16.07.2004. u 03:39 - pre 240 meseci
Pogledaj ovaj PDF:
http://moon-labs.com/resources/d3dx_skinnedmesh.pdf

Takodje ako te zanima teorija preporucujem ti da kupis knjigu:
Real-Time Rendering (2nd Edition) by Tomas Akenine-Moller, Eric Haines

ISBN: 1568811829

Vise o knjizi:
http://www.realtimerendering.com/

Branimir

 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.comcast.net



+18 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo16.07.2004. u 16:07 - pre 240 meseci
Nazalost, ti APIji uopste nisu laki za koriscenje (bice, bice...). Za pocetak bi ti trebao neki model koji sadrzi animaciju. Znaci mozes da koristis ili tiny.x koji se dobija uz SDK, ili da sam eksportujes neki iz 3D Studija ili Maye uz pomoc plugina koji se dobija u SDKu.

Mesh ucitvas sa D3DXLoadMeshHierarchyFromX, i dobices nazad ID3DXAnimationController. Peko AnimControllera radis sve - biras animacije koje zelis da pustas, mozes da miksujes vise animacija (recimo trcanje i pucanje), namestas eventove, i da onda sa AdvanceTime izracunas nove matrice za ceo objekat. Nakon toga treba 'samo' da protrcis kroz sve frejmove tvoje scene i da sve izrendas.

Otprilike, kljucna stvar koju treba da imas u vidu da AnimationController sluzi za animiranje bilo cega, on se samo povezuje sa vektorima i matricama, ali on moze da animira sta god hoces - jacinu zvuka, boju ekrana, itd. Tvoj fajl koji ucitavas se sastoji od 'frame hierarchy'-ja - prakticno stabla frameova gde svaki frame sadrzi transformacionu matricu. Frameovi takodje mogu da sadrze i mesheve. Na taj nacin je preko frameova izrazena hijeararhija kostiju u kosturu, ali moze i bilo sta drugo. Znaci mogao bi da imas i ceo nivo odradjen preko frameova u nekoj hijerarhiji, i da onda animiras nivo tako da se delovi nivoa pomeraju.

Sve u svemu, nije lako, ali nije lako ni ovo sve uraditi od nule. Uz malo srece i rasprave, potrudicu se da ovo bude bitno lakse za koriscenje u sledecoj verziji - videcemo.

Jedan kolega je napisao dobar tutorijal o ovome, zakacicu ga cim ga budem iskopao.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.47.*

ICQ: 246436949


+10 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo16.07.2004. u 22:17 - pre 240 meseci
Ok. Sad su mi neke stvari jasnije... i oni tutoriali i nisu vise tako strasni kao sto su bili :)
Nasao sam neke primere koji su koristili RetainedMode. Tamo je sve nekako mnogo lakse. Zasto se vise ne koristi (ili se mozda jos uvek koristi, ali nema opisa u SDK-u) RetainedMode?
Jos jedno pitanje. Zbog cega MultiAnimation primer prilicno sporo renderuje frejmove? Igre sa mnogo vise detalja imaju bolje performanse od ovog primera.
 
Odgovor na temu

bkaradzic
Branimir Karadžić
ArenaNet
Seattle, WA

Član broj: 14953
Poruke: 1630
*.pandemicstudios.com

Sajt: https://github.com/bkarad..


+11 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo16.07.2004. u 23:35 - pre 240 meseci
Citat:
RetainedMode


Mislim da je tzv. RetainedMode (citaj: RetardedMode) izbacen jos u DX6 (mislim?!).
Verovatno je izbacen zato sto ga niko nije koristio.

Branimir

 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.47.*

ICQ: 246436949


+10 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo17.07.2004. u 00:30 - pre 240 meseci
Dobro, znaci od tog moda nista. Mislim... ideja da se sve tako pojednostavi nije losa, ali kad nesto narod nece, onda nece.

Koliko je komplikovano dodavanje novih animacija za neki mesh.
Citat:
Ukoliko se unesu min. i max.
rotacije svake koske, na koske se moze primeniti i fizika,
tako da se mogu postici veoma lepe stvari. To je ono kad
Hitman vuce les, a on prati teren ili zakaci nogom o sto.
Ili kad se u Rainbowu6 ubiveni lik skljoka na ivicu prozora
pa ispadne kroz prozor ili visi.

Ovo sam video u jednoj temi na ovom forumu. Verujem da je ovo tesko, ali bih voleo da recimo mogu strelicama da pomeram ruku na meshu.

 
Odgovor na temu

bkaradzic
Branimir Karadžić
ArenaNet
Seattle, WA

Član broj: 14953
Poruke: 1630
*.pandemicstudios.com

Sajt: https://github.com/bkarad..


+11 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo17.07.2004. u 02:37 - pre 240 meseci
Citat:
Koliko je komplikovano dodavanje novih animacija za neki mesh.


Ovaj komentar u vezi Hitman-a sto si citirao je nesto sasvim drugo. Ima veze sa skinning-om, ali ne sa animacijom u onom kontekstu u kojem si postavio prvo pitanje. Termin "animacija" se uglavnom vezuje za predeterminisanu animaciju tj. ono sto umetnik-animator radi. Za takvu vrstu animacije postoji podrska u D3DX. Ova druga vrsta animacije o kojoj pricas iz hitman-a je proceduralna animacija, tj. animacija koja nastaje u realnom vremenu.

Takodje kod ove proceduralne animacije postoji vise resenja u zavisnosti sta ti treba.

Forward i Inverse Kinematics (kada pokusavas da postavis skeleton u zeljeni polozaj, a on se prilagodi fizickom svetu):
http://en.wikipedia.org/wiki/Inverse_kinematic_animation
Ovo se koristi u robotici, tako da mozes verovatno da nadjes neke knjige na nasem jeziku.

Jacobian Ragdoll (kada ti nije bitan krajnji polozaj skeletona, nego samo zelis da se skeleton deformise u odnosu na fizicki svet, primer iz Hitmana):
http://www.ioi.dk/Homepages/th...blications/AdvancedPhysics.ppt

Samo napomena kada kazem fizicki svet, mislim na predstavljanje fizickog sveta u aplikaciji. Obicno su fizicki i vidljivi svet u aplikaciji (igri) razdvojeni.

Pogledaj ovaj link:
http://www.ode.org/

Cisto za informaciju, kada vec spominjem fiziku ovo je najbolje resenje (komercijalno):
http://www.havok.com/

Da bi pomerao ruku, treba da izaberes kost koja predstavlja ruku i da pomnozis sve matrice koje predstavljaju ruku sa novom matricom koja predstavlja neki ugao. Ovo pricam generalno, ako posle ovog vidis ruku rastegnutu onda je nesto lose pomnozeno sa matricama... Najbolje je da krenes od jednostavnog primera npr. sa dve kosti pa onda polako ucis kako sve to funkcionise. U tom slucaju bi ti preporucio da radis sve od nule, tj. da ne koristis D3DX podrsku za animaciju.

Cal3D lib je slicna D3DX podrsci za animaciju, samo open source, tako da mozes da vidis kako radi:
http://cal3d.sourceforge.net/

Branimir

 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.49.*

ICQ: 246436949


+10 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo17.07.2004. u 12:57 - pre 240 meseci
Znaci treba samo da podesim matrice za kost i ponovo iscrtam mesh i ruka (ili sta vec treba) ce se pomeriti. Predpostavio sam da je tako... samo kad ucitam X fajl kako da znam koja kost je koja... tj. koju kos ta pomerim da bi se recimo pomerila ruka? Da li ima neki nacin da obelezim kosti u X fajlu (da ima recimo dam imena) pa da ih kasnije po tim oznakama pronalazim u aplikaciji?
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.comcast.net



+18 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo17.07.2004. u 16:01 - pre 240 meseci
Srki, ti treba u nekom DCC programu da napravis sve animacije - znaci u 3D studiju treba da napravis animaciju gde tvoj lik hoda, trci, skace, puca, umire, stoji - sta god ti vec treba. Onda snimis sve tu jedan X fajl, i onda kada ga ucitas mozes da kazes AnimationControlleru da ti pusti animaciju 'hoda' blednovanu sa animacijom 'pucaj'.

Animacije su mnogo kompleksnije od 'pomeri levu ruku za 35 stepeni na gore'. Zato je potrebno da ih dizajner uradi u nekom programu pre nego sto ih ti ucitas.

Naravno, ako bas zelis rucno da ih radis, mozes da promenis bilo koj frame u frame hijerarhiji i time ces da postignes upravo ono sto si trazio - ali to se ne preporucuje. Svaki frame odgovara jednoj koski i sadrzi ime, tako da bi pomocu toga mogao da odradis celu stvar.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.49.*

ICQ: 246436949


+10 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo17.07.2004. u 16:52 - pre 240 meseci
Dakle, da se za sad ostvaim rucnog menjanja kosaka i njihovih polozaja.
Potrudicu se da malo bolje naucim ove osnovnije stvari u vezi sa animiranjem mesh-eva. Koji je najbrzi nacin za iscrtavanje mesha (indexed, non-indexed,... i ostalo sto ima u skinned mesh primeru)? Sta bi sve trebao da uzmem u obzir kada biram na koji nacin da iscrtavam?
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.comcast.net



+18 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo17.07.2004. u 17:04 - pre 240 meseci
Na modernom hardveru je indexed podjednako brzo kao i non-indexed, samo treba da se potrudis da rasporedis indexe tako da sto vise iskorists vertex cache na kartici. Za to mozes da iskoristis ID3DXMesh::Optimize sa recimo D3DXMESHOPT_ATTRSORT i D3DXMESHOPT_VERTEXCACHE flagovima. Ovaj prvi obezbedjuje da ti je mesh sortiran po materijalima, a ovaj drugi rasporedjuje indexe tako da budu sto vise cache-friendly.

Ako mozes, gledaj da imas sto manje 'state change'-a po objektu (tesktura, render state, shaderi). Takodje, ako koristis vs_3_0 hardver i crtas gomilu slicnih objekata, probaj da koristis instancing API, to ume dosta da ubrza stvar.

Imaj u vidu da ti mozes da uradis svega par stotina promene state-a i draw poziva po frejmu (to je verovatno i jedna od najvecih razlika izmedju konzola i PCa u 3Du). Znaci sto vise stvari stavljaj u isti poziv, batchovanjem mozes stvarno dosta brzine da izvuces. Far Cry se ne crta drvo po drvo...
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.47.*

ICQ: 246436949


+10 Profil

icon Re: Kako animirati mesh-eve... od pocetka pa dokle stignemo19.07.2004. u 17:42 - pre 240 meseci
Sve sto sam do sad probao lepo radi. Imam lika koji trckara, hoda ili skace po sobi. Sad bih hteo da kada pridjem nekom objektu da lik okrene glavu prema tom objektu i da ga prati pogledom sve dok je u blizini (nije bitno ako se liku glava okrene za 180 stepeni, to cu kasnije resavati). Koji je najlaksi princip da se to uradi?

P.S.
Reljam, ti radis za Microsoft (DirectX), zar ne? Da li ce uskoro uz DX SDK ici i neke inverse kinematic helper funkcije?
 
Odgovor na temu

[es] :: 3D programiranje :: Kako animirati mesh-eve... od pocetka pa dokle stignemo

[ Pregleda: 3241 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.