[ nes872004 @ 21.04.2004. 22:40 ] @
Cao bicu kratak!! Unapred se zahvaljujem ali me mnogo interesuje Kako da ubacim modele iz 3ds-a i jel moram svaki pokret da animiram i kako to vec ide?? |
[ nes872004 @ 21.04.2004. 22:40 ] @
[ Reljam @ 22.04.2004. 00:44 ] @
Jednostavnije je nego sto deluje:
1) Skines ili nabavis na CDu DirectX 9 SDK. 2) Uz SDK dobijes X file plugin za 3DS Max i Mayu, i to iskopiras u plugin direktorijum. 3) Iz 3DSa ides na export i sacuvas svoj model kao .X 4) U tvom programu model ucitavas sa D3DXLoadMeshFromX 5) Meshevi se iscrtavaju sa DrawSubset pozivom. ukoliko ucitavas animirani mesh, onda u koraku 4 treba da korists D3DXLoadMeshHierarchyFromX, ali ti preporucujem da prvo probas sa staticnim meshem da bi video kako radi. U samples direktorijumu inace imas par mesh primera koji demonostriraju kako se ovo radi. [ reject @ 22.04.2004. 11:28 ] @
Evo kako se obicno radi animacija:
Obicno Animatior radi animacije objekata, tako da engine treba samo da ih sto bolje reprodukuje. Postoje dva nacina da se ovo uradi. Prvi je da se iz animacije exportuje deformisani objekat frejm po frejm tako da engine drzi podatke o meshu i relativno pomerane tacaka koje je procitano iz animacije za svaki frejm. Ovo je jednostavniji nacin animacije, ali ima nekoliko ogranicenja (animacija se pusta bez mogucnosti modifikovanja u engineu i zauzima mnogo prostora bez potrebe). Ovako radi prvi Unreal engine. Drugi nacin je da se importuje ceo sistem kosaka (bones) iz animacije i da se svaki frejm pravi tako sto se prvo odredi polozaj kosaka u odnosu na osnovnu poziciju kosaka (rest pozicija - polozaj kosaka na pocetku), a zatim se tacke pomeraju onoliko koliko koska ima uticaj na njihovu weightmapu (ukoliko je weightmapa tacke a=100% a pomeraj koske 60 stepeni, onda ce tacka a da se pomeri za 60 stepeni. Da je weightmapa bila 50% tacka bi se pomerila za 30 stepeni. Za weight se uzima jedna float vrednost(0.0f do 1.0f - preko toga samo u extremnim slucajevima) tako da se pomeranje tacke moze izracunati kao pomeranje koske puta weight tacke). Koriscenje kosaka je dosta komplikovaniji nacin od pamcenja pomeraja tacaka za svaki frejm, ali pruza mnogo vise mogucnosti. 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. Fora je u tome da se sada animacije mogu generisati u samom engineu (koskama se prosledi gravitacija + vektor pogodka i kontrolise se kolizija sa podom - ako se ne prelaze min i max vrednosti rotacija kosaka pad na zemlju izgleda realno), a i na postojece animacije mogu uticati razni faktori cije se vrednosti "dodaju" rotacijama kosaka. Koji sistem koristiti najvise zavisi od primene enginea. Ukoliko se radi o kreacijama tipa Flight Simulator, Frontier i slicno onda je bolje raditi to na prvi nacin ili cak jos jednostavnije, a ukoliko se zahteva glatka animacija humanoidnih objekata gde ima puno razlicitih animacija, koske su neizbezne. [ Reljam @ 22.04.2004. 17:14 ] @
Reject je potpuno u pravu - da bi to stavio u kontekst price od malopre, D3DXLoadMeshHierarchy radi sa bones sistemima, i X exporter cuva celu hijerarhiju bone-ova iz 3DS Maxa. Sama animacija se vrsi sa ID3DXAnimationController-om, koji ima metode tipa AdvanceTime, i slicno. Na karticama koje podrzavaju vertex shadere, AnimationController vrsi racunanje na samoj kartici, sto oslobadja procesor, dok naravno na starijim karticama se sve radi na procesoru.
Ako te ovo interesuje, pogledaj multianim sample, koji sve to demonstrira (mada moram da priznam da je malo konfuzno napisan :)), i ako te i dalje to interesuje onda mozemo da idemo u malo vise detalja. Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|