Ús de Blender per crear models Java3D: 3 passos
Ús de Blender per crear models Java3D: 3 passos
Anonim

Si sou un programador de Java, probablement hagueu volgut programar en 3D en algun moment. Però com? Bé, podríeu utilitzar Java3D i escriure lentament cada punt en un polígon 3D (heu provat que confieu en mi és una mala idea), o bé podeu utilitzar Blender (https://blender.org) un programa de modelatge 3D de codi obert i gratuït juntament amb un script anomenat Blend2Java (https://sourceforge.net/projects/blend2java/). Tanmateix, la documentació de Blend2Java és gairebé inexistent, per això he estat aquí a escriure això.

Pas 1: descarregueu els programes

Necessitareu Blender (https://blender.org) i Blend2Java (https://sourceforge.net/projects/blend2java/). D'acord, un cop els tingueu, comenceu fent un model senzill (o simplement utilitzant el cub estàndard) a Blender.

Pas 2: exporteu el vostre model a XML

Un cop tingueu un model, voldríeu utilitzar-lo al mode d'edició obert de Blender i premeu la tecla "a" per seleccionar tots els punts. Al tauler inferior, seleccioneu un editor de text. Obriu un fitxer nou a l'editor de text. Obriu el fitxer blend2java.py que heu descarregat. Run. Ok, ara l’objecte hauria d’estar a. XML allà on l’heu desat (si teniu un missatge d’error i assegureu-vos que només teniu 1 material per a l’objecte). Canvieu el nom de l'objecte (tindrà un nom estrany).

Pas 3: importeu l'objecte a Java

Shape3D fred = nul; proveu {XMLDecoder e = new XMLDecoder (new BufferedInputStream (new FileInputStream ("c: /HandShape3D.xml"))); // el vostre nom de fitxer aquí fred = (Shape3D) e.readObject (); e.close (); } catch (Excepció e) {e.printStackTrace (); } ColoringAttributes a = new ColoringAttributes (); Aparença ap = nova aparença (); 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); inseriu-lo a qualsevol codi 3d o utilitzeu tot el codi aquí importeu java.io. *; importeu java.beans. XMLDecoder; importeu java.applet. Applet; importeu java.awt. *; importeu 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; classe pública MouseBehaviorApp estén 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; proveu {XMLDecoder e = new XMLDecoder (new BufferedInputStream (new FileInputStream ("c: /HandShape3D.xml"))); fred = (Shape3D) e.readObject (); e.close (); } catch (Excepció e) {e.printStackTrace (); } ColoringAttributes a = new ColoringAttributes (); Aparença ap = nova aparença (); 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 (nova BoundingSphere ()); objRoot.addChild (myMouseRotate); MouseTranslate myMouseTranslate = nou MouseTranslate (); myMouseTranslate.setTransformGroup (objTransform); myMouseTranslate.setSchedulingBounds (nova BoundingSphere ()); objRoot.addChild (myMouseTranslate); MouseZoom myMouseZoom = new MouseZoom (); myMouseZoom.setTransformGroup (objTransform); myMouseZoom.setSchedulingBounds (nova BoundingSphere ()); objRoot.addChild (myMouseZoom); objRoot.compile (); tornar objRoot; } public MouseBehaviorApp () {setLayout (nou BorderLayout ()); Canvas3D canvas3D = new Canvas3D (SimpleUniverse.getPreferredConfiguration ()); add ("Centre", canvas3D); Escena BranchGroup = createSceneGraph (); SimpleUniverse simpleU = nou SimpleUniverse (canvas3D); simpleU.getViewingPlatform (). setNominalViewingTransform (); simpleU.addBranchGraph (escena); } public static void main (String args) {Frame frame = new MainFrame (new MouseBehaviorApp (), 256, 256); }} utilitzeu-ho per obtenir un programa complet. ja has acabat! i després dius "ara què"? No en tinc ni idea. Acabo d'aprendre Java fa un mes jeje!

Recomanat: