[Index] [Vad är VRML?] [Syntax] [Optimering] [Bläddrare] [Världsmodellerare] [Historik]

Optimering

När man bygger sin virtuella värld i VRML är det lätt att fylla den med så många objekt att den snart blir trögläst av bläddraren. Detta innebär att när man försöker navigera i den alltför stora VRML-världen kommer det att gå långsamt och med långa ryckiga steg. Bläddraren hinner helt enkelt inte med att i realtid rita upp det tredimensionella rummet på ett effektivt sätt. Det finns dock några sätt att underlätta för VRML-bläddraren att reproducera rummet.

Bounding Boxes

För att snabbt placera ut objekten i rummet kontrollerar bläddraren hela tiden scenvyn i relation till var man står i rummet. Objekt framför tittaren måste placeras ut medan objekt bakom tittaren inte behöver ritas. Att sortera objekten efter vilka som syns och vilka som inte gör det kallas synbarhetssortering (eng. visibility culling). Denna sortering kan göras snabbare om bläddraren får information om ett objekts storlek och placering redan innan den ritar upp det.

Bounding Boxes är benämningen på de osynliga lådor som bläddraren bygger kring objekten i vissa grupperande noder (Group { } -, Billboard { } - och Transform { } -noden). Storleken på lådorna är precis så stor att alla objekten i den grupperande noden ryms. Istället för att kontrollera synbarheten hos varje enskilt objekt kontrollerar bläddraren alltså först hela gruppens synbarhet. Är lådan inte synlig vet den att objekten innanför inte behöver ritas upp.

Man kan hjälpa VRML-bläddraren med synbarhetssorteringen genom att fylla i fälten bboxSize och bboxCenter i de ovan nämnda noderna. I annat fall utför bläddraren själv dessa beräkningar. Vad som är bäst får man avgöra i fall till fall beroende på gruppens geometriska komplexitet och val av bläddrare.

LOD

Att rita upp en detaljerad figur kräver naturligtvis mer beräkningar av bläddraren än en enklare. Om tittaren befinner sig på långt håll då detaljer ändå inte syns kan de vara bra att istället rita upp en mer skissartad figur. I språket VRML finns en nod kallad Level Of Detail som kan användas för att måla upp olika versioner av samma objekt. Dessa olika versioner definieras inom LOD { } -noden tillsammans med de avstånd vid vilka de ska synas. På mycket långt håll kan den enklaste versionen vara att inte rita upp någonting alls. Om inga värden ges på avståndsgränserna för de olika versionerna kommer bläddraren själv att välja att visa den version som inte gör rummet alltför trögnavigerat.

Många LOD { } -noder med många olika avstånd som överlappar varandra kan få den motsatta effekten att bläddraren får extra mycket att göra. Det är därför bra att hålla sig till maximalt tre olika versioner av ett objekt och att gruppera flera närliggande objekt inom samma LOD { } -nod.

Val av bildstorlek

En orsak till lång nedladdningstid av en VRML-värld är de bilder som världen innehåller. En typisk VRML-fil är okomprimerad av storleken några kilobyte, ungefär samma storleksordning som en enklare bild av GIF- eller JPEG-format (komprimerade format för bilder). I en enda värld används dock vanligen minst ett tiotal texturer (ibland hundratals) och dessa kommer därför att utgöra den största orsaken till att den sammansatta applikationen blir stor.

Även i sammanhang då överföringshastigheten via nätet inte är det stora problemet lönar det sig att extra noga kontrollera de bilder man använder i sin VRML-värld. Två bra knep för att snabba upp bildhanteringen är följande:

Filkomprimering

En metod att göra VRML-filerna mindre är att komprimera dem med GZIP-metoden. GZIP är ett komprimerings-/dekomprimeringsprogram utvecklat under Free Software Foundations projekt Gnu. Flera VRML-bläddrare dekomprimerar (återställer) automatiskt detta format då en sådan fil påträffas.

VRML-filer kan också göras mindre genom att ta bort alla blankrader och onödiga blanksteg i texten. Denna åtgärd torde dock ha begränsad inverkan med avseende på optimering.

Ofta är det dock inte stora VRML-filer som är flaskhalsen vid informationsöverföring över nätet, utan de bild, ljud och framförallt filmfiler man kanske använder i sin VRML-värld. En liten filmfil av MPEG-format eller en några sekunder lång ljudfil i WAV-format är av storleksordningen 1 Megabyte medan en VRML-fil vanligen bara är en tusendel så stor.

Underordnade koordinatsystem

En detalj som kan medföra att det tar längre tid för bläddraren att rita upp VRML-världen är om man bygger världen med många koordinatsystem underordnade varandra. Detta är lätt hänt då man använder Transform { } -noden för att definiera relativa förflyttningar och vridningar mellan objekt och delobjekt. Exempelvis ett bordsben relativt en bordsskiva och relativt de andra bordbenen. Vid byggandet av större och mer komplicerade objekt kan man hamna på fyra-fem koordinatsystem underordnade varandra och detta innebär att bläddraren behöver lite extra tid på sig för att beräkna var i rummet objektet ska placeras.

 

 

© 1998 Glenn Sundberg. Alla rättigheter reserverade.