Margareta Svabö

Level of detail (Lod) är ett mycket användbart verktyg om man vill underlätta renderingstiden och minska på datorkraften. När man jobbar i en stor scen i Maya med många högupplösta modelleringar, vill man samtidigt att datorn ska bibehålla sin prestanda. Då är LOD en perfekt lösning för att effektivisera arbetsflödet. Tanken är att man vill endast att nära objekt till kameran ska visa som mest detaljer, men för objekten längre ifrån är detta inte lika viktigt. Med denna OER kommer jag försöka beskriva mer om vad verktyget är och alla fördelar med Level of detail, men också olika användningsområden samt avslutar med en övning så att ni själva kan testa och lära er.

  

LOD fungerar att man har en färdig modell som man gör flera versioner med olika polygonantal som du visar vid olika tillfällen, beroende på avståndet mellan objektet och kameran. Objekt långt bort renderas inte i samma kvaliténivå som objekt nära kameran. Detta görs av prestationsskäl. När kameran är sedan nära objektet kommer man se objektet med hög detaljerad modellering och texturering. När man zoomar ut kommer objektet inte vara lika detaljrikt med höga polygoner och trianglar, och med tanke på det långa avståndet behöver vi inte den informationen heller. Vid ett visst avstånd kommer objektet bytas till lägre modellering och textureringskvalité, reducerad animation eller förvandla modellen till en 2D bildutskärning. Detta är användbart för alla olika typer av props, miljöer men även människor. Beroende på hur bra övergångarna är, kommer det inte märkas någon skillnad när kameran åker fram och tillbaka.

Här är en bra Youtube video som ger en tydlig beskrivning om Level of details: https://www.youtube.com/watch?v=1pQ7D_8sX-U (Cheng, 2015)

Användningsområden

Level of details använder man mycket i Unity som är ett program för spelproduktion. Att rendera alla voxlar samtidigt påverkar kraftigt hårdvarubelastningen och man vill hellre använda videominnet och datorkraften för andra viktigare saker, som fysik simulering till exempel. För att minska datorkraften så mycket som möjligt, och samtidigt upprätthålla ett acceptabelt framerate, måste man använda LOD för att hålla trianglarna låga. Oftast har man minst tre versioner av ett objekt som man gör en loddgrupp av. Varje modell har ett antal polygoner räknat från den högsta, som kanske har tusentals trianglar till en modell som har mycket lite detaljer, och avsevärt mycket mindre polygoner. Vad som är så smart med LOD är att ju närmre kameran är till objektet, desto mer detaljer kan man se. Detta gör att man undviker processeringskrafter på renderade detaljer som vi ändå inte kan se, eftersom objektet är för långt bort. LOD används såklart inte bara i spelproduktionssyfte, utan om man ska skapa en animationsfilm till exempel och scenen är väldigt stor, är detta verktyg perfekt.

På min praktik hos Samhällsbyggnadsförvaltningen använder man mycket Virtual Reality när man t.ex. ska kolla på nya bostadsområden som ska byggas, och då måste allt i scenen i programmet Unity ha lodning. Verktyget kan alltså vara väldigt användbart i många olika syften. (Zeuxcg. 2016)

Så varför ska man använda Level of detail (LOD)? Här är några starka fördelar med verktyget:

  • Ökar effektiviteten av renderingspipelinen genom att minska på arbetsbelastningen av CPU och GPU (grafikkortet).
  • För att rendera i realtid måste man hålla polyantalet nere för att bibehålla ett acceptabelt framerate. Då är LOD en nödvändighet.
  • Minskar minneskonsumtionen som är avgörande för att maxa prestandan.
  • I spelproduktion gör LOD så att spelet och upplevelsen presterar mycket bättre.
  • Man kan välja var man hellre vill använda det frigjorda videominnet och förbättrade datorprestandan på (GameDevAcademy, 2015).

Här har jag separerat tre olika versioner av en cykel för att visa upplösningsskillnaderna. Jag valde en ganska stor kontrast mellan min låg och högpoly cykel, just för att visa att även hur stor skillnad det är mellan min låg-poly och min detaljerade cykel, kommer vi ändå inte se någon skillnad i slutfasen. I andra bilden har jag gjort ett exempel på hur lodningen kommer se ut och där hittar vi ingen större skillnad. Beroende på hur många lodar man gör och hur väl man beräknat växlingarna mellan lodarna kommer övergångarna ske omärkbart.

Man skapar alltså en färdig modell av något i Maya som man sedan gör en låg, mellan och högpolyversion av. Finns olika sätt man kan tycka är enklast att gå tillväga, men jag brukar skapa versionerna efter jag gjort klart min modell i Maya, men man kan också förbereda sig under modelleringsprocessen. I mitt fall ligger min lägsta lågpoly modell på ca 18 500 polyedges, och min högsta ligger på 550 600 polyedges. Som man förstår är det ganska stor skillnad på antalet polygoner, men detta är ett måste när man ska till exempel använda dem i en spelmiljö eller liknande.

När man ska skapa en lod-grupp utgick jag från min färdiga modell på min cykel. Efter att jag kopierat upp hur många lodar jag vill ha, ska jag sedan reducera antalet polygoner, och då använder jag verktyget reduce som finns under fliken mesh. Jag kombinerar detta även med att manuellt radera polygoner på objektet.

När detta är klart är det dags att skapa en lod-grupp av dessa objekt. Innan jag gör detta är det viktigt de är placerade på exakt samma ställe, så då tar jag en freeze transformation för att nolla ut alla transformationer. När man skapar en lod-grupp ska man markera dem i en hierarkiordning, så den högst antal polygonobjektet till den lägsta.

Därefter går man in på fliken Edit och väljer LOD (Level of detail), och går till Create LOD Group. I Outlinern kommer man se att det skapats en LOD grupp som går från LOD 0-2 där den första loden är min färdiga detaljerade modell.

Om man markerar Lod-gruppen i Outlinern och kollar i Channel box/Layer editor kan vi kontrollera vilket avstånd lodarna ska bytas till nästa. Vi kommer använda LOD_1 start Distance och LOD_2 start distance, som beräknar avståndet när objektet ska visas innan den renderas till en lägre kvalité. Så att öka värdet betyder att man ökar diametern på avståndet när loden ska växlas till nästa. Värdet är upp till en själv, men den ska öka från första till sista loden 

LOD_1 start distance är alltså avståndet när första, LOD0 och växlar till LOD1, och LOD_2 start distance är avståndet när LOD1 växlar till LOD 2.

Avståndet varierar alltså på zoomnivån i Viewporten och det faktiska värdet kan man se i Distance. I Active LOD kan man också läsa av vilken av de tre lodarna som är aktiva.

När man sedan zoomar fram och tillbaka kommer man till slut se växlingen mellan de olika lodarna. Beroende på hur bra man arbetat med övergångarna kommer vi inte se någon skillnad. När man zoomar ut och in kan man samtidigt se i Outlinern när första loden släcks och nästa tänds istället, och sedan vidare till nästa lod. På länken nedan har jag gjort en playblast på min lod. Distance mäts i Maya Units, så i detta fall hade jag 500 units från när den växlas från LOD 0 till LOD 1, och 1000 units till LOD 2. Jag hade korta avstånd mellan växlingarna så att det skulle vara tydligare hur Level of detail fungerar, annars hade man såklart tagit mycket längre avstånd så att övergångarna går smidigt och omärkbart. (Autodesk Maya, 2018).

Playblast test: https://youtu.be/NvHFIrA-KfI

Övningsuppgift- skapa en LOD-grupp

Steg 1. Vi behöver skapa tre versioner av ett objekt baserad på deras polygonantal.

Steg 2. När du gjort detta ska du kolla antalet trianglar så vi markerar varje lod för sig, och går in på Display>Heads up display och väljer Poly Count.

Steg 3. Markera alla lodar i hierarkiordning, så första loden med högst polyantal till den lägsta. Gå sedan in på Edit> LOD(Level of detail)>Create LOD group.

Steg 4. Detta skapar en ny grupp som heter LOD_Group_1. Om du jobbar med en stor scen så underlättar det om du byter namn på Loden.

Steg 5. Markera LOD_Group_1 och kolla på din Attribute Editor i fliken Lod Attributes.

Steg 6. Välj värdet på de två LOD_1 och LOD_2 start distance, som beräknar avståndet när LOD 0 växlar till LOD 1, och när denna sedan växlar till LOD 2.

Steg 7. Nu är det dags att testa LOD- gruppen. När du nu är tillräckligt nära objektet ser du bara LOD 0 i viewporten (resten av loddarna är inaktiva).

Steg 8. När du sedan zoomar ut kommer du märka att LOD 0 försvinner och LOD 1 dyker upp istället. När du zoomar ut till längsta avståndet är bara den sista loden aktiverad, alltså LOD 2.

Nu när du gjort alla dessa steg är det färdigt! Detta är alltså hur en Level of detail (LOD) fungerar.

Slutsats

Att ha en massa högkvalitativa modeller i en stor scen är som sagt inte särskilt hållbart då scenen blir tung och tidskrävande, särskilt om man ska rendera i realtid och vill ha så låg framerate som möjligt. Level of detail (LOD) är därför ett jätteenkelt verktyg att använda, och väldigt tacksamt om man vill slippa huvudvärken och frustrationen! Förhoppningsvis kommer ni tycka denna OER har varit lärorikt och känna att den kommer bli till nytta i era framtida arbeten.

Källförteckning Elektroniskt

Autodesk Maya (2018). Level of detail attributes. Knowledge.autodesk. https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2018/ENU/Maya-Basics/files/GUID-6C4580F6-BAAE-4649-9180-55A8E2E8FE16-htm.html (Hämtad 2019-01-15).

Game Dev Academy. 2015. 3D modelling: Level of Detail. Tillgänglig:

https://docs.google.com/document/d/11zHK9TrmKosn-7bETw5fDx4n11havfpRlKEBkk0ESf8/edit (Hämtad- 2019-01-15).

Zeuxcg. 2016. Level of detail. Blog.Roblox. https://blog.roblox.com/2016/07/roblox-games-get-massive-boost-in-performance-with-level-of-detail/ (hämtad 2019-01-12)

Cheng, Lin Chou. 2015. Setting up Hierarchial LOD Preview with Autodesk Maya. Youtube. https://www.youtube.com/watch?v=1pQ7D_8sX-U (Hämtad 2019-01-10).