Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Dacă sunteți un programator Java, probabil că ați dorit să programați în 3D la un moment dat. Dar cum? Ei bine, puteți folosi Java3D și tastați încet fiecare punct dintr-un poligon 3D (ați încercat să aveți încredere în mine, este o idee proastă) sau puteți utiliza Blender (https://blender.org) un program de modelare 3D gratuit și open source împreună cu un script numit Blend2Java (https://sourceforge.net/projects/blend2java/). Cu toate acestea, documentația de pe Blend2Java este aproape inexistentă, așa că de aceea stau aici scriind acest lucru.
Pasul 1: Descărcați programele
Veți avea nevoie de Blender (https://blender.org) și Blend2Java (https://sourceforge.net/projects/blend2java/). Ok, după ce le aveți pe amândouă, începeți făcând un model simplu (sau doar folosind cubul standard) în Blender.
Pasul 2: Exportați-vă modelul în XML
Odată ce ai un model pe care ți-ar plăcea să îl folosești în Blender deschide Mod Editare și apasă tasta „a” pentru a selecta toate punctele. În panoul de jos, selectați editorul de text. Deschideți un fișier nou în editorul de text. Deschideți fișierul blend2java.py pe care l-ați descărcat. Run. Ok obiectul dvs. ar trebui să fie acum în. XML oriunde l-ați salvat (dacă aveți și un mesaj de eroare vă asigură că aveți doar 1 material pentru obiect). Redenumiți obiectul (va avea un nume ciudat).
Pasul 3: Importați obiectul în Java
Shape3D fred = nul; try {XMLDecoder e = new XMLDecoder (new BufferedInputStream (new FileInputStream ("c: /HandShape3D.xml"))); // numele fișierului dvs. aici fred = (Shape3D) e.readObject (); e.close (); } catch (Exception e) {e.printStackTrace (); } ColoringAttributes at = new ColoringAttributes (); Aspect ap = aspect nou (); Color3f col = new Color3f (1.0f, 0.0f, 1.0f); ColoringAttributes ca = new ColoringAttributes (col, ColoringAttributes. NICEST); ap.setColoringAttributes (ca); fred.setAppearance (ap); obj.addChild (fred); introduceți-l în orice cod 3d sau utilizați întregul cod aici import java.io. *; import java.beans. XMLDecoder; import java.applet. Applet; import java.awt. *; import java. awt.event. *; import com.sun.j3d.utils.applet. MainFrame; import com.sun.j3d.utils.universe. *; import javax.media.j3d. *; import javax.vecmath. *; import java.applet. Applet; import java.awt. BorderLayout; import java.awt. Frame; import com.sun.j3d.utils.applet. MainFrame; import com.sun.j3d.utils.geometry. ColorCube; import com.sun. j3d.utils.universe. *; import com.sun.j3d.utils.behavior.mouse. *; import javax.media.j3d. *; import javax.vecmath. *; import java.awt.event. *; import java.util. Enumeration; public class MouseBehaviorApp extends Applet {public BranchGroup createSceneGraph () {BranchGroup objRoot = new BranchGroup (); TransformGroup objTransform = new TransformGroup (); objTransform.setCapability (TransformGroup. ALLOW_TRANSFORM_WRITE); objTransform.setCapability (TransformGroup. ALLOW_TRANSFORM_READ); objRoot.addChild (objTransform); Shape3D fred = nul; try {XMLDecoder e = new XMLDecoder (new BufferedInputStream (new FileInputStream ("c: /HandShape3D.xml"))); fred = (Shape3D) e.readObject (); e.close (); } catch (Exception e) {e.printStackTrace (); } ColoringAttributes at = new ColoringAttributes (); Aspect ap = Aspect nou (); Color3f col = new Color3f (1.0f, 0.0f, 1.0f); ColoringAttributes ca = new ColoringAttributes (col, ColoringAttributes. NICEST); ap.setColoringAttributes (ca); fred.setAppearance (ap); objTransform.addChild (fred); MouseRotate myMouseRotate = new MouseRotate (); myMouseRotate.setTransformGroup (objTransform); myMouseRotate.setSchedulingBounds (nou BoundingSphere ()); objRoot.addChild (myMouseRotate); MouseTranslate myMouseTranslate = new MouseTranslate (); myMouseTranslate.setTransformGroup (objTransform); myMouseTranslate.setSchedulingBounds (nou BoundingSphere ()); objRoot.addChild (myMouseTranslate); MouseZoom myMouseZoom = new MouseZoom (); myMouseZoom.setTransformGroup (objTransform); myMouseZoom.setSchedulingBounds (nou BoundingSphere ()); objRoot.addChild (myMouseZoom); objRoot.compile (); returnează objRoot; } public MouseBehaviorApp () {setLayout (nou BorderLayout ()); Canvas3D canvas3D = new Canvas3D (SimpleUniverse.getPreferredConfiguration ()); add ("Centru", canvas3D); Scena BranchGroup = createSceneGraph (); SimpleUniverse simpleU = nou SimpleUniverse (canvas3D); simpleU.getViewingPlatform (). setNominalViewingTransform (); simpleU.addBranchGraph (scenă); } public static void main (String args) {Frame frame = new MainFrame (new MouseBehaviorApp (), 256, 256); }} utilizați acest lucru pentru o programă completă! ai terminat! și apoi spui „acum ce”? Habar n-am! Tocmai am învățat Java acum o lună lol!