Innehållsförteckning:
Video: GÖR DITT EGET SPEL DEL 2 2024
I några korta steg kan du börja skapa ett relativt enkelt 3D-program i JavaFX som visar den tredimensionella världen (ett exempel visas nedan). Som du kan se innehåller detta 3D-utrymme fyra former: en sfär, en kub, en cylinder och en pyramid. Den här kortlistan visar hur du börjar med en cylinder.
Sätt på din Thinking Cap, eftersom det här är lite tekniskt ibland, och många av koncepten om att bygga 3D-världar kan vara förvirrande, särskilt om det här är din första erfarenhet av 3D-programmering.
Steg ett: Lägg till en cylinder
I det här steget lägger du till ett grundläggande 3D-objekt till din värld. JavaFX erbjuder tre grundläggande former som du kan lägga till: cylindrar, lådor och sfärer. Börja med att lägga till en cylinder:
Cylindercylinder = Ny Cylinder (100, 50); rot. getChildren (). lägg (cylinder);
Cylinderklasskonstruktorn accepterar två argument: cylinderns radie och dess höjd. Detta exempel skapar en cylinder ungefär formen av en hockeypuck, fyra gånger så bred som den är lång; Då lägger den cylindern till scenens rotknutpunkt.
Vid denna tidpunkt finns cylindern i världen, men är inte synlig. Baserat på vad du vet om 2D-former kan du vara frestad att göra den synlig genom att lägga till en fyllnadsfärg (setFill) eller en slagfärg (setStroke). Men det är inte hur 3D-objekt fungerar. I nästa steg upptäcker du hur man applicerar ett material på ytan av cylindern så att den blir synlig i scenen.
Steg två: Skapa ett material
Att göra ansikten på ett 3D-objekt är mycket mer komplicerat än att göra platta, tvådimensionella objekt. För ett 2D-objekt applicerar du bara ett Paint-objekt via setFill-metoden. Färgen kan vara en enkel färg, en gradientfärg eller en bild.
För 3D-objekt applicerar du inte färg. Istället tillämpar du ett speciellt objekt som heter ett Phong-material , representerat av PhongMaterial-klassen. Ett Phong-material (uppkallat efter Bui Tuong Phong, en banbrytande datorgrafikexpert på 1970-talet) ger det sätt på vilket ansikten av ett 3D-objekt realistiskt återges.
Följande kod skapar ett enkelt Phong-material baserat på två nyanser av blått och applicerar sedan materialet till cylindern:
PhongMaterial blueStuff = new PhongMaterial (); blueStuff. setDiffuseColor (Färg. LIGHTBLUE); blueStuff. setSpecularColor (Color. BLUE); cylinder. setMaterial (blueStuff);
Efter att Phong-materialet har applicerats på cylindern kommer cylindern att vara synlig inom scenen, som visas.
3D-cylindern med Phong-material.Steg tre: Översätt cylindern
Du märkte utan tvekan att cylindern inte ser väldigt tredimensionell ut. Det beror på att du tittar på kanten: Kameran pekar rakt vid skärningspunkten mellan x- och y-axlarna, och cylindern är centrerad på den punkten.
För att få lite perspektiv på cylindern kan du flytta den till en annan plats i 3D-utrymme genom att översätta x-, y- och z-koordinaterna. Till exempel:
cylinder. setTranslateX (-200); cylinder. setTranslateY (200); cylinder. setTranslateZ (200);
Här flyttas cylindern 200 enheter till vänster, 200 enheter ner och 200 enheter från kameran. Den resulterande utsikten ser mer ut som en cylinder, som du kan se här.
Den översatta 3D-cylindern.I denna figur ser det ut som om cylindern har roterats framåt så att du kan se lite av den övre ytan. Detta är emellertid inte fallet. Vad som faktiskt har hänt är att du inte längre tittar på cylinderkanten.
Istället, eftersom cylindern ligger under kameran, ser du ner på den. Således kan du se lite av toppsidan. Du tittar också på det från sidan, vilket förklarar varför det verkar bara en smula lutad.