Taula de continguts:

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

Vídeo: Ús de Blender per crear models Java3D: 3 passos

Vídeo: Ús de Blender per crear models Java3D: 3 passos
Vídeo: Blender 3.0 Asset Browser - FULL Tutorial 2024, De novembre
Anonim
Ús de Blender per crear models Java3D
Ús de Blender per crear models Java3D

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

Exporteu el vostre model a XML
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

Importeu l’objecte a Java
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: