Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Si vous êtes un programmeur Java, vous avez probablement déjà voulu programmer en 3D. Mais comment? Eh bien, vous pouvez utiliser Java3D et taper lentement chaque point dans un polygone 3D (essayé, croyez-moi, c'est une mauvaise idée), ou vous pouvez utiliser Blender (https://blender.org) un programme de modélisation 3D gratuit et open source avec un script appelé Blend2Java (https://sourceforge.net/projects/blend2java/). Cependant, la documentation sur Blend2Java est presque inexistante, c'est pourquoi je suis assis ici à écrire ceci.
Étape 1: Téléchargez les programmes
Vous aurez besoin de Blender (https://blender.org) et de Blend2Java (https://sourceforge.net/projects/blend2java/). Ok, une fois que vous les avez tous les deux, commencez par créer un modèle simple (ou simplement en utilisant le cube standard) dans Blender.
Étape 2: Exportez votre modèle vers XML
Une fois que vous avez un modèle que vous souhaitez utiliser dans Blender, ouvrez le mode Édition et appuyez sur la touche "a" pour sélectionner tous les points. Dans le panneau inférieur, sélectionnez l'éditeur de texte. Ouvrez un nouveau fichier dans l'éditeur de texte. Ouvrez le fichier blend2java.py que vous avez téléchargé. Run. Ok, votre objet devrait maintenant être au format. XML où vous l'avez enregistré (si vous avez un message d'erreur, assurez-vous que vous n'avez qu'un seul matériau pour l'objet). Renommez l'objet (il aura un nom bizarre).
Étape 3: importer l'objet vers Java
Shape3D fred = nul; try { XMLDecoder e = new XMLDecoder(new BufferedInputStream(new FileInputStream("c:/HandShape3D.xml"))); //votre nom de fichier ici fred = (Shape3D) e.readObject(); e.close(); } catch(Exception e) { e.printStackTrace(); } ColouringAttributes at=new ColouringAttributes(); Apparence ap = new Apparence(); Color3f col = nouveau Color3f(1.0f, 0.0f, 1.0f); AttributsColoration ca = new AttributsColoration(col, AttributsColoration. NICEST); ap.setColoringAttributes(ca); fred.setAppearance(ap); obj.addChild(fred); insérez-le dans n'importe quel code 3D ou utilisez le code entier ici import java.io.*;import java.beans. XMLDecoder;import java.applet. Applet;import java.awt.*;import java. awt.event.*;importer com.sun.j3d.utils.applet. MainFrame;importer com.sun.j3d.utils.universe.*;importer javax.media.j3d.*;importer javax.vecmath.*;importer 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.behaviors.mouse.*;import javax.media.j3d.*;import javax.vecmath.*;import java.awt.event.*;import java.util. Enumeration;classe publique MouseBehaviorApp étend 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(); } ColouringAttributes at=new ColouringAttributes(); Apparence ap = new Apparence(); Color3f col = nouveau Color3f(1.0f, 0.0f, 1.0f); AttributsColoration ca = new AttributsColoration(col, AttributsColoration. NICEST); ap.setColoringAttributes(ca); fred.setAppearance(ap); objTransform.addChild(fred); MouseRotate myMouseRotate = new MouseRotate(); myMouseRotate.setTransformGroup(objTransform); myMouseRotate.setSchedulingBounds(new BoundingSphere()); objRoot.addChild(myMouseRotate); MouseTranslate myMouseTranslate = new MouseTranslate(); myMouseTranslate.setTransformGroup(objTransform); myMouseTranslate.setSchedulingBounds(new BoundingSphere()); objRoot.addChild(myMouseTranslate); MouseZoom myMouseZoom = new MouseZoom(); myMouseZoom.setTransformGroup(objTransform); myMouseZoom.setSchedulingBounds(new BoundingSphere()); objRoot.addChild(myMouseZoom); objRoot.compile(); renvoie objRoot; } public MouseBehaviorApp() { setLayout(new BorderLayout()); Canvas3D canvas3D = nouveau Canvas3D(SimpleUniverse.getPreferredConfiguration()); add("Centre", canvas3D); Scène BranchGroup = createSceneGraph(); SimpleUniverse simpleU = new SimpleUniverse(canvas3D); simpleU.getViewingPlatform().setNominalViewingTransform(); simpleU.addBranchGraph(scène); } public static void main(String args) { Frame frame = new MainFrame(new MouseBehaviorApp(), 256, 256); }} utilisez ceci pour une programmation complète ! vous avez terminé ! Et puis vous dites «. Je viens d'apprendre Java il y a un mois lol !