An-Cadsolutions      Imgsystems

Kirjoittaja Aihe: Polycount ja map koot  (Luettu 2596 kertaa)

Osmic

  • Sr. Member
  • ****
  • Viestejä: 486
  • Sukupuoli: Mies
    • Profiili
Polycount ja map koot
« : Tammikuu 31, 2007, 03:26:10 pm »
Paria low polygon mallia esitellessäni foorumin eri osastolla heräsi paljon kysymyksiä siitä, mikä oikeastaan on "low polya" ja missä mennään nyt ja tulevaisuudessa.

Paljonhan riippuu pelimoottorin koodista kuinka paljon tavaraa ja polygoneja voi kerrallaan piirtää. Unreal Engine 3:a käytettäessä Epicin pojat ovat päätyneet 5-20 näkyvän hahmon 3k--12k trianglen ja 2048x2048 pikselin tekstuuri- ja normalmappien käytön riittäväksi vm. 2006 keskitason laitteiston pyöritettäväksi. Näillä luvuilla on merkitystä vain kuitenkin FPS-lajityypissä eikä esim. Red Alert -tyyppisessä RTS naksuttelussa jossa yksiköitä on kymmenkertaisesti Quakeihin ja Unreal Tournamenteihin nähden.

Itseäni mietityttää lähinnä se millä kaavalla lasketaan se, mihin kategoriaan pelimeshi kuuluu milloinkin jos prosessoritehot kasvaa jatkuvasti ja esim. tekoälyä kehitellään siinä samalla (joka syö myös laskentatehoa). Maailmani ei nyt täysin romahda jos asiassa ei ole selkeää "lakia", sillä epäilemättä asia on hyvin peli(tyyppi)kohtainen, mutta jos nyt vuoden verran pystyy elämään jollain tiedolla polycount raja-arvoista, niin pystynee suunnittelemaan meshiä jo helpommin.

Mielipiteitä? Lukuja? Kokemuksia?
Chat Republic Games

Rain_titane

  • Newbie
  • *
  • Viestejä: 47
  • Sukupuoli: Mies
  • Seppä, piirtäjä, maalari, GFX, Maya, pelit
    • Profiili
Vs: Polycount ja map koot
« Vastaus #1 : Tammikuu 31, 2007, 06:05:11 pm »
Anteeksi
« Viimeksi muokattu: Helmikuu 01, 2007, 03:57:50 am kirjoittanut Rain_titane »

Sola fide, sola gratia
Uuden oppiminen on riippuvuus josta ei pääse eroon , siihen jää vain entistä ennemmän koukkuun.
Minua ei voi arvioda?

Ember

  • Koodariapina
  • Global Moderator
  • *****
  • Viestejä: 568
  • Sukupuoli: Mies
  • LW | DFX+ | Photoshop
    • Profiili
Vs: Polycount ja map koot
« Vastaus #2 : Tammikuu 31, 2007, 07:19:42 pm »
Voin antaa mielipiteeni vain pelaamisesta.

*Aivan pirusti offtopicia*

Öh, siis mitä? Kiva että kerrot mielipiteesi, mutta ei kyllä liittynyt aiheeseen sitten mitenkään. Ja tuo Siwa-lopetus oli kieltämättä aika jännä...



Mutta takaisin aiheeseen. Hyvänä perusnyrkkisääntönä voi pitää sitä, että jos pikselitasolla ei näe enää polygoneja, niin silloin on ainakin täysin turhaa enää mennä lisäilemään niitä. Tämä siis olettaen, että pelissä ei zoomata sisäänpäin, jolloin luonnollisesti polygonien kulmikkuus paljastuu. Ja hirveästihän se sopiva polygon-määrä riippuu ihan alla pyörivästä koneesta ja myöskin itse enginestä. Hitaalla enginellä ei voida näyttää kuin puolet siitä polygonmäärästä kuin mitä nopealla, jotta saadaan sama ruudunpäivitysnopeus. Eli käytännössä tuohon ei ole ns. sopivaa sääntöä sinällään, niin paljon riippuu niin monesta eri tekijästä.

Itse en ole koskaan mallintanut peleihin mitään, animoinut kylläkin. Sanoisin ehkä, että nykylaitteistolla jossain naksuttelustrategiassa voisi olla yhden hahmon polygoncount siellä jossain 500 - 1000 polygonia. Tämäkin taas kerran niin riippuu, että millainen naksuttelu on kyseessä: onko kyseessä Warcraftin tapainen strategia, jossa hahmojen määrää on käytännössä rajoitettu useillakin eri tavoilla (support, vain 12 yksikköä kerralla valittuna), vai onko kyseessä naksuttelu, jossa on tarkoituksenakin olla aivan hemmetinmoinen määrä niitä yksiköitä kerralla näkyvissä ja hallittavissa (Total Annihilation -sarja). Luonnollisesti näissä kahdessa eri tyypissä sopiva polygon count on eri.
Foo sanon minä

Ember

  • Koodariapina
  • Global Moderator
  • *****
  • Viestejä: 568
  • Sukupuoli: Mies
  • LW | DFX+ | Photoshop
    • Profiili
Vs: Polycount ja map koot
« Vastaus #3 : Tammikuu 31, 2007, 07:34:43 pm »
Ah tosiaan, nykypeleissä lisäksi käytetään kaikissa Level Of Detail -tekniikkaa, joka mahdollistaa mallien polygonmäärän dynaamisen muuttamisen kesken ajon. Eli mitä kauempana malli on kamerasta, niin sitä vähemmän sen polygoneja piirretään (näin siis oikeasti, oikeasti ei mallissa olevien polygonien määrä muutu mihinkään). Tämäkin vaikuttaa merkittävästi sopiviin polygon countteihin.
Foo sanon minä

Osmic

  • Sr. Member
  • ****
  • Viestejä: 486
  • Sukupuoli: Mies
    • Profiili
Vs: Polycount ja map koot
« Vastaus #4 : Tammikuu 31, 2007, 08:08:25 pm »
LOD onkin tuttu juttu, kuin mipmapping tekstuurille mutta homma täytyy tehdä itse ja käsin.

Tekstuurimapilla tuskin tarvitsee olla enemmän pikseleitä mapissa kuin ruudulle renderöitäessä yhteen pikseliin mahtuu. Mapin koon arvelisin voivan laskea näin: Näytön/TV:n resoluution vaihdellessa täytyy valita jokin koko esim. 800x600 (tai varmuudeksi suurin mahdollinen järjen rajoissa) ja rendata malli siinä koossa kuin se suurimmassa koossa ruudulla esiintyy (tai 95% siitä ajasta) ja laskea pikselit. Sitten katsoa listasta mihin kuvakokoon (esim. 128x128 pikseliä) kaikki pikselit mahtuvat ottaen huomioon ne osat jotka UV mapataan päällekkäin (tai venytellään jne.) ja hahmoissa antaa ekstratilaa kasvoille/muulle halutulle osalle jolle pitää saada ylimääräistä detailia. Tässä vaiheessa tai jo edellisessä kohdassa pitää huomata että alun rendauksessa näkyy vain osa meshin pintaa joten koko mapin pikselit voisi kertoa neljällä (128x128 -> 256x256) jolloin jää tilaa UV elementtien/saarekkeiden välille.

Hommaa täytyy tietystikin kokeilla vielä joskus itsekin.
Chat Republic Games

spikey

  • Newbie
  • *
  • Viestejä: 22
  • vehicle artist / graphic designer / maxin kaataja
    • Profiili
    • dekalogue
    • Sähköposti
Vs: Polycount ja map koot
« Vastaus #5 : Tammikuu 31, 2007, 08:17:16 pm »
FlatOut 2:n autojen kolmiomäärät huitelivat jossain 7-12 tuhannen välillä riippuen rassista, ja lodeja ei käytetty. 360-versiossa kiipeillään nyt jossain 20k paremmalla puolella. Lowpoly määritelmänä on IMHO nykymenossa jo vähän turha, ennemminkin kannattaisi puhua realtime modellauksesta joka on sopivasti löyhempi.. Lowpoly tarkoittaa niin eri asioita riippuen platformista jolle sitä tehdään. Tuo on melkolailla makuasia. Ehkä nyrkkisääntönä voi pitää että jos näkee niitä polyjen kulmia obua normaalin kokoisena tarkasteltuna niin se on lowpolyä, tai jotain? Minentiijä enää. Ei pysty ottamaan kantaa, liian hapokasta.

Polymäärissä kannattaa muistaa että ihan oma lukunsa on se, miten paljon niitä piirretään ruudulle. Jos on spekulaarit ja envit ja muut tingeltangelishaderit niin jokainen niistä vaatii sen oman passinsa, eli joka freimi piirretään samat kolmiot passien määrän verran. 10k tri obu voi olla ruudulla käytännössä jo 50k kolmiota.

Enginet lisäksi optimoivat meshiä kuikuilemalla triangle stripejä jolla saa vähennettyä piirrettävän sälän määrää pistämällä edget oikeanlaiseen ojennukseen.

Niiin, oikeastihan piirretään verteksejä eikä kolmioita, ja sitä juuri optimoidaan tuolla triangle stripillä.. Lopputulos tästä kaikesta ihanuudesta on se, että 3d-softassa näkyvä kolmio/verteksi/poly-määrä ei kerro koko totuutta, vaan se lopullinen määrä saadaan vasta peliengineltä - jos halutaan. Käytännössä tuota katsotaan siellä 3dsoftassa ja pistetään edget nätisti ja se on siinä, kunnes joku tulee mutisemaan että ei pyöri tai muisti loppuu.

Kai nyt en selventänyt asiaa yhtään? :)
.: kotivauhko dekalogue / the-cow.net/focused
:: työrobootti bugbear

Osmic

  • Sr. Member
  • ****
  • Viestejä: 486
  • Sukupuoli: Mies
    • Profiili
Vs: Polycount ja map koot
« Vastaus #6 : Tammikuu 31, 2007, 08:31:33 pm »
..
Kai nyt en selventänyt asiaa yhtään? :)

Sen mikä jäi epäselväksi, voi aina googlata..  8)
Chat Republic Games

Felor

  • Global Moderator
  • *****
  • Viestejä: 684
  • Sukupuoli: Mies
  • Se Silomies
    • Profiili
    • http://felor.1g.fi/
    • Sähköposti
Vs: Polycount ja map koot
« Vastaus #7 : Tammikuu 31, 2007, 09:49:16 pm »
Miika heitti tälläsen linkin.
http://www.ericchadwick.com/examples/provost/byf1.html

Ainakin iteleni toi selvensi hiukan enmmän tota splittausta.
« Viimeksi muokattu: Helmikuu 01, 2007, 03:51:06 pm kirjoittanut Felor »

Juhis

  • Full Member
  • ***
  • Viestejä: 197
  • Sukupuoli: Mies
    • Profiili
Vs: Polycount ja map koot
« Vastaus #8 : Helmikuu 01, 2007, 12:23:49 am »
Suoraa jatkoa tuolta wipin topicista:

Lainaus
Felor sanoo: Juhis:
"kun 3d ohjelmassa omalta koneelta menee jo säälittävän 11 000 polygonin kanssa jo 5 sek framee kohti"

-Pelissä ne valot ja varjot on jo laskettu valmiiksi ainakin suurimmaksi osaksi. Joten Niitä ei tavallaan enää rendata...
Mut entäs jos pelis on dynaamiset valo/varjo-efektit nii eihän niitä voi laskea etukäteen (vai voiko?), koska silloinhan varjojen paikat riippu täysin missä kohdassa mikäkin asia on, ja peleissä niinkuin f.e.a.r. jossa valot liikkuu myös fysiikan mukaan (esim roikkuvat lamput heiluu räjähdysten paine aallosta jne.) missä asennosossa lamput on. Vai onko se sit vaa nii et se pelimoottorin koodiin on valmiiks jotenki pistetty noi?  Oon vaa nii pihal näist.

Edit: oke lisäilyy tähä kuinka pihal olenkaan. Elikkä mitä engine oikeasti tekee? Ku sinäänsä tiiän, mut sinäänsä ei mitään hajua. Tai sehän on niinkuin kokopelin koodin alusta tai jotain semmosta. Mutta miksi esim kaikki samalla enginellä tehdyt pelit näyttää graaffisesti samalta, tai siis tietty toises voi olla enemmän polyja ja detailei jne., mutta siis tyyliltään ihan sama. Esim. doominpelimoottori: doom3, Quake 4, Prey. Unreal3: Ut07, gears of war, jne. jne..
Ja miten enginet voi erottuu toisistaan niin paljon että toinen on hidas ja toinen nopea? Ja jos peleissä on just hyvät ja huonot asetukset, esim low texturet ja high texturet niin pitääkö ne textuurit tehdä erikseen vai osaako pelin koodi vaan pakata sitä täyttä tekstuuria? Ja koska oon niin pihalla niin unohin samalla sen pääasian mitä mun piti kysyä. Noh ei voi mitään. Toisaalta mitä järkeä ees kysellä tommossia ku en tiedolla mitään tee kun en kumminkaan rupee tod näkösesti pelei väsäilee. Ainakaan sillein että pitäisi mitään tietää, kai sitä voi aina mallintaa ku tietää maksimi polymäärän ja mapin koon.
« Viimeksi muokattu: Helmikuu 01, 2007, 12:37:43 am kirjoittanut Juhis »

Felor

  • Global Moderator
  • *****
  • Viestejä: 684
  • Sukupuoli: Mies
  • Se Silomies
    • Profiili
    • http://felor.1g.fi/
    • Sähköposti
Vs: Polycount ja map koot
« Vastaus #9 : Helmikuu 01, 2007, 01:48:56 am »
Peleissä ainakin Ambient Occlusion valaistus on rendattu etukäteen tekstuuriin joissain peleissä muutkin valaistukset riipuen pelistä.
Niissä peleissä missä joissa dynaamiset valistukset. Valaistukset ovat yleensä erinlaisia framebuffer huijauksia tai projisoituja tekstuureita. Kun taas renderissä on enmmän tai vähemmän valon simulointia. Rendataessa valaistuksia/shaderitä sun muutta pikseli kerrallaan Ja yleensä on anitialisoinit ja sun muut hianovariset mibmapit päällä. Redataessa myös harvemmin käytetäerikseen hyödyksi 3d kortejen nopeita laskentea rutiineja vaan kaikki tehdään prosessorilla. Rendereiden tarkuus myös parempi kuin OGL ja DX:llä tosin eipä niiten tarkuudessa ole pitkään aikaan ollut valittamista.

Toisin sanoen peli engineiten ja rendereiden arkitehtuuri on erinlainen. Toinen saa nopeasti tavaraa ruudulle kun taas toinen ottaa aikansa, mutta tekee parempaa jälkeä.

Ember

  • Koodariapina
  • Global Moderator
  • *****
  • Viestejä: 568
  • Sukupuoli: Mies
  • LW | DFX+ | Photoshop
    • Profiili
Vs: Polycount ja map koot
« Vastaus #10 : Helmikuu 01, 2007, 11:32:47 am »
Edit: oke lisäilyy tähä kuinka pihal olenkaan. Elikkä mitä engine oikeasti tekee? Ku sinäänsä tiiän, mut sinäänsä ei mitään hajua. Tai sehän on niinkuin kokopelin koodin alusta tai jotain semmosta. Mutta miksi esim kaikki samalla enginellä tehdyt pelit näyttää graaffisesti samalta, tai siis tietty toises voi olla enemmän polyja ja detailei jne., mutta siis tyyliltään ihan sama. Esim. doominpelimoottori: doom3, Quake 4, Prey. Unreal3: Ut07, gears of war, jne. jne..
Ja miten enginet voi erottuu toisistaan niin paljon että toinen on hidas ja toinen nopea? Ja jos peleissä on just hyvät ja huonot asetukset, esim low texturet ja high texturet niin pitääkö ne textuurit tehdä erikseen vai osaako pelin koodi vaan pakata sitä täyttä tekstuuria? Ja koska oon niin pihalla niin unohin samalla sen pääasian mitä mun piti kysyä. Noh ei voi mitään. Toisaalta mitä järkeä ees kysellä tommossia ku en tiedolla mitään tee kun en kumminkaan rupee tod näkösesti pelei väsäilee. Ainakaan sillein että pitäisi mitään tietää, kai sitä voi aina mallintaa ku tietää maksimi polymäärän ja mapin koon.

Nykyajan 3d-engine on 99,9% tapauksista rakennettu jonkun 3d-rajapinnan päälle (OpenGL, Direct3d jne). Näiden tehtävänä on toimia helpottavana välikappaleena ohjelmoijan ja 3d-raudan välillä. Eli näytönohjainvalmistajat tekevät ajurit, jotka tukevat jotain (tai kaikkia) näistä rajapinnoista, jolloin sovelluskehittäjä voi vain kutsua rajapinnan mukaisia kirjastokutsuja, jotka välitetään edelleen ajurille, joka välittää ne edelleen näytönohjaimelle sen ymmärtämässä muodossa. Näin mahdollistetaan se, että voidaan ohjelmoida vain yksi peli, joka toimii kuitenkin "kaikilla" näytönohjaimilla. Tämä on myöskin se syy, miksi ajureilla on niin suuri merkitys 3d-ohjelmien nopeudessa.

Itse engine on siis se osa ohjelmakoodia, jonka sovelluskehittäjä tekee hyödyntäen annettuja 3d-kirjastorajapintoja. Enginen vastuulla on kaikki se, mikä liittyy grafiikan piirtoon, transformaatioiden laskemiseen jne. Sellaiset asiat kuten törmäyslaskennat (eli ettei pelihahmo voi mennä seinän sisälle jne) kuuluvat enginen vastuualueeseen. Myöskin kaikki vähänkään polygonin piirtoa monimutkaisemmat asiat kuuluvat sellaisenaan enginen vastuulle. Itseasiassa suurin osa asioista on nimenomaan enginen vastuulla :) Aikaisemmin tuossa sanoin, että polygonien piirto ei kuulu enginen vastuulle, mikä sinällään ei ole totta. OpenGL (jne...) tarjoaa helpottavat kirjastokutsut polygonien piirtämiseen, mutta on sovelluskehittäjän vastuulla päättää koska ne piirretään ja kuinka suurissa erissä kerrallaan. Todelliseksi taiteenlajiksi homma menee siinä vaiheessa, kun yritetään minimoida prosessorin ja näytönohjaimen välinen keskustelu, sillä tämä on poikkeuksetta se suurin pullonkaula nopeudessa (minkä takia väyläteknologia kehittyy koko ajan ja nyt käyttelemme PCI-E -pohjaisia näytönohjaimia). Nykyiset enginet ovat niin pitkälle optimoituja, että väylää ei tarvita niin paljoa, joten vanhemmatkin AGP-näytönohjaimet jaksavat vielä ihan hyvin.

3d-engineistä ja niiden hienouksista voisi kirjoittaa vaikka kuinka paljon, mutta ehkäpä tuo antoi jo vähän käsitystä (tai sitten vain sekoitti) siitä, mitä ne oikeastaan tekevät. Itse en ole mikään huippuluokan ammattilainen tällä saralla, sillä olen tehnyt kyseisen alan ohjelmointia suhteellisen vähän. Fiksummat voivat täydentää, jos siltä tuntuu.
Foo sanon minä

Jaztee

  • Jr. Member
  • **
  • Viestejä: 63
  • Sukupuoli: Mies
    • Profiili
    • Sähköposti
Vs: Polycount ja map koot
« Vastaus #11 : Maaliskuu 04, 2007, 03:50:42 pm »
Itse teen peliä, ja sain hyvin apua tästä topicista :) Itselläni on nyt peliin tehtynä käsi johon tulee vielä pistooli, polycount on 272 smoothattuna, 136 ilman, Kysyn nyt kuitenkin että kannattaako meshsmoothia käyttää (Turbosmoothilla polygonmäärä oli kaksinkertainen meshsmoothiin verrattuna), peliin kun vielä tulee 30 vihollista ruudulle + kenttä.

FJ-Susi

  • Full Member
  • ***
  • Viestejä: 155
    • Profiili
    • Sähköposti
Vs: Polycount ja map koot
« Vastaus #12 : Marraskuu 17, 2008, 08:45:53 am »
Noi pystyy laskemaan silleen, että tietty pelimoottori pystyy pyörittämään tietyn määrän polyja per kenttä. Sitten vaan mietit että paljoko sitä roinaa sielä on ja jaat sen niiden kesken.

ienrdna

  • Sr. Member
  • ****
  • Viestejä: 340
    • Profiili
Vs: Polycount ja map koot
« Vastaus #13 : Marraskuu 17, 2008, 01:15:05 pm »
Itse teen peliä, ja sain hyvin apua tästä topicista :) Itselläni on nyt peliin tehtynä käsi johon tulee vielä pistooli, polycount on 272 smoothattuna, 136 ilman, Kysyn nyt kuitenkin että kannattaako meshsmoothia käyttää (Turbosmoothilla polygonmäärä oli kaksinkertainen meshsmoothiin verrattuna), peliin kun vielä tulee 30 vihollista ruudulle + kenttä.

Oliko oikeasti kaksinkertainen, vai ne laskettu eri tavalla? Ja subdiavia peliin?

Ember

  • Koodariapina
  • Global Moderator
  • *****
  • Viestejä: 568
  • Sukupuoli: Mies
  • LW | DFX+ | Photoshop
    • Profiili
Vs: Polycount ja map koot
« Vastaus #14 : Marraskuu 17, 2008, 02:56:45 pm »
Haluaisin huomauttaa, että vastaus nro:

« Vastaus #11 : Maaliskuu 04, 2007, 03:50:42 »

Huomatkaa päivämäärä. Ei välttämättä enää missään määrin ajankohtainen aihe, mutta keskustelkaa toki - aihehan on sinällään hyvinkin mielenkiintoinen :)
Foo sanon minä