Hyppää sisältöön
    • Suomeksi
    • På svenska
    • In English
  • Suomi
  • Svenska
  • English
  • Kirjaudu
Hakuohjeet
JavaScript is disabled for your browser. Some features of this site may not work without it.
Näytä viite 
  •   Ammattikorkeakoulut
  • Kajaanin ammattikorkeakoulu
  • Opinnäytetyöt (Avoin kokoelma)
  • Näytä viite
  •   Ammattikorkeakoulut
  • Kajaanin ammattikorkeakoulu
  • Opinnäytetyöt (Avoin kokoelma)
  • Näytä viite

3D Graphics in CMD

Anderson, Aleksi (2025)

 
Avaa tiedosto
Anderson_Aleksi.pdf (1.179Mt)
Lataukset: 


Anderson, Aleksi
2025
Näytä kaikki kuvailutiedot
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2025101025903
Tiivistelmä
Tässä opinnäytetyössä käsiteltiin yksinkertaisen 3D-renderöintimoottorin komponentteja ja rakennetta. Tavoitteena työssä oli saada piirrettyä vektoripohjainen objekti kaksiulotteiselle, pikseleistä koostuvalle näytölle. Työ jaettiin kahteen osaan; ensimmäinen selittää 3D-maailman renderöintiin liittyvän teorian ja algoritmit pseudokoodiesimerkeillä, kun taas toinen selittää näiden tekniikoiden käytännön toteutuksen C++-ohjelmointikielellä.

3D-renderöinnin teoriaa käsittelevässä osiossa käsiteltiin ensin ikkunan ja piirtoalustan luomista pikseleiden piirtämistä varten. Sitten käytiin läpi rasterointialgoritmeja viiva- ja kolmiorasterointiin sekä täytetylle kolmiolle että lankamallille. 3D-mallien tiedostomuodot ja niiden lataaminen muistista selitettiin lyhyesti, jotta voitiin välttää niiden manuaalista määrittelyä koodissa. Renderöinnin laajentamiseksi yhdestä objektista kokonaiseksi maailmaksi käytiin läpi 3D-muunnokset matriiseilla ja kameran simulointi näkö- ja perspektiiviprojektioilla. Sitten selitettiin näkymän asianmukaisen renderöinnin varmistamiseksi kolmion leikkaus ja pikselin syvyyspuskurointi. Tässä vaiheessa myös selitettiin takapintojen karsinta-algoritmi, jota käytettiin suorituskyvyn parantamiseksi. Lopuksi lisättiin teksturointi ja yksinkertainen varjostus, jotta renderöityyn maailmaan saatiin lisää yksityiskohtia.

Toteutusta käsittelevässä osiossa käytiin läpi teoriassa käsitellyn renderöintimoottorin yksi mahdollinen toteutus C++-ohjelmointikielellä. Toteutuksessa käytettiin suurimmaksi osaksi C++:n vakiokirjastoa, ulkoisia kirjastoja käytettiin tekstuurin ja objektin levyltä lataamiseen. Tämä toteutus yhdisti teorian tekniikat ja algoritmit toimivaksi 3D-renderöintimoottoriksi, jota sitten käytettiin pelattavan demon luomiseen. Lisäksi selitettiin Windows-konsolin käyttö perinteisen ikkunan korvikkeena ja se, miten renderöintimoottorin tuloste voidaan näyttää sillä.
 
This paper goes over the components and construction of a simple 3D rendering pipeline: the process of drawing a vector-based object onto a 2-dimensional canvas of pixels. It is split into two parts; the first explains the theory and algorithms involved in rendering 3D scenes with examples in pseudocode, while the second explains an actual implementation of these techniques.

The section on 3D rendering theory first covers making a basic window and canvas to draw pixels on. Then, basic rasterization algorithms are discussed for line and triangle rasterization, both filled and wireframe. 3D model formats, and loading them from files, are briefly explained to reduce the manual work of defining them in code. To expand the rendering from a single model to a full scene, 3D transformations with matrices, and simulating a camera with view and perspective projections were explained. Then, in order to ensure the proper rendering of the scene clipping and depth buffering were explained, as well as an optimization in the form of back face culling. Finally, to add more detail to the rendered scene, texturing, and basic shading were added.

The section on the implementation goes over a possible implementation of these techniques and algorithms in C++, using mostly the standard library. This implementation combines the techniques discussed into a functional 3D rendering engine, which is then used to make a playable demo. The use of the Windows Console as a substitute for a traditional window and how the output of the rendering engine can be displayed on it is also explained.
 
Kokoelmat
  • Opinnäytetyöt (Avoin kokoelma)
Ammattikorkeakoulujen opinnäytetyöt ja julkaisut
Yhteydenotto | Tietoa käyttöoikeuksista | Tietosuojailmoitus | Saavutettavuusseloste
 

Selaa kokoelmaa

NimekkeetTekijätJulkaisuajatKoulutusalatAsiasanatUusimmatKokoelmat

Henkilökunnalle

Ammattikorkeakoulujen opinnäytetyöt ja julkaisut
Yhteydenotto | Tietoa käyttöoikeuksista | Tietosuojailmoitus | Saavutettavuusseloste