3D-mallien suorituskyvyn testaus ja optimointi Android-mobiililaitteille
Parviainen, Tomi (2021)
Parviainen, Tomi
2021
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2021060213538
https://urn.fi/URN:NBN:fi:amk-2021060213538
Tiivistelmä
Opinnäytetyön tavoitteena oli testata miten realististen 3D-mallien esittäminen Android-mobiililaitteilla vaikuttaa suorituskykyyn ja miten testattuja malleja voidaan optimoida.
Suorituskyvyn testaamista varten suunniteltiin ja luotiin testiohjelma Unreal Engine 4 - pelimoottorille. Suunnitteluvaiheessa päätettiin mitä testaamiseen tarvitaan ja miten testit tehdään. Testaamista varten päädyttiin käyttämään kolmea erityyppistä 3D-mallia, joista kaikista oli kolme esimerkkiä. Mallityypeiksi valittiin puun, ruohikon ja kiven mallit. Mallit päädyttiin luomaan ruudukkoon ja kuvaamaan ylhäältä päin, jolloin malleista saatiin ylhäältä päin kuvaavaa kameraa käyttäen näkyviin kerralla mahdollisimman paljon. Suorituskykytestissä mitattiin yhden ruudun piirtämiseen vaadittua aikaa ja tulokset vietiin taulukonlaskentaohjelmaan vertailua varten.
Tulosten perusteella aloitettiin optimointi puun malleista. Malleille löydettiin useita optimointitapoja joiden jälkeen päädyttiin tilanteeseen, jossa malleja voitiin harkitusti käyttää. Puiden mallin optimoinnin perusteella ruohon mallit testattiin uudestaan vaakatasossa ja niitä optimointiin tämän testin tuloksien perusteella. Ruohon mallia onnistuttiin optimoimaan vähentämällä ruohikon tiheyttä mallissa, samalla läpinäkyvien tekstuurien ja mallin käyttämien kolmioiden määrää vähentäen. Kivien mallien käyttäminen ja optimointi huomattiin helpoimmaksi ja siinä onnistuttiin nostamaan suorituskykyä yksinkertaistamalla mallia ja sen tekstuurikarttoja ilman suurta vaikutusta ulkonäköön.
Optimointien tulosten perusteella tehtiin vielä testitaso, jossa eri mallityyppejä ja optimointeja yhdisteltiin. Sama testi tehtiin vielä käyttäen optimoimattomia malleja, jonka jälkeen havaittiin selkeä kasvu suorituskyvyssä. Testitasossa havaittiin että tehdyistä optimoinneista oli hyötyä ja opinnäytetyön tavoitteessa on onnistuttu. Yhteisen testitason luomisessa käytettyjä optimointeja voi hyödyntää mobiilipeliä tehdessä. The purpose of this thesis was to test how displaying realistic 3D models would affect performance on Android devices and how the tested models could be optimized.
For testing the performance, a testing program was planned and built using Unreal Engine 4. In the planning phase, it was first decided what was needed for the testing and how the tests would be conducted. Three different types of 3D models with three variations each were selectedto be used for testing. The chosen types of models were that of a tree, grass, and a rock. The models were generated in a square grid so when using a top-down camera, the greatest number of models could be shown at once. The performance test was measuring the time it would take to draw a single frame and the results were brought into a spreadsheet program for comparison.
Based on the results, the optimization was started from the tree model. Multiple working methods for optimization were found and based on the optimizations, the model type could deliberately be used. Based on the optimization of the tree model, the tests for the grass models were run again with a vertical camera and they were optimized based on these results. The grass model was optimized by reducing the number of total blades of grass in the model and at the same time simplifying the model and reducing the number of used triangles. The rock model was found to be the easiest to display and optimize and performance was improved by simplifying the model and its textures without a significant decrease in quality.
Based on the optimizations, a shared testing level was created by mixing different model types and optimizations. The same test was run again by using the unoptimized models and from these results, a significant increase in performance was noticed. The optimizations used in creating the shared testing level can be utilized when creating a mobile game.
Suorituskyvyn testaamista varten suunniteltiin ja luotiin testiohjelma Unreal Engine 4 - pelimoottorille. Suunnitteluvaiheessa päätettiin mitä testaamiseen tarvitaan ja miten testit tehdään. Testaamista varten päädyttiin käyttämään kolmea erityyppistä 3D-mallia, joista kaikista oli kolme esimerkkiä. Mallityypeiksi valittiin puun, ruohikon ja kiven mallit. Mallit päädyttiin luomaan ruudukkoon ja kuvaamaan ylhäältä päin, jolloin malleista saatiin ylhäältä päin kuvaavaa kameraa käyttäen näkyviin kerralla mahdollisimman paljon. Suorituskykytestissä mitattiin yhden ruudun piirtämiseen vaadittua aikaa ja tulokset vietiin taulukonlaskentaohjelmaan vertailua varten.
Tulosten perusteella aloitettiin optimointi puun malleista. Malleille löydettiin useita optimointitapoja joiden jälkeen päädyttiin tilanteeseen, jossa malleja voitiin harkitusti käyttää. Puiden mallin optimoinnin perusteella ruohon mallit testattiin uudestaan vaakatasossa ja niitä optimointiin tämän testin tuloksien perusteella. Ruohon mallia onnistuttiin optimoimaan vähentämällä ruohikon tiheyttä mallissa, samalla läpinäkyvien tekstuurien ja mallin käyttämien kolmioiden määrää vähentäen. Kivien mallien käyttäminen ja optimointi huomattiin helpoimmaksi ja siinä onnistuttiin nostamaan suorituskykyä yksinkertaistamalla mallia ja sen tekstuurikarttoja ilman suurta vaikutusta ulkonäköön.
Optimointien tulosten perusteella tehtiin vielä testitaso, jossa eri mallityyppejä ja optimointeja yhdisteltiin. Sama testi tehtiin vielä käyttäen optimoimattomia malleja, jonka jälkeen havaittiin selkeä kasvu suorituskyvyssä. Testitasossa havaittiin että tehdyistä optimoinneista oli hyötyä ja opinnäytetyön tavoitteessa on onnistuttu. Yhteisen testitason luomisessa käytettyjä optimointeja voi hyödyntää mobiilipeliä tehdessä.
For testing the performance, a testing program was planned and built using Unreal Engine 4. In the planning phase, it was first decided what was needed for the testing and how the tests would be conducted. Three different types of 3D models with three variations each were selectedto be used for testing. The chosen types of models were that of a tree, grass, and a rock. The models were generated in a square grid so when using a top-down camera, the greatest number of models could be shown at once. The performance test was measuring the time it would take to draw a single frame and the results were brought into a spreadsheet program for comparison.
Based on the results, the optimization was started from the tree model. Multiple working methods for optimization were found and based on the optimizations, the model type could deliberately be used. Based on the optimization of the tree model, the tests for the grass models were run again with a vertical camera and they were optimized based on these results. The grass model was optimized by reducing the number of total blades of grass in the model and at the same time simplifying the model and reducing the number of used triangles. The rock model was found to be the easiest to display and optimize and performance was improved by simplifying the model and its textures without a significant decrease in quality.
Based on the optimizations, a shared testing level was created by mixing different model types and optimizations. The same test was run again by using the unoptimized models and from these results, a significant increase in performance was noticed. The optimizations used in creating the shared testing level can be utilized when creating a mobile game.