Het maken van een basis 3D-Engine in Java (2 / 5 stap)

Stap 2: De textuur klasse


Voordat springen in de berekeningen voor het vinden van hoe het scherm eruit moet zien 'm I gonna nemen een omweg en het opzetten van een klasse van textuur. Texturen worden toegepast op de diverse muren in het milieu, en komt uit afbeeldingen die in de projectmap opgeslagen. Ik heb 4 texturen vond ik online dat ik in dit project gebruiken zal ook in de beelden. U kunt wat texturen die u wilt gebruiken. Voor het gebruik van deze structuren adviseer ik dat ze in een map in het projectbestand. Te doen ga dit naar de projectmap (in eclipse dit bevindt zich in de map van de werkruimte). Nadat je naar de projectmap maakt een nieuwe map met de titel "res" of iets. Plaats de texturen in deze map. U kunt de texturen ergens anders plaatsen, dit is gewoon waar bewaar ik mijn texturen. Zodra dit klaar is kunnen we beginnen met het schrijven van de code om de texturen bruikbaar.

De invoer voor de klasse zijn:

 import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; 

De klasse-header en de variabelen ervan zal als volgt uitzien:

 public class Texture { public int[] pixels; private String loc; public final int SIZE; 

De pixels van de matrix wordt gebruikt om te houden van de gegevens voor alle pixels in het beeld van de textuur. Loc wordt gebruikt om aan te geven op de computer waar het afbeeldingsbestand voor de textuur kan worden gevonden. GROOTTE is hoe groot de textuur is aan de ene kant (een beeld van 64 x 64 zou hebben grootte 64), en alle structuren zullen perfect vierkant.

De constructor zal het initialiseren van de loc en grootte variabelen en ik roep de methode voor het laden van de afbeeldingsgegevens in pixels. Het kijkt als dit:

 public Texture(String location, int size) { loc = location; SIZE = size; pixels = new int[SIZE * SIZE]; load(); } 

Nu alles wat overblijft voor de textuur klasse is het toevoegen van een load methode om gegevens van beelden en bewaar ze in een array van pixelgegevens. Deze methode zal er zo uitzien:

 private void load() { try { BufferedImage image = ImageIO.read(new File(loc)); int w = image.getWidth(); int h = image.getHeight(); image.getRGB(0, 0, w, h, pixels, 0, w); } catch (IOException e) { e.printStackTrace(); } } 

De methode load werkt door het lezen van de gegevens uit het bestand dat loc wijst op en het schrijven van deze gegevens naar een gebufferde beeld. De gegevens voor elke pixel wordt dan genomen uit de gebufferde afbeelding en opgeslagen in pixels.

Op dit punt wordt de textuur klasse gedaan, dus ik ben van plan te gaan en een paar texturen, die zal worden gebruikt in het definitieve programma definiëren. Om dit te doen zetten dit

 public static Texture wood = new Texture("res/wood.png", 64); public static Texture brick = new Texture("res/redbrick.png", 64); public static Texture bluestone = new Texture("res/bluestone.png", 64); public static Texture stone = new Texture("res/greystone.png", 64); 

tussen de lijn die "public class textuur" en "openbare int [] pixels".

Deze texturen toegankelijk maken voor de rest van het programma let's ga je gang en geef ze aan de Game klasse. Om dit te doen zullen we een ArrayList te houden van alle van de texturen, en zullen we de texturen aan deze ArrayList toevoegen. Het zetten van de volgende lijn van code met de variabelen in de buurt van de bovenkant van de klasse ArrayList aanmaken

 public ArrayList<Texture> textures; 

Deze ArrayList moet worden geïnitialiseerd in de constructor en de texturen moeten ook worden toegevoegd aan het in de constructor. Voeg de volgende beetje van code in de constructor:

 textures = new ArrayList<Texture>(); textures.add(Texture.wood); textures.add(Texture.brick); textures.add(Texture.bluestone); textures.add(Texture.stone); 

En nu texturen zijn goed om te gaan!

Gerelateerde Artikelen

LibreOffice Base Tutorial (het maken van een filter in een formulier)

LibreOffice Base Tutorial (het maken van een filter in een formulier)

In deze Tutorial, ik maak een nieuwe database gemaakt met LibreOffice Base en ik probeer om een filter-formulier met behulp van een externe SQL-Query.Met behulp van tekstvak of keuzelijst met invoervak als parameter voor het zoeken naar items in reco
Het maken van een einde-korrel snijplank - ik maakte het op Techshop

Het maken van een einde-korrel snijplank - ik maakte het op Techshop

hieronder zijn verschillende snijplanken die ik bij Techshop, San Francisco, een lidmaatschap op basis workshop met alle soorten van hulpmiddelen gemaakt heb voor het maken van dingen. Ik heb niet veel ervaring met houtbewerking, dus ik dit project g
Het maken van een drie stenen diamond engagement ring.

Het maken van een drie stenen diamond engagement ring.

Dus, je hebt het meisje van uw dromen ontmoet, en nu wilt u geef haar een mooie ring als een blijvend symbool van uw liefde.Probleem is, kun je niet veroorloven een fancy ontwerper ring, en het je kunt veroorloven zijn massa geproduceerd, bezaaid met
Het maken van een 5 Dollar 5 Minute Birdhouse.

Het maken van een 5 Dollar 5 Minute Birdhouse.

Vorig jaar, verhuisd mijn vriendin en ik naar onze eerste plaats samen, een nucleaire-tijdperk-bungalow met een mooie achtertuin. We wilden zetten sommige vogels huizen, maar we waren allebei erg druk met werk en voorjaar was net om de hoek. Dus, ik
Tutorial over het maken van een zwart Locust boog

Tutorial over het maken van een zwart Locust boog

allereerst ik wil excuses voor eventuele grammaticafouten, en eventuele andere fouten schriftelijk caus ik gebruikte google vertalen voor het vertalen van alle tekst die u hier ziet (Engl is niet mijn eigen languge dus schreef ik allemaal in mijn lan
Het maken van een fossiele duizendpoot.

Het maken van een fossiele duizendpoot.

Na instructable wordt beschreven hoe u een duizendpoot-achtige fossiele.Het grafische deel werd gedaan in 3 NodeBox, een open source applicatie voor generative design (en nog veel meer).De gravure deel werd gedaan op een cnc-Snijder (Trotec - Speedy
Het maken van een Cat(?) Masker met glasvezel

Het maken van een Cat(?) Masker met glasvezel

ik ben niet nieuw voor Instructables, maar ik figuur it's about time ik een account te krijgen en terug te geven aan een website die mij zo veel inspiratie en informatie heeft gegeven. Dit is mijn eerste post, zodat alle opmerkingen en kritiek welkom
Het maken van een DIY borstelloze Gimbal met Arduino

Het maken van een DIY borstelloze Gimbal met Arduino

Dit is een verhaal van mijn derde project met goedkope gyro en Arduino.Na de eerdere twee projecten, Gemakkelijk omgekeerd slinger en 3D kalligrafie, ik gedacht heb van het maken van Camera Gimbal met Arduino. Dan had ik drie beleidsregels voor het p
Het maken van een hart ($) gevormd geld Clip in Blender

Het maken van een hart ($) gevormd geld Clip in Blender

Hallo iedereen, je kent mij vanaf mijn animatronic creaties zoals johnny 5, robot tanks en Wall-E.Vandaag, ga ik u tonen hoe te een hartvormige geld clip maken in de blender.Hier is een link naar de mix bestand https://dl.dropboxusercontent.com/u/187
Het maken van een Nintendo SNES-controller in bluetooth; met behulp van een MSI-BGP100

Het maken van een Nintendo SNES-controller in bluetooth; met behulp van een MSI-BGP100

als, zoals velen, u de BGP100 bluetooth gadget wilt voor het spelen van bluetooth op smartphones en PDA's, maar houd niet van de knoppen en het gevoel van de domeincontroller die wordt geleverd met het, hoe zit de herhuisvesting van de controller in
Flip Top fles dop. Het maken van een duurzaam en sterk fles dop voor elke fles wijn of bier.

Flip Top fles dop. Het maken van een duurzaam en sterk fles dop voor elke fles wijn of bier.

Waarschuwing: Dit ondoorgrondelijke is een work in progress. Heeft behoefte aan een heleboel werk.Met deze kroonkurk kunt u elke fles of pot die u wilt sluiten.Je moet.Een fles met een rand in de buurt van de monding van de nek. (Wijn en bier flessen
Lessen in het maken van een middeleeuwse Vielle

Lessen in het maken van een middeleeuwse Vielle

Dit is mijn replica van een middeleeuwse vielle, een voorouder van de moderne viool. Het werd gespeeld door troubadours uit de 13e tot de 15e eeuw.Dit is niet bedoeld als een complete gids voor het maken van een vielle, noch mijn vielle bijzonder aut
Eenvoudige metaalbewerking technieken en het maken van een vlinder staal

Eenvoudige metaalbewerking technieken en het maken van een vlinder staal

Blacksmithing en traditionele metaalbewerking zijn oude ambachten en technieken die snel uit de samenleving verdwijnen. Sommige van die eenvoudige-keer vreugde te herwinnen door te leren hoe om dingen met een hamer en aambeeld te maken! Creativiteit
Van het scherm voor mij: het maken van een prop

Van het scherm voor mij: het maken van een prop

In dit, mijn eerste instructible, ik in detail te beschrijven hoe ik (met hulp) een variatie op een prop van de BBC-show Torchwood gemaakt.  De prop in kwestie is de "Vortex Manipulator" gevonden op de pols van Captain Jack Harkness.  Hieronder