Kuinka saadaan melkein mikä tahansa muisti riittämään melkein mihin tahansa renderöintiin

Tähän on olemassa neljä, hyvin yksinkertaista kikkaa mitä kaikki ammattilaiset ovat käyttäneet vuosikymmeniä:

1. Objektien valmistelu

Yksittäistä objekteja mallinnetaan parhaalla mahdollisella laadulla mihin muisti riittää ja tehdään proseduraalisia tekstuureja, mutta valmis objekti sitten renderöidään suhteellisen kompaktiksi malliksi missä kaikki käytetyt tekstuurit on on leivottu. Voi olla myös joukko objekteja jotka jakavat isomman tekstuurin että on tehty näistä tekstuuriatlas. Tällä tavalla saadaan säädettyä objekti menemään haluttuun muistimäärään.

2. Muistin budjetointi

Muistia on jotain megatavua tai gigatavua. Erilaisia renderöitäviä asioita on jonkin verran. Otan esimerkiksi Blenderin ja videomuistin, VRAM:n määrän.

Puoligigaa VRAM:ia menee esimerkiksi Cyclesille tai muuhun roinaan mitä koko homma vaatii.

Noin 800000 polygonia vie 100 megaa
Yksi 4K RGBA tekstuuri vie 64 megaa
Yksi 4K HDR tekstuuri, 32-bittia kanava, vie 200 megaa.

Pudottamalla minkä tahansa tekstuurin tarkkuutta, 4K -> 2K -> 1K jne. pudottaa tämän muistin tarpeen 1/4. Voi käytännössä tehdä eri laatuisia versioita objekteista pudottamalla polygonimäärää ja tekstuureja, että yksi objekti vie kokonaisuudessaan niin monta megaa kuin muistibudjettia riittää.

Suosittelen budjetoimaan muistin varaamalla sieltä enintään 32 erillistä objektia tai renderöitävää asiaa. Kuten luontokuvassa puuinstanssit 1, puuinstanssit 2, ruohoinstanssit 1, ruohoinstanssit 2, HDR taivas, lehtiatlas, pupu

Mukavan hallittava määrä, että jos on vaikka giga käytettävissä objekteille ja erillisiä objekteja on kuusi kuten esimerkiksi, voi varata megatavumäärän jokaiselle. Vaikka neljä 128 megaista objektia ja kaksi 256 megaista.

3. Oikea tekseliresoluutio objektille

Tekseli, oli tekstuurin pikseleillä on tiheys monta pikseliä metrille on.

Riippuu objektin etäisyydestä kameraan ja renderöitävän kuvan tarkkuudesta, mikä resoluutio tarvitaan. Objektia valmisteltaessa voidaan valita tähän sopiva resoluutio. Ei ole mitään järkeä käyttää 4K tekstuuria objektille jonka koko ruudulla 64 pikseliä. Sille riittää vaikka 128x128 tekstuuri

Polygonien määrän riippuu niinikään myös siitä kuinka lähellä kameraa ollaan. Että ei näy kulmikkuutta muodoissa, meshissä on hyvä olla verteksi kahdeksan pikselin välein

4. Renderöinti useassa vaiheessa

Renderöidessä aivan normaalisti renderöidään kuva useassa layerissä että kaikki objektit eivät ole yhdellä kertaa muistissa. Kun sanoin objektimäärän 32 ohjeistuksena ja tarvitseekin enemmän, sitä sitten pilkotaan kuvaa useaan vaiheeseen mitä renderöidään. Tämä tehdään normaalisti etäisyyden mukaan kamerasta tai miten objektit vaikuttavat toisiinsa. Esimerkiksi mitkä valonlähteet valaisevat mitäkin objekteja että niistä tulee yksi kokonaisuus mikä renderöidään.

Renderöintiä pilkotaan useaan osaan myös mittakaavasyistä, koska kuvattaessa läheltä yksityiskohtia, yksi mittayksikkö on vaikka desimetri, ja objektien koot vaihtelevat 2cm - 50cm välillä, vähän kauempana on isompi mittakaava missä yksi mittayksikö on metri, ja objektien koot vaihtelevat 20cm ja 5m välillä. Sen takana voi yksi yksikkö olla 10m ja objektien koot mittaluokassa 2m ... 50m

Näistä tulee tietenkin kätevästi erillisiä renderöitäviä layereitä jotka yhdistetään valmiiseen kuvaan.

---

Miksi sanoin objektien kokoluokan tuollaiseksi niin siksi kun kiinteän kappaleen fysiikkamoottorit toimivat parhaiten tuolla alueella: 0.2-5, malleissa verteksien ollessa 0,04 tarkkudella.

Se että onko 1 unit yksi metri, yksi sentti on ihan sama. Sitä ei tarvitse myöskään lukita 1=1 vaan toinen tapa on 1 = ^2 , kuten 0.2, 0.4, 0.8, 1.6 .. eli mallinnusohjelmassa 1, on vaikka 40cm jolloin saadaan 8cm ... 200cm alue objekteille.

--- Tällaisilla tempuilla saadaan niin monimutkaisia asioita renderöityä kuin huvittaa, käytännössä millä tahansa muistimäärällä.

Suorituskyky ei myöskään ole mikään ongelma. Sehän toimii reaaliajassa jos niin halutaan ja sitä voidaan vapaasti säätää kunhan mallinnuksen yksityiskohdat sopivat kerralla renderöitävään layeriin.
11161
Äänestä

Muut lukivat myös

Vastaukset 11

Vanhimmat

Hyviä vinkkejä. Kiitos! Pitäis opetella tuo baking.

Äänestä
  • Se ei ainoastaan ole keino säästää muistia, mutta sillä voi myös nopeuttaa tehokkaasti renderöintiä.

    Ei tarvitse olla kovinkaan monimutkainen shaderi kun sen laskeminen vie niin paljon tehoja, että on nopeampaa kun koko paska on leivottu tekstuuriksi.

    Toisekseen voi esilaskea staattisen valaistuksen. Toimii Blenderissä niin Cyclesillä kuin Eeveellä.

    Varsin kätevää Cyclesillä kun pienillä lightsampleilla ilman kohinaa renderöidä animaatiota.

    Äänestä

Mainittakoon että millään tavalla järkevän näköinen renderöinti ei aikaisemmin ollut reaaliaikaista. Tämä reaaliaikainen renderöinti tuli peliengineistä ja tehdään GPU:lla. Mallinnusohjelmat hyvin pitkään renderöivät vain CPU:lla että oli enemmän muistia käytettävissä.

Mikä se laskenta-aika sitten on niin vasta joskus 2001 alkoi olla mahdollista reaaliajassa renderöidä GPU:lla animaatiota, ei ihan paskan näköisenä 640x480 tarkkuudella. Edellyttäen että esirenderöidään vaikka valaistusta ja heijastusta. Vaikka laskennan tarkkuutta ei muuta vaan pelkästään resoluutiota, laskenta-aika kasvaa lineaarisesti pikselimäärän kuin frameraten mukaan.

Äänestä

sä sitten osaat sorvata noita kilometrin mittaisia juttuja vaikei kukaan kysykkään.

Äänestä
  • Todistan jakkaraongelman olevan todellisuutta. Vika ei ole ohjelmissa tai tietokoneissa vaan käyttäjässä.

    Äänestä

  • Anonyymi kirjoitti:

    Todistan jakkaraongelman olevan todellisuutta. Vika ei ole ohjelmissa tai tietokoneissa vaan käyttäjässä.

    Lähes aina vika istuu siinä jakkaralla mutta ei noita kilometrin pituisia jorinoita jaksa lukea varsinkin kun kukaan ei ole kysynyt niitä. Voisit ensin selittää palstan kakaroille mitä tarkoittaa renderöinti.

    Äänestä

  • Anonyymi kirjoitti:

    Lähes aina vika istuu siinä jakkaralla mutta ei noita kilometrin pituisia jorinoita jaksa lukea varsinkin kun kukaan ei ole kysynyt niitä. Voisit ensin selittää palstan kakaroille mitä tarkoittaa renderöinti.

    Kyllä täällä vasta joku kakara sanoi että 8 gigan muisti ei riitä renderönnissä ja mallinnuksessa ja olisi mukamas Windowsin vika.

    Se ei yksinkertaisesti pidä paikkaansa. Noin esimerkiksi Babylon 5:sta kun tehtiin niin mallinnus & renderöinti tapahtui koneilla joissa oli 32 megaa muistia.

    Käytännöt ei periaatteessa ole muuttuneet. Käytössä oli muistibudjetti jossa objektille oli muistia enintään 2 megatavua.

    Niin kyllähän se on jakkaraongelma jos 8192 megalla ei onnistu. Vaikka siitä puolet menisi Windowsille ja Blenderille niin olisi noin luokkaa 256 megaa muistia objektille.

    Äänestä

  • Anonyymi kirjoitti:

    Kyllä täällä vasta joku kakara sanoi että 8 gigan muisti ei riitä renderönnissä ja mallinnuksessa ja olisi mukamas Windowsin vika.

    Se ei yksinkertaisesti pidä paikkaansa. Noin esimerkiksi Babylon 5:sta kun tehtiin niin mallinnus & renderöinti tapahtui koneilla joissa oli 32 megaa muistia.

    Käytännöt ei periaatteessa ole muuttuneet. Käytössä oli muistibudjetti jossa objektille oli muistia enintään 2 megatavua.

    Niin kyllähän se on jakkaraongelma jos 8192 megalla ei onnistu. Vaikka siitä puolet menisi Windowsille ja Blenderille niin olisi noin luokkaa 256 megaa muistia objektille.

    Se joka niin väitti on vähämielinen linux-trolli joka kylvää satoja viestejä päivässä koska muuta elämää ei ole.

    Äänestä

  • Anonyymi kirjoitti:

    Se joka niin väitti on vähämielinen linux-trolli joka kylvää satoja viestejä päivässä koska muuta elämää ei ole.

    Tänään ei linux-trollia ole näkynyt täällä.

    Äänestä

  • Anonyymi kirjoitti:

    Tänään ei linux-trollia ole näkynyt täällä.

    Latauksessa vissiin.

    Äänestä

  • Anonyymi kirjoitti:

    Se joka niin väitti on vähämielinen linux-trolli joka kylvää satoja viestejä päivässä koska muuta elämää ei ole.

    Windowstrolleja sentään riittää.

    Äänestä

Kommentoi aloitusta


Anonyymi kirjoitti:

Tähän on olemassa neljä, hyvin yksinkertaista kikkaa mitä kaikki ammattilaiset ovat käyttäneet vuosikymmeniä:

1. Objektien valmistelu

Yksittäistä objekteja mallinnetaan parhaalla mahdollisella laadulla mihin muisti riittää ja tehdään proseduraalisia tekstuureja, mutta valmis objekti sitten renderöidään suhteellisen kompaktiksi malliksi missä kaikki käytetyt tekstuurit on on leivottu. Voi olla myös joukko objekteja jotka jakavat isomman tekstuurin että on tehty näistä tekstuuriatlas. Tällä tavalla saadaan säädettyä objekti menemään haluttuun muistimäärään.

2. Muistin budjetointi

Muistia on jotain megatavua tai gigatavua. Erilaisia renderöitäviä asioita on jonkin verran. Otan esimerkiksi Blenderin ja videomuistin, VRAM:n määrän.

Puoligigaa VRAM:ia menee esimerkiksi Cyclesille tai muuhun roinaan mitä koko homma vaatii.

Noin 800000 polygonia vie 100 megaa
Yksi 4K RGBA tekstuuri vie 64 megaa
Yksi 4K HDR tekstuuri, 32-bittia kanava, vie 200 megaa.

Pudottamalla minkä tahansa tekstuurin tarkkuutta, 4K -> 2K -> 1K jne. pudottaa tämän muistin tarpeen 1/4. Voi käytännössä tehdä eri laatuisia versioita objekteista pudottamalla polygonimäärää ja tekstuureja, että yksi objekti vie kokonaisuudessaan niin monta megaa kuin muistibudjettia riittää.

Suosittelen budjetoimaan muistin varaamalla sieltä enintään 32 erillistä objektia tai renderöitävää asiaa. Kuten luontokuvassa puuinstanssit 1, puuinstanssit 2, ruohoinstanssit 1, ruohoinstanssit 2, HDR taivas, lehtiatlas, pupu

Mukavan hallittava määrä, että jos on vaikka giga käytettävissä objekteille ja erillisiä objekteja on kuusi kuten esimerkiksi, voi varata megatavumäärän jokaiselle. Vaikka neljä 128 megaista objektia ja kaksi 256 megaista.

3. Oikea tekseliresoluutio objektille

Tekseli, oli tekstuurin pikseleillä on tiheys monta pikseliä metrille on.

Riippuu objektin etäisyydestä kameraan ja renderöitävän kuvan tarkkuudesta, mikä resoluutio tarvitaan. Objektia valmisteltaessa voidaan valita tähän sopiva resoluutio. Ei ole mitään järkeä käyttää 4K tekstuuria objektille jonka koko ruudulla 64 pikseliä. Sille riittää vaikka 128x128 tekstuuri

Polygonien määrän riippuu niinikään myös siitä kuinka lähellä kameraa ollaan. Että ei näy kulmikkuutta muodoissa, meshissä on hyvä olla verteksi kahdeksan pikselin välein

4. Renderöinti useassa vaiheessa

Renderöidessä aivan normaalisti renderöidään kuva useassa layerissä että kaikki objektit eivät ole yhdellä kertaa muistissa. Kun sanoin objektimäärän 32 ohjeistuksena ja tarvitseekin enemmän, sitä sitten pilkotaan kuvaa useaan vaiheeseen mitä renderöidään. Tämä tehdään normaalisti etäisyyden mukaan kamerasta tai miten objektit vaikuttavat toisiinsa. Esimerkiksi mitkä valonlähteet valaisevat mitäkin objekteja että niistä tulee yksi kokonaisuus mikä renderöidään.

Renderöintiä pilkotaan useaan osaan myös mittakaavasyistä, koska kuvattaessa läheltä yksityiskohtia, yksi mittayksikkö on vaikka desimetri, ja objektien koot vaihtelevat 2cm - 50cm välillä, vähän kauempana on isompi mittakaava missä yksi mittayksikö on metri, ja objektien koot vaihtelevat 20cm ja 5m välillä. Sen takana voi yksi yksikkö olla 10m ja objektien koot mittaluokassa 2m ... 50m

Näistä tulee tietenkin kätevästi erillisiä renderöitäviä layereitä jotka yhdistetään valmiiseen kuvaan.

---

Miksi sanoin objektien kokoluokan tuollaiseksi niin siksi kun kiinteän kappaleen fysiikkamoottorit toimivat parhaiten tuolla alueella: 0.2-5, malleissa verteksien ollessa 0,04 tarkkudella.

Se että onko 1 unit yksi metri, yksi sentti on ihan sama. Sitä ei tarvitse myöskään lukita 1=1 vaan toinen tapa on 1 = ^2 , kuten 0.2, 0.4, 0.8, 1.6 .. eli mallinnusohjelmassa 1, on vaikka 40cm jolloin saadaan 8cm ... 200cm alue objekteille.

--- Tällaisilla tempuilla saadaan niin monimutkaisia asioita renderöityä kuin huvittaa, käytännössä millä tahansa muistimäärällä.

Suorituskyky ei myöskään ole mikään ongelma. Sehän toimii reaaliajassa jos niin halutaan ja sitä voidaan vapaasti säätää kunhan mallinnuksen yksityiskohdat sopivat kerralla renderöitävään layeriin.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu