HTML

Survive Developement

Itt olvashatod a Survive! nevű játék fejlesztésének állapotát, lépéseit. És mi is lesz a játék? Egy zombis-túlélős játék, ahol elsősorban a csapatmunkára építkezve kell megpróbálni életben maradni egy kihalt városban. A terep teljesen a tietek, nincsenek szabályok: éljetek túl, ahogy tudtok!


Küldj e-mailt nekünk:
gilgamesco@gmail.com

Sikolyok

Ettől tépjük a hajunkat:

Friss topikok

  • Sir Butcher: A gyors mozgású ütközés-érzékelés majd a lövésnél lesz topic :D A második esetben teljesen igaza... (2012.04.05. 16:38) Ütközésérzékelés
  • _fpeti_: Halad ez. (2012.04.04. 22:01) Gravitáció
  • Sir Butcher: Az sem rossz, az tény :D Szerencsére egyelőre annyi különbözőt kell csinálnom, hogy esélyem sincs ... (2012.02.20. 21:48) Scenery - Még több látvány
  • Sir Butcher: Na, ideírom: obj-nél megoldottam a csontokat. Melléktermékként összejöttek, extra számítás nélkül ... (2011.12.02. 11:48) Model Animálás - a probléma, és a (vélt) megoldás
  • Burwor: "A tesztvárosban sétálgatva belefutsz egy házba, aminek hiányzik egy fala. Mit csinálsz?" Zárva a... (2011.11.10. 15:00) Sziduri - a grafmotor bemutatkozik

Model Animálás - a probléma, és a (vélt) megoldás

2011.11.29. 22:21 :: Sir Butcher

Sziasztok,

Egy újabb problémán kezdtem el dolgozni, (nem, nem unatkoztam, kivételesen) mégpedig azon, hogy életet leheljek a világba. Na nem a valódiba, hanem a Survive! virtuálisába :)

A probléma: Eléggé tekintélyes, ugyanis sajnálatos módon az OBJ fájlok nem képesek animációt tárolni, ami gond. Vagyis, úgy képesek, hogy a modellező program létrehoz minden egyes képkockához egy modelfájlt - de ez a technika sajnálatos módon a helyigény miatt egyszerűen használhatatlan. Így új megoldás után kellett néznem.

Az első gondolatom az volt, hogy áttérek egy másik modellfájl típusra. Igen, ez járható út, de az OBJ pont az egyszerűsége, kis mérete, és áttekinthetősége miatt (ezt nem én írtam!) választottam, illetve amiatt, hogy nincs igazán olyan modellező a Neten, ami nem adna ki OBJ fájlt. Szinte minden program támogatja, így egyszerűen létrehozható egy olyan modell, amit kezelni tudunk. Szóval nem szívesen szakadnék el ettől a fájltípustól. (No meg eléggé sok energiát öltem bele az importerbe, de ez másodlagos, bár jelentős szempont volt.)

Végül a második gondolatomat kezdtem megvalósítani: miszerint írok egy saját animációs programot, amibe a behívott modellt szépen meg lehet animálni, létrehozni a mozgásait, mozdulatait. Így csupán a mesh-ek helyzetét módosítanám, (igazából minden animálás ezt fedi) nem pedig a modellből hoznék létre új transzformációkat. Ez eléggé járható útnak tűnik, egyelőre.

Tehát, hogyan is nézne ki? Hát, bevallom, eléggé bonyolultan. A szegény modellezőnek szépen meg kéne határozni a koordinátákat, a forgatásokat, minden képkockához, és manuálisan létrehozni ezeket. Persze a progi a végén szépen összegezné, és létrehozna belőle egy, számomra használható .anim fájlt, ami voltaképpen lépésről-lépésre tartalmazná az adott mozdulat elemeit, mesh-ekre lebontva.

Persze, ennek a technikának is vannak hátrányai (meg az OBJ-nek is). Elsőnek az, hogy nehéz a pontos illesztés, hiszen a bone-okat nem tudjuk használni (sajnos az OBJ nem támogatja őket). Így különösen vigyázni kell, nehogy elcsússzanak a háromszögek egymáshoz képest, különben a végeredmény nagyon ronda volna. De ez odafigyeléssel küszöbölhető probléma.

A kettes számú gond az, hogyha egy modellnek mások az arányai, méretei (transzformáció előtt) akkor el fog csúszni az egész, tehát új méretarányú modellt újra kell animálni. Viszont, ez (jó esetben) nem lesz ránk érvényesek: hiszen a zombik többfajta, azonos méretű testből fognak összeállni, tehát probléma nélkül használhatjuk rájuk az azonos animációkat. Legalábbis remélem :)

Így az elkövetkező jópár napomat most ez a project foglalja le. Reményeim szerint hétvégére sikerül tető alá hozni. Sajna egyelőre még képet nem tudok mutatni, de egy eléggé pofás kis progi formálódik. Egyelőre csak a tervezőasztalon, de holnap remélem már a monitoron is :)
 

10 komment

Címkék: modell fejlesztés animációk modell animációk

A bejegyzés trackback címe:

https://survivedev.blog.hu/api/trackback/id/tr813423178

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Matzi 2011.11.30. 10:57:02

Elég érdekes megközelítést használtok, meg kell hagyni. :)

- Túl nagy a kanapé, nehéz lenne bevinni a szobába.
- Hmm... Akkor lebontjuk a házat, és felépítjük a kanapé köré!

Egy modellbetöltőt írni azért jóval rövidebb idő, mint írni egy animáló programot, ami használható is. Erre vannak az olyan szoftverek, mint a studio max, blender, vagy a maya. Ők már megdolgoztak vele, az garantáltan használható, és nem fogja felvágni az ereit a grafikus, ha azzal kell dolgozni, míg egy saját kis tool esetén ez azért elég valószínű. Szóval most sokkal többet akarsz dolgozni, hogy sokkal gyengébb minőségű modelleket tudj előállítani, és ezzel spórolsz egy kis lelki megerőltetést. Feltalálnád újra a kereket, hiszen a modell formátumok eleve erre vannak kitalálva.

Ráadásul a net tele van jó modell betöltőkkel, megnyitották a doom3 forrását is, onnan is lehet lopni, de ha csak ez a gátja a boldogságotoknak, akkor még én is szívesen adok saját .x betöltőt.

"Így csupán a mesh-ek helyzetét módosítanám, (igazából minden animálás ezt fedi)" - Például ez baromira nem így van. Egyrészt a mesh helyzetén és irányán kívül elég sok dolog változhat, nem beszélve a csontozásról, vagy az inverz kinematikáról, amit megint csak elég macerás és felesleges lenne újra megírni. Ha mindenáron saját formátumot akarsz, akkor írj a kedvenc modellező programodhoz egy export scriptet.

GizmoSDK 2011.11.30. 15:34:47

Reménytelen. Kb a 3D engine problémája óta próbálkozom azzal, hogy meggyőzzem Butchert arról, hogy az előre elkészített szoftverek nem a Sátán művei, de mindhiába. Szerintem ez már így marad...

GizmoSDK 2011.11.30. 15:38:44

Egyébként tetszik a hasonlatod, nagyon találó :D

Archenemy 2011.11.30. 17:26:16

az FBX szerintem elég jó formátum (csontos anim is van benne), azt is sok mindenből lehet exportálni, és ha az unity-nek elég jó, akkor hátha ide is :)

Sir Butcher · http://survivedev.blog.hu/ 2011.11.30. 18:54:51

Úgy éreztem, eléggé jól megindokoltam a döntésemet, de akkor talán mégsem :)

Elsősorban azért is szeretnék egyedi megoldás alkalmazni, mivel szerintem a célnak jelenleg jobban meg fog felelni. Ez nem kőbevésett, de egy próbálást mindenképpen megér. Ezt hivatott jelezni a (vélt) szócska a címben :) Ha működik, akkor sikerül csökkenteni a szükséges helyigény, és optimálisabban megoldható a megjelenítés is, hiszen csak egy, nem túl nagy, anim fájl szükséges majd a mozgatáshoz, amit rá tudok húzni egy nagyobb modellcsoportra. Míg a modellezők álltal készített megoldásra ez a feltétel nem igaz. Persze, más grafmotor más megoldást használ, és nem is tervezem kijelenteni, hogy én jobbat csinálok (nem is volna igaz) de jelenlegi véleményem az, hogy ez az adott problémára jobb megoldás.

Mikor kész lett az OBJ importer, és elkezdtem utánaolvasni az animációknak, akkor eléggé gyorsan észrevettem, hogy bizony az OBJ erre abszolút nem jó. Rá is állítottam a modellezőinket a problémára, és kaptam is megoldást, majd példát is bőven, tesztnek, kismillió fájltípussal. Ezek egyrészét nem tudta az XNA alapból feldolgozni, más részét se ő, se én. Az FBX remek formátum, de Steve által használt modellező abszolút kezelhetetlen formát ad ki belőle, amit manuálisan nem tudok feldolgozni, az XNA content importere pedig eldobja az adatok nagyrészét. A Blender jó FBX-et ad ki, de a textúrát az XNA szintén eldobja, valamiért (Erről volt is egy szép hosszú post, a problémát mondjuk azóta sem értem. Manuálisan hozzá tudtam rendelni a textúrát, de ezt a megoldást szeretném elkerülni egyelőre.)

Illetve, az OBJ mellett szól még az is, hogy eléggé független formátum, és minden modellezőprogram alapból kezelni képes. Én meg tervezem a késsőbbiekben elrugaszkodni a kötöttségektől, amennyire lehet. Vagy sikerül, vagy nem.

Illetve, még egy rendkívül fontos érv szól amelett, hogy miért is akarom szivatni magam, fölöslegesen, vagy sem: ez a project egyrészt mint játék fontos nekem, másrészt mint terep, ahol tanulhatok. Persze nem leckének tekintek rá, de valahol, valamiben fejlődni kell. És ez életem eddigi legösszetettebb, legfontosabb projectje, amin, véleményem szerint, nagyon sokat fejlődtem, így nem is szeretném a tanulást abbahagyni :) Így ezért is szeretném megcsinálni, hogy lássam, hogyan is működik, illetve: képes vagyok-e rá.

Meg azért azt is hozzátenném, hogy oké, ezt nem csinálom meg: de akkor hátratehetem a kezem, és nézhetek ki a fejemből. A grafmotor azzal, amit kezelnie kell (amin tesztelni tudok) készen áll, működik, intézi a dolgait. A hétvégén megoldom az utolsó, (eddig) ismert bugot, a tükrözödés gondja (az ég nem a valódi táj fölött van, így a kamera viewmatrix-ja sem stimm, de ez csupán egy koordináta átírás, ezért sem foglalkoztam vele mostanáig). Ezenkívül végeztem, és amíg nincs tesztanyagom, amivel értelmesen tudok dolgozni (az általam koordináta-rendszerben kiszámolt, aranyosnak aranyos, de nem használható házikót nem tudom ideszámítani) addig én csak lógatom a lábamat.

Akkor már értelmesre szeretném fordítani az időt. :)

Pretender 2011.11.30. 19:30:52

Nem, nem fog megfelelni, majd látod, hogy nem lesz az úgy jó, ahogy te gondolod... :)
Mellesleg ezt a vertexenkénti mozgatási hülyeséget utoljára a q3 (? ugye? :D) használta az md2 formátummal (vagy még az md3 is az volt, nem tudom).

És NEM véletlenül találták ki a csontanimot. Nekem is van x parserem. Maxben megcsinálja az ember, kiexportálja x-be, az endzsin meg átkonvertálja egy saját bináris fájlba, amihez van minden.

Matzi már írt róla, de sok előnye van a csontanimnak... :)

Mellesleg azzal is számoltál, hogy ha a vertexeket mozgatod, akkor azt mindig fel kell tölteni a VGA ramjába? :)

Mellesleg az XNA továbbra is olvas be animált x-et, van rá kismillió sample.

Sir Butcher · http://survivedev.blog.hu/ 2011.11.30. 20:17:29

Nem, félreértettél: eszem ágában sincsen vertexet módosítani (vagyis, nem úgy: csupán mátrix transzformációkat alkalmazni rá, adott frameenként).

Matzi 2011.12.01. 00:56:50

Tök mindegy miben kerül be a modell a rendszeredbe, ha nagyon nem tetszik, akkor átkonvertálod saját formátumra, és azt teszed mellé. Persze csinálhatod ezt, de totális időpocsékolás. Nem azért mert nem fogod tudni megcsinálni, mert nem lehetetlen, de a végeredmény tuti, hogy használhatatlan lesz praktikus szempontokból. A többi játék meg kifogástalanul kezeli a szabványos formátumokat, lehet, hogy kis finomhangolással neked is menne.
Azon meg ne csodálkozz, hogy nincs content, ha nem olvasol be modelleket. :)

"hiszen csak egy, nem túl nagy, anim fájl szükséges majd a mozgatáshoz, amit rá tudok húzni egy nagyobb modellcsoportra." - Ez például megint nem igaz. Konkrétan ha a csontváz azonos, márpedig azt nem nehéz megoldani, akkor tetszőlegesen cserélgetheted az animokat. Én például egy karakterre ráraktam egy teljes páncélt így.

"Én meg tervezem a késsőbbiekben elrugaszkodni a kötöttségektől, amennyire lehet. Vagy sikerül, vagy nem." - Ez meg olyan, mintha azt mondanád, hogy imádod a veszélyt, miközben egy ugráló várban állsz. Az XNA egy baromira nem független dolog, innentől felesleges harcolni azért, hogy elszakadj bármitől. Inkább használd ki a platform lehetőségeit.

Jó az, hogy tanulni akarsz, de akkor csinálj valami értelmeset. Olyat, amit használni is lehet majd, mert ezt garantáltan nem lehet majd. Már a textúrázós toolodhoz is be akartam ezt írni. A városgenerálós cucc például ilyen, én azt fejleszteném tovább, mert van még hová.

Persze továbbra is te tudod, de ez a véleményem.

_fpeti_ 2011.12.01. 03:25:06

Én is:
Csontok + 1 (ragdoll-t se lehet nélküle, nem tudod külön mozgatni a végtagjait, fejét.)

Nem saját exporter használata is +1
(sok idő sajátot írni és átírni minden random verzióváltásnál Blender/Max oldalon.)

Sir Butcher · http://survivedev.blog.hu/ 2011.12.02. 11:48:34

Na, ideírom: obj-nél megoldottam a csontokat. Melléktermékként összejöttek, extra számítás nélkül :)

Az OBJ-t meg pont azért választottam, mert eléggé fix, és nem modifikálják.

A ragdoll meg nálunk amúgy sem jöhet számításba, legalábbis én még nem láttam játékot, ahol több száz ellenfél ragdollban összeesik :) (Najó, crysisben igen, de nem pályázom a crytech babérjaira.)
süti beállítások módosítása