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.
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.
Vastaukset 11
Vanhimmat
Hyviä vinkkejä. Kiitos! Pitäis opetella tuo baking.
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.
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.
sä sitten osaat sorvata noita kilometrin mittaisia juttuja vaikei kukaan kysykkään.
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.
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.
Tänään ei linux-trollia ole näkynyt täällä.
Latauksessa vissiin.
Windowstrolleja sentään riittää.