สารบัญ:

การใช้ Blender เพื่อสร้างโมเดล Java3D: 3 ขั้นตอน
การใช้ Blender เพื่อสร้างโมเดล Java3D: 3 ขั้นตอน

วีดีโอ: การใช้ Blender เพื่อสร้างโมเดล Java3D: 3 ขั้นตอน

วีดีโอ: การใช้ Blender เพื่อสร้างโมเดล Java3D: 3 ขั้นตอน
วีดีโอ: OpenGL 3D Game Tutorial 10: Loading 3D Models 2024, มิถุนายน
Anonim
การใช้ Blender เพื่อสร้าง Java3D Models
การใช้ Blender เพื่อสร้าง Java3D Models

หากคุณเป็นโปรแกรมเมอร์ Java คุณอาจต้องการเขียนโปรแกรมในแบบ 3 มิติ แต่อย่างไร? คุณสามารถใช้ Java3D และพิมพ์ช้าในแต่ละจุดในรูปหลายเหลี่ยม 3 มิติ (ลองเชื่อฉันว่าเป็นความคิดที่ไม่ดี) หรือคุณสามารถใช้ Blender (https://blender.org) โปรแกรมสร้างแบบจำลอง 3 มิติแบบโอเพ่นซอร์สและฟรี สคริปต์ชื่อ Blend2Java (https://sourceforge.net/projects/blend2java/) อย่างไรก็ตาม เอกสารประกอบของ Blend2Java นั้นแทบไม่มีอยู่จริง ดังนั้นฉันจึงนั่งเขียนสิ่งนี้ที่นี่

ขั้นตอนที่ 1: ดาวน์โหลดโปรแกรม

คุณจะต้องใช้ Blender (https://blender.org) และ Blend2Java (https://sourceforge.net/projects/blend2java/) ตกลงเมื่อคุณมีทั้งคู่แล้ว ให้เริ่มด้วยการสร้างแบบจำลองอย่างง่าย (หรือเพียงแค่ใช้ลูกบาศก์มาตรฐาน) ใน Blender

ขั้นตอนที่ 2: ส่งออกโมเดลของคุณไปยัง XML

ส่งออกโมเดลของคุณเป็น XML
ส่งออกโมเดลของคุณเป็น XML

เมื่อคุณมีโมเดลที่คุณต้องการใช้ใน Blender ให้เปิดโหมดแก้ไขแล้วกดปุ่ม "a" เพื่อเลือกจุดทั้งหมด ในแผงด้านล่าง ให้เลือกโปรแกรมแก้ไขข้อความ เปิดไฟล์ใหม่ในโปรแกรมแก้ไขข้อความ เปิดไฟล์ blend2java.py ที่คุณดาวน์โหลด Run. Ok วัตถุของคุณควรอยู่ใน. XML ทุกที่ที่คุณบันทึกไว้ (หากคุณมีและข้อความแสดงข้อผิดพลาด ให้ตรวจสอบว่าคุณมีวัสดุเพียง 1 รายการสำหรับวัตถุนั้น) เปลี่ยนชื่อวัตถุ (จะมีชื่อแปลก ๆ)

ขั้นตอนที่ 3: นำเข้าวัตถุไปยัง Java

นำเข้าวัตถุไปยัง Java
นำเข้าวัตถุไปยัง Java

Shape3D fred = null; ลอง { XMLDecoder e = XMLDecoder ใหม่ (ใหม่ BufferedInputStream (FileInputStream ใหม่ ("c: / HandShape3D.xml"))); //ชื่อไฟล์ของคุณที่นี่ fred = (Shape3D) e.readObject(); e.close(); } จับ (ข้อยกเว้น จ) { e.printStackTrace (); } ColoringAttributes at=new ColoringAttributes(); ลักษณะที่ปรากฏ ap = ลักษณะที่ปรากฏใหม่ (); Color3f col = ใหม่ Color3f(1.0f, 0.0f, 1.0f); ColoringAttributes ca = ColoringAttributes ใหม่ (col, ColoringAttributes. NICEST); ap.setColoringAttributes(แคลิฟอร์เนีย); fred.setAppearance(ap); obj.addChild(fred);แทรกสิ่งนี้ลงในโค้ด 3 มิติ หรือใช้โค้ดทั้งหมดที่นี่ 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 คลาสสาธารณะ MouseBehaviorApp ขยาย Applet { BranchGroup สาธารณะ createSceneGraph () { BranchGroup objRoot = ใหม่ BranchGroup (); TransformGroup objTransform = TransformGroup ใหม่ (); objTransform.setCapability (TransformGroup. ALLOW_TRANSFORM_WRITE); objTransform.setCapability (TransformGroup. ALLOW_TRANSFORM_READ); objRoot.addChild (objTransform); Shape3D fred = null; ลอง { XMLDecoder e = XMLDecoder ใหม่ (ใหม่ BufferedInputStream (FileInputStream ใหม่ ("c: / HandShape3D.xml"))); fred = (Shape3D) e.readObject(); e.close(); } จับ (ข้อยกเว้น จ) { e.printStackTrace (); } ColoringAttributes at=new ColoringAttributes(); ลักษณะที่ปรากฏ ap = ลักษณะที่ปรากฏใหม่ (); Color3f col = ใหม่ Color3f(1.0f, 0.0f, 1.0f); ColoringAttributes ca = ColoringAttributes ใหม่ (col, ColoringAttributes. NICEST); ap.setColoringAttributes(แคลิฟอร์เนีย); fred.setAppearance(ap); objTransform.addChild (เฟรด); MouseRotate myMouseRotate = ใหม่ MouseRotate (); myMouseRotate.setTransformGroup (objTransform); myMouseRotate.setSchedulingBounds (ใหม่ BoundingSphere ()); objRoot.addChild (myMouseRotate); MouseTranslate myMouseTranslate = ใหม่ MouseTranslate (); myMouseTranslate.setTransformGroup (objTransform); myMouseTranslate.setSchedulingBounds (ใหม่ BoundingSphere ()); objRoot.addChild (myMouseTranslate); MouseZoom myMouseZoom = MouseZoom ใหม่ (); myMouseZoom.setTransformGroup (objTransform); myMouseZoom.setSchedulingBounds (ใหม่ BoundingSphere ()); objRoot.addChild (myMouseZoom); objRoot.คอมไพล์(); ส่งคืน objRoot; } MouseBehaviorApp สาธารณะ () { setLayout (ใหม่ BorderLayout ()); Canvas3D canvas3D = Canvas3D ใหม่ (SimpleUniverse.getPreferredConfiguration()); เพิ่ม ("ศูนย์", canvas3D); ฉาก BranchGroup = createSceneGraph(); SimpleUniverse simpleU = SimpleUniverse ใหม่ (canvas3D); simpleU.getViewingPlatform().setNominalViewingTransform(); simpleU.addBranchGraph(ฉาก); } โมฆะคงที่สาธารณะ main (สตริง args) { กรอบเฟรม = MainFrame ใหม่ (ใหม่ MouseBehaviorApp (), 256, 256); }}ใช้สิ่งนี้สำหรับ programtada ที่สมบูรณ์! เสร็จแล้ว! แล้วคุณพูดว่า "ตอนนี้คืออะไร" ฉันไม่รู้! ฉันเพิ่งเรียน Java เมื่อเดือนที่แล้ว lol!

แนะนำ: