جدول المحتويات:

استخدام Blender لإنشاء نماذج Java3D: 3 خطوات
استخدام Blender لإنشاء نماذج Java3D: 3 خطوات

فيديو: استخدام Blender لإنشاء نماذج Java3D: 3 خطوات

فيديو: استخدام Blender لإنشاء نماذج Java3D: 3 خطوات
فيديو: صممت لعبة واقعية من الصفر في يوم واحد فقط 2024, يونيو
Anonim
استخدام Blender لإنشاء نماذج Java3D
استخدام Blender لإنشاء نماذج Java3D

إذا كنت مبرمج جافا ، فربما ترغب في البرمجة ثلاثية الأبعاد في وقت ما. ولكن كيف؟ حسنًا ، يمكنك استخدام Java3D والكتابة ببطء في كل نقطة في مضلع ثلاثي الأبعاد (جربتها ثق بي أنها فكرة سيئة) ، أو يمكنك استخدام Blender (https://blender.org) وهو برنامج نمذجة ثلاثية الأبعاد مجاني ومفتوح المصدر مع نص برمجي يسمى Blend2Java (https://sourceforge.net/projects/blend2java/). ومع ذلك ، فإن الوثائق الموجودة على Blend2Java تكاد تكون غير موجودة ، ولهذا السبب أجلس هنا لأكتب هذا.

الخطوة الأولى: تنزيل البرامج

ستحتاج إلى Blender (https://blender.org) و Blend2Java (https://sourceforge.net/projects/blend2java/). حسنًا ، بمجرد أن تبدأ كلاهما من خلال إنشاء نموذج بسيط (أو مجرد استخدام المكعب القياسي) في Blender.

الخطوة 2: تصدير النموذج الخاص بك إلى XML

تصدير النموذج الخاص بك إلى XML
تصدير النموذج الخاص بك إلى XML

بمجرد أن يكون لديك نموذج ترغب في استخدامه في Blender ، افتح وضع التحرير واضغط على مفتاح "a" لتحديد جميع النقاط. في اللوحة السفلية حدد محرر النص. افتح ملفًا جديدًا في محرر النصوص. افتح ملف blend2java.py الذي قمت بتنزيله. Run. Ok يجب أن يكون الكائن الآن بتنسيق. XML أينما قمت بحفظه (إذا كان لديك ورسالة خطأ تأكد من أن shure لديك مادة واحدة فقط للكائن). أعد تسمية الكائن (سيكون له اسم غريب).

الخطوة 3: استيراد الكائن إلى Java

قم باستيراد الكائن إلى Java
قم باستيراد الكائن إلى Java

Shape3D فريد = فارغ ؛ جرب {XMLDecoder e = new XMLDecoder (جديد BufferedInputStream (جديد FileInputStream ("c: /HandShape3D.xml"))) ؛ // اسم ملفك هنا fred = (Shape3D) e.readObject () ؛ e.close () ؛ } catch (استثناء هـ) {e.printStackTrace () ؛ } ColoringAttributes at = new ColoringAttributes ()؛ مظهر ap = مظهر جديد () ؛ Color3f col = New Color3f (1.0f ، 0.0f ، 1.0f) ؛ ColoringAttributes ca = new ColoringAttributes (col، ColoringAttributes. NICEST)؛ ap.setColoringAttributes (كاليفورنيا) ؛ fred.setAppearance (ap) ؛ obj.addChild (فريد) ؛ أدخل هذا في أي رمز ثلاثي الأبعاد أو استخدم الكود بالكامل هنا استيراد java.io. * ؛ استيراد java.beans. XMLDecoder ؛ استيراد java.applet. Applet ؛ استيراد java.awt. * ؛ استيراد java. awt.event. * ؛ استيراد com.sun.j3d.utils.applet. MainFrame ؛ استيراد com.sun.j3d.utils.universe. * ؛ استيراد javax.media.j3d. * ؛ استيراد javax.vecmath. * ؛ استيراد جافا.applet. Applet ؛ استيراد java.awt. BorderLayout ؛ استيراد java.awt. Frame ؛ استيراد com.sun.j3d.utils.applet. MainFrame ؛ استيراد com.sun.j3d.utils.geometry. ColorCube ؛ استيراد com.sun. j3d.utils.universe. * ؛ استيراد com.sun.j3d.utils.behaviors.mouse. * ؛ استيراد javax.media.j3d. * ؛ استيراد javax.vecmath. * ؛ استيراد java.awt.event. * ؛ استيراد جافا.util. Enumeration؛ فئة عامة MouseBehaviorApp توسع التطبيق الصغير {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 فريد = فارغ ؛ جرب {XMLDecoder e = new XMLDecoder (جديد BufferedInputStream (جديد FileInputStream ("c: /HandShape3D.xml"))) ؛ فريد = (Shape3D) e.readObject () ؛ e.close () ؛ } catch (استثناء هـ) {e.printStackTrace () ؛ } ColoringAttributes at = new ColoringAttributes ()؛ مظهر ap = مظهر جديد () ؛ Color3f col = New Color3f (1.0f ، 0.0f ، 1.0f) ؛ ColoringAttributes ca = new ColoringAttributes (col، ColoringAttributes. NICEST)؛ ap.setColoringAttributes (كاليفورنيا) ؛ fred.setAppearance (ap) ؛ objTransform.addChild (فريد) ؛ 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 () ، عودة objRoot ؛ } MouseBehaviorApp () العامة {setLayout (new BorderLayout ())؛ Canvas3D canvas3D = Canvas3D الجديدة (SimpleUniverse.getPreferredConfiguration ()) ؛ إضافة ("المركز" ، canvas3D) ؛ مشهد BranchGroup = createSceneGraph () ، SimpleUniverse simpleU = جديد SimpleUniverse (canvas3D) ؛ simpleU.getViewingPlatform (). setNominalViewingTransform () ، simpleU.addBranchGraph (مشهد) ؛ } public static void main (String args) {Frame frame = new MainFrame (new MouseBehaviorApp ()، 256، 256)؛ }} استخدم هذا للحصول على برنامج كامل! لقد انتهيت! ثم تقول "ماذا الآن"؟ ليس لدي أدنى فكرة! لقد تعلمت جافا منذ شهر مضى لول!

موصى به: