Mục lục:

Sử dụng máy xay sinh tố để tạo mô hình Java3D: 3 bước
Sử dụng máy xay sinh tố để tạo mô hình Java3D: 3 bước

Video: Sử dụng máy xay sinh tố để tạo mô hình Java3D: 3 bước

Video: Sử dụng máy xay sinh tố để tạo mô hình Java3D: 3 bước
Video: Java 3D Game Development 49: Creating Mobs 2024, Tháng sáu
Anonim
Sử dụng máy xay sinh tố để tạo mô hình Java3D
Sử dụng máy xay sinh tố để tạo mô hình Java3D

Nếu bạn là một lập trình viên Java, bạn có thể đã muốn lập trình ở dạng 3D tại một số điểm. Nhưng bằng cách nào? Vâng, bạn có thể sử dụng Java3D và từ từ gõ từng điểm trong một đa giác 3D (thử nó tin tôi đó là một ý tưởng tồi) hoặc bạn có thể sử dụng Blender (https://blender.org) một chương trình mô hình 3D mã nguồn mở và miễn phí cùng với một tập lệnh có tên Blend2Java (https://sourceforge.net/projects/blend2java/). Tuy nhiên, tài liệu về Blend2Java hầu như không có, đó là lý do tại sao tôi ngồi đây viết bài này.

Bước 1: Tải xuống chương trình

Bạn sẽ cần Blender (https://blender.org) và Blend2Java (https://sourceforge.net/projects/blend2java/). Được rồi, khi bạn đã có cả hai, hãy bắt đầu bằng cách tạo một mô hình đơn giản (hoặc chỉ sử dụng khối lập phương tiêu chuẩn) trong Blender.

Bước 2: Xuất Mô hình của bạn sang XML

Xuất mô hình của bạn sang XML
Xuất mô hình của bạn sang XML

Khi bạn có một mô hình bạn muốn sử dụng trong Máy xay sinh tố, hãy mở Chế độ chỉnh sửa và nhấn phím "a" để chọn tất cả các điểm. Trong bảng điều khiển dưới cùng, hãy chọn trình soạn thảo văn bản. Mở một tệp mới trong trình soạn thảo văn bản. Mở tệp blend2java.py mà bạn đã tải xuống. Run. Ok đối tượng của bạn bây giờ phải ở dạng. XML bất cứ nơi nào bạn lưu nó (nếu bạn có và thông báo lỗi hãy chắc chắn rằng bạn chỉ có 1 vật liệu cho đối tượng). Đổi tên đối tượng (nó sẽ có một cái tên lạ).

Bước 3: Nhập đối tượng vào Java

Nhập đối tượng vào Java
Nhập đối tượng vào Java

Shape3D fred = null; thử {XMLDecoder e = new XMLDecoder (new BufferedInputStream (new FileInputStream ("c: /HandShape3D.xml"))); // tên tệp của bạn ở đây fred = (Shape3D) e.readObject (); e.close (); } catch (Ngoại lệ e) {e.printStackTrace (); } ColoringAttributes at = new ColoringAttributes (); Appearance ap = new Appearance (); Color3f col = new Color3f (1.0f, 0.0f, 1.0f); ColoringAttributes ca = new ColoringAttributes (màu, ColoringAttributes. NICEST); ap.setColoringAttributes (ca); fred.setAppearance (ap); obj.addChild (fred); chèn mã này vào bất kỳ mã 3d nào hoặc sử dụng toàn bộ mã tại đây nhập java.io. *; nhập java.beans. XMLDecoder; nhập java.applet. Applet; nhập java.awt. *; nhập 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; nhập java.awt. BorderLayout; nhập java.awt. Frame; nhập com.sun.j3d.utils.applet. MainFrame; nhập com.sun.j3d.utils.geometry. ColorCube; nhập 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 mở rộng 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 = null; thử {XMLDecoder e = new XMLDecoder (new BufferedInputStream (new FileInputStream ("c: /HandShape3D.xml"))); fred = (Shape3D) e.readObject (); e.close (); } catch (Ngoại lệ e) {e.printStackTrace (); } ColoringAttributes at = new ColoringAttributes (); Appearance ap = new Appearance (); Color3f col = new Color3f (1.0f, 0.0f, 1.0f); ColoringAttributes ca = new ColoringAttributes (màu, ColoringAttributes. NICEST); ap.setColoringAttributes (ca); fred.setAppearance (ap); objTransform.addChild (fred); MouseRotate myMouseRotate = new MouseRotate (); myMouseRotate.setTransformGroup (objTransform); myMouseRotate.setSchedulingBounds (mới BoundSphere ()); objRoot.addChild (myMouseRotate); MouseTranslate myMouseTranslate = new MouseTranslate (); myMouseTranslate.setTransformGroup (objTransform); myMouseTranslate.setSchedulingBounds (mới BoundSphere ()); objRoot.addChild (myMouseTranslate); MouseZoom myMouseZoom = new MouseZoom (); myMouseZoom.setTransformGroup (objTransform); myMouseZoom.setSchedulingBounds (mới BoundSphere ()); objRoot.addChild (myMouseZoom); objRoot.compile (); trả về objRoot; } public MouseBehaviorApp () {setLayout (new BorderLayout ()); Canvas3D canvas3D = new Canvas3D (SimpleUniverse.getPreferredConfiguration ()); add ("Trung tâm", canvas3D); Cảnh BranchGroup = createSceneGraph (); SimpleUniverse simpleU = new SimpleUniverse (canvas3D); simpleU.getViewingPlatform (). setNominalViewingTransform (); simpleU.addBranchGraph (cảnh); } public static void main (String args) {Frame frame = new MainFrame (new MouseBehaviorApp (), 256, 256); }} sử dụng cái này cho một chương trình hoàn chỉnh! bạn đã hoàn thành! và sau đó bạn nói "bây giờ cái gì"? Tôi không biết! Tôi mới học Java một tháng trước lol!

Đề xuất: