Spisu treści:

Używanie Blendera do tworzenia modeli Java3D: 3 kroki
Używanie Blendera do tworzenia modeli Java3D: 3 kroki

Wideo: Używanie Blendera do tworzenia modeli Java3D: 3 kroki

Wideo: Używanie Blendera do tworzenia modeli Java3D: 3 kroki
Wideo: Zaczynamy zabawę z Blenderem! #1 2024, Listopad
Anonim
Używanie Blendera do tworzenia modeli Java3D
Używanie Blendera do tworzenia modeli Java3D

Jeśli jesteś programistą Java, prawdopodobnie chciałeś kiedyś programować w 3D. Ale jak? Cóż, możesz użyć Java3D i powoli wpisywać każdy punkt wielokąta 3D (próbowałem, zaufaj mi, to zły pomysł) lub możesz użyć Blendera (https://blender.org) darmowego i otwartego programu do modelowania 3D wraz z skrypt o nazwie Blend2Java (https://sourceforge.net/projects/blend2java/). Jednak dokumentacja Blend2Java prawie nie istnieje, dlatego siedzę tutaj i piszę to.

Krok 1: Pobierz programy

Będziesz potrzebował Blendera (https://blender.org) i Blend2Java (https://sourceforge.net/projects/blend2java/). Ok, kiedy już je masz, zacznij od stworzenia prostego modelu (lub po prostu za pomocą standardowej kostki) w Blenderze.

Krok 2: Eksportuj swój model do XML

Eksportuj swój model do XML
Eksportuj swój model do XML

Gdy masz już model, którego chcesz użyć w Blenderze, otwórz tryb edycji i naciśnij klawisz „a”, aby wybrać wszystkie punkty. W dolnym panelu wybierz edytor tekstu. Otwórz nowy plik w edytorze tekstu. Otwórz pobrany plik blend2java.py. Run. Ok twój obiekt powinien być teraz w. XML gdziekolwiek go zapisałeś (jeśli masz i komunikat o błędzie upewnij się, że masz tylko 1 materiał dla obiektu). Zmień nazwę obiektu (będzie miał dziwną nazwę).

Krok 3: Zaimportuj obiekt do Javy

Zaimportuj obiekt do Javy
Zaimportuj obiekt do Javy

Shape3D fred = null; try { XMLDecoder e = new XMLDecoder(new BufferedInputStream(new FileInputStream("c:/HandShape3D.xml"))); //Twoja nazwa pliku tutaj fred = (Shape3D) e.readObject(); e.zamknij(); } catch(Wyjątek e) { e.printStackTrace(); } ColourAttributes at=new ColourAttributes(); Wygląd ap = nowy Wygląd(); Color3f col = nowy Color3f(1.0f, 0.0f, 1.0f); ColourAttributes ca = new ColourAttributes(col, ColourAttributes. NICEST); ap.setColoringAtrybuty(ca); fred.setWygląd(ap); obj.addChild(fred);wstaw to do dowolnego kodu 3D lub użyj całego kodu tutaj 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.behaviors.mouse.*;import javax.media.j3d.*;import javax.vecmath.*;import java.awt.event.*;import java.util. Enumeration;public class MouseBehaviorApp extends Aplet { 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 = null; try { XMLDecoder e = new XMLDecoder(new BufferedInputStream(new FileInputStream("c:/HandShape3D.xml"))); fred = (Kształt3D) e.odczytajObiekt(); e.zamknij(); } catch(Wyjątek e) { e.printStackTrace(); } ColourAttributes at=new ColourAttributes(); Wygląd ap = nowy Wygląd(); Color3f col = nowy Color3f(1.0f, 0.0f, 1.0f); ColourAttributes ca = new ColourAttributes(col, ColourAttributes. NICEST); ap.setColoringAtrybuty(ca); fred.setWygląd(ap); objTransform.addChild(fred); MouseRotate myMouseRotate = new MouseRotate(); myMouseRotate.setTransformGroup(objTransform); myMouseRotate.setSchedulingBounds(nowa BoundingSphere()); objRoot.addChild(mojaMyszObrót); MouseTranslate myMouseTranslate = new MouseTranslate(); myMouseTranslate.setTransformGroup(objTransform); myMouseTranslate.setSchedulingBounds(nowa BoundingSphere()); objRoot.addChild(myMouseTranslate); MouseZoom myMouseZoom = new MouseZoom(); myMouseZoom.setTransformGroup(objTransform); myMouseZoom.setSchedulingBounds(nowa BoundingSphere()); objRoot.addChild(myMouseZoom); objRoot.kompilacja(); zwróć objRoot; } public MouseBehaviorApp() { setLayout(new BorderLayout()); Canvas3D canvas3D = nowy Canvas3D(SimpleUniverse.getPreferredConfiguration()); add("Centrum", canvas3D); Scena GrupaRozgałęzień = createSceneGraph(); SimpleUniverse simpleU = new SimpleUniverse(canvas3D); simpleU.getViewingPlatform().setNominalViewingTransform(); prostyU.addBranchGraph(scena); } public static void main(String args) { Frame frame = new MainFrame(new MouseBehaviorApp(), 256, 256); }}użyj tego do kompletnego programu! gotowe! a potem mówisz „co teraz”? Nie mam pojęcia! Właśnie nauczyłem się Java miesiąc temu lol!

Zalecana: