Оглавление:

Использование Blender для создания моделей Java3D: 3 шага
Использование Blender для создания моделей Java3D: 3 шага

Видео: Использование Blender для создания моделей Java3D: 3 шага

Видео: Использование Blender для создания моделей Java3D: 3 шага
Видео: Terrain Editor | Auto LOD System | Paint Tool 2024, Июнь
Anonim
Использование Blender для создания моделей Java3D
Использование Blender для создания моделей Java3D

Если вы программист на Java, вы, вероятно, в какой-то момент хотели программировать в 3D. Но как? Что ж, вы можете использовать Java3D и медленно вводить каждую точку в трехмерном многоугольнике (пробовал, поверьте мне, это плохая идея), или вы можете использовать Blender (https://blender.org), бесплатную программу 3D-моделирования с открытым исходным кодом вместе с скрипт под названием 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 = new XMLDecoder (новый BufferedInputStream (новый FileInputStream ("c: /HandShape3D.xml"))); // здесь ваше имя файла fred = (Shape3D) e.readObject (); e.close (); } catch (исключение e) {e.printStackTrace (); } ColoringAttributes at = new ColoringAttributes (); Внешний вид ap = новый внешний вид (); Color3f col = новый Color3f (1.0f, 0.0f, 1.0f); ColoringAttributes ca = new ColoringAttributes (col, ColoringAttributes. NICEST); ap.setColoringAttributes (ca); fred.setAppearance (ap); obj.addChild (fred); вставьте это в любой трехмерный код или используйте весь код здесь 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 расширяет апплет {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; попробуйте {XMLDecoder e = new XMLDecoder (новый BufferedInputStream (новый FileInputStream ("c: /HandShape3D.xml"))); fred = (Shape3D) e.readObject (); e.close (); } catch (исключение e) {e.printStackTrace (); } ColoringAttributes at = new ColoringAttributes (); Внешний вид ap = новый внешний вид (); Color3f col = новый Color3f (1.0f, 0.0f, 1.0f); ColoringAttributes ca = new ColoringAttributes (col, ColoringAttributes. NICEST); ap.setColoringAttributes (ca); 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.compile (); return objRoot; } общедоступный MouseBehaviorApp () {setLayout (новый BorderLayout ()); Canvas3D canvas3D = новый Canvas3D (SimpleUniverse.getPreferredConfiguration ()); добавить ("Центр", canvas3D); BranchGroup scene = createSceneGraph (); SimpleUniverse simpleU = новый SimpleUniverse (canvas3D); simpleU.getViewingPlatform (). setNominalViewingTransform (); simpleU.addBranchGraph (сцена); } public static void main (String args) {Frame frame = new MainFrame (new MouseBehaviorApp (), 256, 256); }} используйте это для полной программы! вы сделали! а потом вы говорите «что теперь?» я понятия не имею! Я только что изучил Java месяц назад, лол!

Рекомендуемые: