Blender gebruiken om Java3D-modellen te maken: 3 stappen
Blender gebruiken om Java3D-modellen te maken: 3 stappen
Anonim

Als je een Java-programmeur bent, heb je waarschijnlijk ooit in 3D willen programmeren. Maar hoe? Nou, je zou Java3D kunnen gebruiken en langzaam elk punt in een 3D-polygoon kunnen typen (geprobeerd dat het een slecht idee is), of je zou Blender (https://blender.org) kunnen gebruiken, een gratis en open source 3D-modelleringsprogramma samen met een script genaamd Blend2Java (https://sourceforge.net/projects/blend2java/). De documentatie over Blend2Java is echter bijna onbestaande, dus daarom zit ik hier dit te schrijven.

Stap 1: Download de programma's

Je hebt Blender (https://blender.org) en Blend2Java (https://sourceforge.net/projects/blend2java/) nodig. Oké, als je ze allebei hebt, begin dan met het maken van een eenvoudig model (of gebruik gewoon de standaard kubus) in Blender.

Stap 2: Exporteer uw model naar XML

Zodra je een model hebt dat je in Blender wilt gebruiken, open je de bewerkingsmodus en druk je op de "a"-toets om alle punten te selecteren. Selecteer in het onderste paneel teksteditor. Open een nieuw bestand in de teksteditor. Open het blend2java.py-bestand dat u hebt gedownload. Run. Ok, je object zou nu in. XML moeten staan waar je het ook hebt opgeslagen (als je een foutmelding hebt, zorg er dan voor dat je maar 1 materiaal voor het object hebt). Hernoem het object (het zal een rare naam hebben).

Stap 3: Importeer het object naar Java

Shape3D fred = null; probeer { XMLDecoder e = nieuwe XMLDecoder (nieuwe BufferedInputStream (nieuwe FileInputStream ("c:/HandShape3D.xml"))); //uw bestandsnaam hier fred = (Shape3D) e.readObject(); e.sluiten(); } catch(Uitzondering e) { e.printStackTrace(); } ColoringAttributes at=new ColoringAttributes(); Uiterlijk ap = nieuw Uiterlijk(); Color3f col = nieuwe Color3f(1.0f, 0.0f, 1.0f); ColoringAttributes ca = nieuwe ColoringAttributes(col, ColoringAttributes. NICEST); ap.setColoringAttributes(ca); fred.setAppearance(ap); obj.addChild(fred);voeg dit in een 3D-code in of gebruik de hele code hier 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;java.awt. BorderLayout importeren;java.awt. Frame importeren;com.sun.j3d.utils.applet. MainFrame importeren;com.sun.j3d.utils.geometry. ColorCube importeren;com.sun importeren. 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;public class MouseBehaviorApp breidt Applet uit {public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); TransformGroup objTransform = nieuwe TransformGroup(); objTransform.setCapability (TransformGroup. ALLOW_TRANSFORM_WRITE); objTransform.setCapability (TransformGroup. ALLOW_TRANSFORM_READ); objRoot.addChild(objTransform); Shape3D fred = null; probeer { XMLDecoder e = nieuwe XMLDecoder (nieuwe BufferedInputStream (nieuwe FileInputStream ("c:/HandShape3D.xml"))); fred = (Shape3D) e.readObject(); e.sluiten(); } catch(Uitzondering e) { e.printStackTrace(); } ColoringAttributes at=new ColoringAttributes(); Uiterlijk ap = nieuw Uiterlijk(); Color3f col = nieuwe Color3f(1.0f, 0.0f, 1.0f); ColoringAttributes ca = nieuwe ColoringAttributes(col, ColoringAttributes. NICEST); ap.setColoringAttributes(ca); fred.setAppearance(ap); objTransform.addChild(fred); MouseRotate myMouseRotate = nieuwe MouseRotate(); myMouseRotate.setTransformGroup(objTransform); myMouseRotate.setSchedulingBounds (nieuwe BoundingSphere()); objRoot.addChild(myMouseRotate); MouseTranslate myMouseTranslate = nieuwe MouseTranslate(); myMouseTranslate.setTransformGroup(objTransform); myMouseTranslate.setSchedulingBounds (nieuwe BoundingSphere()); objRoot.addChild(myMouseTranslate); MouseZoom myMouseZoom = nieuwe MouseZoom(); myMouseZoom.setTransformGroup(objTransform); myMouseZoom.setSchedulingBounds (nieuwe BoundingSphere()); objRoot.addChild(myMouseZoom); objRoot.compile(); retourneert objRoot; } public MouseBehaviorApp() { setLayout(new BorderLayout()); Canvas3D canvas3D = nieuw Canvas3D(SimpleUniverse.getPreferredConfiguration()); add("Midden", canvas3D); BranchGroup scene = createSceneGraph(); SimpleUniverse simpleU = nieuw SimpleUniverse(canvas3D); simpleU.getViewingPlatform().setNominalViewingTransform(); simpleU.addBranchGraph(scène); } public static void main (String args) { Frame frame = new MainFrame (new MouseBehaviorApp (), 256, 256); }}gebruik dit voor een compleet programma! je bent klaar! en dan zeg je "wat nu"? Ik heb geen idee! Ik heb net een maand Java geleerd lol!