Hem Personliga finanser JavaFX Programmeringsexempel: 3D Box - dummies

JavaFX Programmeringsexempel: 3D Box - dummies

Innehållsförteckning:

Video: JavaFX Java GUI Tutorial - 1 - Creating a Basic Window 2024

Video: JavaFX Java GUI Tutorial - 1 - Creating a Basic Window 2024
Anonim

JavaFX har inbyggt stöd för realistisk 3D-modellering. Faktum är att JavaFX-scenen är tredimensionell i naturen. De flesta JavaFX-program fungerar i bara två dimensioner, som bara anger x- och y-koordinater. Men allt du behöver göra för att gå in i den tredje dimensionen är att ange z-koordinater för att placera noderna på din scengraf i tredimensionellt utrymme.

JavaFX innehåller en rik uppsättning klasser som är dedikerade till att skapa och visualisera 3D-objekt i 3D-världar. Du kan skapa tredimensionella former, till exempel kuber och cylindrar. Du kan flytta den virtuella kameran runt i 3D-rymden för att titta på dina 3D-objekt från olika vinklar och olika perspektiv.

Och du kan till och med lägga till ljuskällor för att noggrant kontrollera det slutliga utseendet på dina virtuella världar. Kort sagt, JavaFX kan producera häpnadsväckande 3D-scener.

Lägg till en 3D-ruta i din Java-värld

I det här steget lägger du till ett objekt i 3D-världen: I det här fallet en ruta som representeras av boxklassen. Här är koden:

Box box = Ny Box (100, 100, 100); låda. setMaterial (blueStuff); låda. setTranslateX (150); låda. setTranslateY (-100); låda. setTranslateZ (-100); rot. getChildren (). lägg (fält);

Boxkonstruktorn accepterar tre argument som representerar boxens bredd, höjd och djup. I detta exempel är alla tre inställda på 100. Således kommer lådan att dras som en kub med varje sida som mäter 100 enheter.

Lådan har samma material som cylindern; då är det översatt på alla tre axlarna så att du kan få en perspektivvy av lådan. Figuren visar hur rutan visas när den görs. Som du kan se är lådans vänstra och nedre sidor synliga eftersom du översatt läget av lådan upp och till höger så att kameran kan få lite perspektiv.

Rotera 3D-rutan

I det här steget roterar du rutan för att skapa en ännu mer intressant perspektivvy. Det finns två sätt att rotera ett 3D-objekt. Det enklaste är att ringa objektets setRotate-metod och tillhandahålla en rotationsvinkel:

rutan. setRotate (25);

Som standard roterar objektet på sin z-axel. Om det här är svårt att visualisera, kan du föreställa dig att du skär objektet med en lång pinne som är parallell med z-axeln. Snurra sedan objektet på spett.

Om du vill rotera objektet längs en annan axel, ring först setRotationAxis. Till exempel, för att snurra objektet på sin x-axel, använd den här sekvensen:

rutan. setRotationAxis (Rotate. X_AXIS); låda. setRotate (25);

Föreställ dig att köra spett genom lådan med spett parallellt med x-axeln och spinna sedan lådan 25 grader.

Det enda problemet med att använda setRotate-metoden för att rotera ett 3D-objekt är att det bara fungerar på en axel åt gången. Antag att du vill rotera rutan 25 grader på både z- och x-axeln. Följande kod kommer inte att göra detta:

rutan. setRotationAxis (Rotate. X_AXIS); låda. setRotate (25); låda. setRotationAxis (Rotate. Z_AXIS); låda. setRotate (25);

När setRotate-metoden kallas andra gången för att rotera rutan på z-axeln, återställs x-axelrotationen.

För att rotera på mer än en axel, måste du använda Rotate-klassen i stället. Du skapar en separat Rotate-instans för varje axel som du vill rotera objektet på och lägger sedan till alla Rotate-instanser i objektets Transforms-samling via getTransforms (). lägg tillAll metod, så här:

Rotera rxBox = Ny Rotate (0, 0, 0, 0, Rotate. X_AXIS); Rotera ryBox = Ny Rotate (0, 0, 0, 0, Rotate. Y_AXIS); Rotate rzBox = new Rotate (0, 0, 0, 0, Rotate. Z_AXIS); rxBox. setAngle (30); ryBox. setAngle (50); rzBox. setAngle (30); låda. getTransforms (). addAll (rxBox, ryBox, rzBox);

Rotatkonstruktorn accepterar fyra parametrar. De första tre är x-, y- och z-koordinaterna för punkten i objektet genom vilket rotationsaxeln kommer att passera. Vanligtvis anger du nollor för dessa parametrar för att rotera objektet runt dess mittpunkt. Den fjärde parametern anger rotationsaxeln.

Denna figur visar hur rutan visas efter att den har roterats.

Lådan efter att den har roterats.

JavaFX Programmeringsexempel: 3D Box - dummies

Redaktörens val

Organisera e-postmarknadsföring innehåll för att matcha dina mål - dummies

Organisera e-postmarknadsföring innehåll för att matcha dina mål - dummies

När du utvecklar e-postmarknadsföring innehåll, överväga hur din publik kommer att uppleva dina avsikter. E-postmeddelanden ger större mening åt dina framtidsutsikter och kunder när innehållet du skapar och levererar är knutet samman under kända teman. När din tid är begränsad kan du bli frestad att skapa e-postinnehåll som passar ditt schema bättre ...

Nya formulärinmatningstyper i HTML5 - dummies

Nya formulärinmatningstyper i HTML5 - dummies

HTML-formulär är centrerade kring det ödmjuka men flexibla inmatningselementet . HTML5 lägger till ett antal väldigt användbara former av inmatning som hjälper till att göra HTML till ett mer modernt användargränssnitt. Även om stöd för dessa taggar inte är universellt är det säkert att börja använda dem nu. Varje webbläsare (även IE6) som inte förstår den avancerade ...

Utföra visuell designtest på en ny webbplats - dummies

Utföra visuell designtest på en ny webbplats - dummies

Det visuella designteamet för en webbplats kan skapa några olika "look and feel" -alternativ och testa dem med användare. Den här designen kallas perfekt för att passera en hemsida och en inre eller undersida av din webbplats, men de är inte 100 procent korrekta när det gäller ...

Redaktörens val

Objektiv till dina digitala SLR-dummies

Objektiv till dina digitala SLR-dummies

Zoomlinser är inte den enda typen av linser som är tillgängliga för din dSLR . Du borde veta hur de skiljer sig från de andra alternativen. Här är några av alternativen till zoomlinser i allmänhet och vanliga zoomlinser i synnerhet. Prime-objektiv En primärlins har en fast brännvidd. En lins med fast fokusering ...

Hur man skapar bra belysning för din digitala fotografi - dummies

Hur man skapar bra belysning för din digitala fotografi - dummies

Ja, du kan återskapa bra belysning om du vet vad du gör. Och ingenting kan förstöra ett foto snabbare än dålig belysning. Du kan göra många förbättringar till ett utmanande ämne helt enkelt genom att använda bra belysningsteknik. Din farbrors skalliga huvud, en tonåring som är mindre än perfekt, en hård upplyst strandplats, en droppe ...

ÖKa bildförstoring med telekonverterare - dummies

ÖKa bildförstoring med telekonverterare - dummies

En telekonverter är en sekundärlins som du placerar mellan din lins och kamerokroppen (precis som förlängningsröret). En telekonverter tar emot bilden som skapats av din lins och ger en förstorad version av den till kamerans digitala sensor. Detta kan vara ett användbart verktyg i makrofotografering men kan också vara ...

Redaktörens val

Undvik hack på sårbara trådlösa arbetsstationer - dummies

Undvik hack på sårbara trådlösa arbetsstationer - dummies

Trådlösa arbetsstationer har massor av säkerhetsproblem och kan vara inriktade på hackar - från svaga lösenord till opatchade säkerhetshål till lagring av WEP- och WPA-krypteringsnycklar lokalt. De flesta av de kända trådlösa klientens sårbarheter har blivit patchade av sina respektive leverantörer, men du vet aldrig om alla dina trådlösa system är ...

Grundläggande Mac Network Settings - dummies

Grundläggande Mac Network Settings - dummies

De flesta nätverksinställningarna på en Mac är automatiska. Om du föredrar kan du titta på och ändra standardnätverksinställningarna genom att följa dessa steg: