In modern applications like videogames or 3D flight simulators, dealing with the generation and the management of a 3D world, is one of the major chal- lenges; especially because of the huge dimension of the world. Such enormity translates into memory and computational problems, computa- tional when the world must be generated, memory problems because we need to save all the essential information in order to generate a copy of it every time the application is run. One of the most common techniques is extrapolating from a heightmaps, all the information we need to mold the world. All the information is stored in images. Unfortunately this approach hides some pitfalls: in this specific case dealing with image formats is more complicated and compression may result in not only bad aesthetically results, but also in the creation of an unplayable world. In this work I will try to find a solution to the management of the heightmaps, more specifically I will show how to compress them without creating bad arti- facts. For this work I started from the beginning, from the creation of an entire engine from scratch to import 3D models and to create a 3D world through procedural techniques and heightmaps. Having my own engine gave me a lot of freedom during all the experimental part and I will discuss the implemen- tation details; only later in the discussion I will show the normal compression techniques for the heightmaps, and I will try to find different and better so- lutions: first using an artificial intelligence approach and finally, starting from a different interpretation to the heightmaps, using a statistical approach that will prove to be the best solution.

Uno dei problemi essenziali quando si parla di applicazione moderne come videogiochi open-world oppure simulatori 3D di volo, è la generazione e la ges- tione del mondo 3D, spesso enorme in termini di dimensioni. Tale enormità si traduce in problemi computazionali e di memoria, com- putazionali durante la generazione del mondo, di memoria poichè, ovviamente, si ha la necessità di salvare tutte le informazioni necessarie per generarlo ad ogni esecuzione. Una delle tecniche più comuni per la modellazione 3D del mondo, è l’uso di heightmaps: tutte le informazioni vengono conservate attraverso immagini. Putroppo questo approccio nasconde varie insidie, dalla maggior accortezza nella scelta del formato immagine alla compressione delle stesse heightmaps, la cui cattiva gestione può portare, non solo a spiacevoli risultati estetici, ma anche ad un mondo ingiocabile in alcuni punti della mappa. In questo lavoro si tenderà di trovare una soluzione alla gestione delle heightmaps, nello specifico si introdurranno varie tecniche per comprimere quest’ultime senza creare artefatti che rendano il mondo ingiocabile. Ho scelto di creare un engine da zero cosı̀ da avere la maggiore libertà possibile durante la parte sperimentale, quindi la trattazione inizierà con la descrizione dell’engine ed i problemi implementativi dello stesso (dall’importing dei mod- elli 3D alla generazione via procedurale o via heightmap). Culminerà con una parte sperimentale sulle heightmaps, innanzitutto si mostreranno i difetti degli approcci più comuni, infine si tenteranno approcci diversi, prima un approccio basato su tecniche di intelligenza artificiale; poi, cambiando l’interpretazione data alle stesse, usando un approccio di tipo statistico. Quest’ultimo si rivelerà vincente.

Altura and heightmaps : towards a different compression approach for 3D game engines

PALUMBO, ANDREA
2018/2019

Abstract

In modern applications like videogames or 3D flight simulators, dealing with the generation and the management of a 3D world, is one of the major chal- lenges; especially because of the huge dimension of the world. Such enormity translates into memory and computational problems, computa- tional when the world must be generated, memory problems because we need to save all the essential information in order to generate a copy of it every time the application is run. One of the most common techniques is extrapolating from a heightmaps, all the information we need to mold the world. All the information is stored in images. Unfortunately this approach hides some pitfalls: in this specific case dealing with image formats is more complicated and compression may result in not only bad aesthetically results, but also in the creation of an unplayable world. In this work I will try to find a solution to the management of the heightmaps, more specifically I will show how to compress them without creating bad arti- facts. For this work I started from the beginning, from the creation of an entire engine from scratch to import 3D models and to create a 3D world through procedural techniques and heightmaps. Having my own engine gave me a lot of freedom during all the experimental part and I will discuss the implemen- tation details; only later in the discussion I will show the normal compression techniques for the heightmaps, and I will try to find different and better so- lutions: first using an artificial intelligence approach and finally, starting from a different interpretation to the heightmaps, using a statistical approach that will prove to be the best solution.
ING - Scuola di Ingegneria Industriale e dell'Informazione
3-ott-2019
2018/2019
Uno dei problemi essenziali quando si parla di applicazione moderne come videogiochi open-world oppure simulatori 3D di volo, è la generazione e la ges- tione del mondo 3D, spesso enorme in termini di dimensioni. Tale enormità si traduce in problemi computazionali e di memoria, com- putazionali durante la generazione del mondo, di memoria poichè, ovviamente, si ha la necessità di salvare tutte le informazioni necessarie per generarlo ad ogni esecuzione. Una delle tecniche più comuni per la modellazione 3D del mondo, è l’uso di heightmaps: tutte le informazioni vengono conservate attraverso immagini. Putroppo questo approccio nasconde varie insidie, dalla maggior accortezza nella scelta del formato immagine alla compressione delle stesse heightmaps, la cui cattiva gestione può portare, non solo a spiacevoli risultati estetici, ma anche ad un mondo ingiocabile in alcuni punti della mappa. In questo lavoro si tenderà di trovare una soluzione alla gestione delle heightmaps, nello specifico si introdurranno varie tecniche per comprimere quest’ultime senza creare artefatti che rendano il mondo ingiocabile. Ho scelto di creare un engine da zero cosı̀ da avere la maggiore libertà possibile durante la parte sperimentale, quindi la trattazione inizierà con la descrizione dell’engine ed i problemi implementativi dello stesso (dall’importing dei mod- elli 3D alla generazione via procedurale o via heightmap). Culminerà con una parte sperimentale sulle heightmaps, innanzitutto si mostreranno i difetti degli approcci più comuni, infine si tenteranno approcci diversi, prima un approccio basato su tecniche di intelligenza artificiale; poi, cambiando l’interpretazione data alle stesse, usando un approccio di tipo statistico. Quest’ultimo si rivelerà vincente.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2019_10_PALUMBO.pdf

accessibile in internet solo dagli utenti autorizzati

Descrizione: Thesis text.
Dimensione 52.02 MB
Formato Adobe PDF
52.02 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/149886