Пятница, 26 Апреля 2024, 04:05

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » 3D движки для разработки игр » Уроки по JMonkeyEngine 3.0
Уроки по JMonkeyEngine 3.0
Стоит ли продолжать?
1. Да [ 77 ] [91.67%]
2. Нет [ 7 ] [8.33%]
Всего ответов: 84
matthew01Дата: Пятница, 17 Мая 2013, 22:01 | Сообщение # 1
почетный гость
Сейчас нет на сайте

Доброго часа уважаемые форумчане! Я заметил что на сайте полно уроков по разным движкам и языкам программирования, но почему то я не нашел ни одного урока по JMonkeyEngine. Не смотря на то, что движок на писан на Java, он очень даже хорош. Из особенностей хотелось бы отметить следующее:
  • Открытый исходный код, и соответственно бесплатность в любых ее проявлениях;
  • Мультиплатформенность;
  • Неплохой редактор миров, шейдеров и т.д.;
  • Современная графика.
    Заинтересовавшись всеми его плюсами я решил плотно сесть за его изучение и вот сейчас решил поделиться накопленным опытом. Для начала хочу предоставь вводный урок, который поможет понять принципы работы в данном движке. Итак приступим...

    УРОК №1.

    Для начала создадим новый проект, для этого заходим в "Файл->Создать проект", в категориях выбираем "JME3", в проектах "BasicGame". Жмём "Далее", задаем название (У меня он будет называться "Example") проекта, затем "Готово". В классе "Main" у вас должно получиться следующее:
    Код
    package mygame;

    import com.jme3.app.SimpleApplication;
    import com.jme3.material.Material;
    import com.jme3.math.ColorRGBA;
    import com.jme3.math.Vector3f;
    import com.jme3.renderer.RenderManager;
    import com.jme3.scene.Geometry;
    import com.jme3.scene.shape.Box;

    /**
        * test
        * @author normenhansen
        */
    public class Main extends SimpleApplication {

           public static void main(String[] args) {
               Main app = new Main();
               app.start();
           }

           @Override
           public void simpleInitApp() {
               Box b = new Box(Vector3f.ZERO, 1, 1, 1);
               Geometry geom = new Geometry("Box", b);

               Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
               mat.setColor("Color", ColorRGBA.Blue);
               geom.setMaterial(mat);

               rootNode.attachChild(geom);
           }

           @Override
           public void simpleUpdate(float tpf) {
               //TODO: add update code
           }

           @Override
           public void simpleRender(RenderManager rm) {
               //TODO: add render code
           }
    }


    Давайте сотрем лишнее, чтоб написать все самим (Чтоб легче запомнить), оставив только следующее:

    Код
    package mygame;

    import com.jme3.app.SimpleApplication;
    import com.jme3.material.Material;
    import com.jme3.math.ColorRGBA;
    import com.jme3.math.Vector3f;
    import com.jme3.renderer.RenderManager;
    import com.jme3.scene.Geometry;
    import com.jme3.scene.shape.Box;

    public class Main extends SimpleApplication {

           public static void main(String[] args) {
               Main app = new Main();
               app.start();
           }

           
           public void simpleInitApp() {
                 
           }

              
           public void simpleUpdate(float tpf) {
             
           }

    }


    Операторы импорта оставим, потому что они нам пригодятся. (В среде JME нет необходимости самому прописывать импорт необходимых библиотек, как и в, например, Eclipse. Среда сама предложит добавить недостающие операторы импорта, предварительно выдав ошибку об их отсутствии).
    Далее в методе "public void simpleInitApp()" пишем следующее:

    Код
    Box b = new Box(Vector3f.ZERO, 1,1,1);
              Geometry g = new Geometry("box", b);
              Material m = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
              m.setColor("Color", ColorRGBA.White);
              g.setMaterial(m);


    Описание строк соответственно:
    Создаем объект "b" типа "Box". В скобках указываем его начальное положение (В примере он располагается в нулевом векторе) и размеры (1x1x1);
    Создаем объект "g" типа "Geometry", который будет рисовать объект указанный в скобках;
    Создаем новый материал "m". В скобках указываем что указываем что загружаем "Unshaded" материал из AssetManager'а. (Потом покажу как загружать свой материал);
    Задаем цвет для материала "m". "Color" показывает цвет какого типа загружаем. (В разных видах материалов их много);
    Присваиваем геометрии "g" созданный ранее материал.

    Запускаем проект и... видим черный экран. Правильно, ведь чтоб геометрия была видна, нужно "приаатачить" ее к корневому узлу. Для этого после присваивания материала добавим следующее:

    Код
    rootNode.attachChild(g);

    К узлу "rootNode" добавляем дочерний объект "g".
    После запуска проекта вы должны увидеть белый кубик.
    Заметим, что при передвижении мыши камера вращается. Это "flyCam", с ним мы в дальнейшем будем работать, но сейчас давайте его выключим. Для этого в методе "public void simpleInitApp()" добавим следующее:

    Код
    flyCam.setEnabled(false);


    Теперь давайте заставим наш кубик вращаться. Чтоб как-то манипулировать геометрией "g" из другого метода (В данном случае это будет постоянно обновляющийся метод "public void simpleUpdate(float tpf)") необходимо, чтобы этот объект создавался до создания методов, а сразу после создания класса. В итоге наш код будет выглядеть так:

    Код
    package mygame;

    import com.jme3.app.SimpleApplication;
    import com.jme3.material.Material;
    import com.jme3.math.ColorRGBA;
    import com.jme3.math.Vector3f;
    import com.jme3.scene.Geometry;
    import com.jme3.scene.shape.Box;

    public class Main extends SimpleApplication {
          Geometry g;
           public static void main(String[] args) {
               Main app = new Main();
               app.start();
                  
           }

           public void simpleInitApp() {
               flyCam.setEnabled(false);
              Box b = new Box(Vector3f.ZERO, 1,1,1);
              g = new Geometry("box", b);
              Material m = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
              m.setColor("Color", ColorRGBA.White);
              g.setMaterial(m);
              rootNode.attachChild(g);
           }

           public void simpleUpdate(float tpf) {
                 
           }

    }


    Теперь можно с геометрией "g" взаимодействовать из другого метода.
    Пусть наш кубик вращается по оси Y, для этого в методе "public void simpleUpdate(float tpf)" пишем следующее:
    Код
    g.rotate(0, 1*tpf, 0);

    Запускаем и видим результат.
    На этом первый урок закончен. Если есть необходимость в этих уроках, то в дальнейшем мы рассмотрим Ввод, Звук и т.д. Ну и рассмотрим некоторые аспекты самой Явы.
    Спасибо за внимание:)


    Добавлено (17.05.2013, 22:01)
    ---------------------------------------------
    ...Последующее уроки будут публиковаться как статьи на сайте.

    Сообщение отредактировал matthew01 - Пятница, 17 Мая 2013, 22:33
  • krapДата: Среда, 23 Октября 2013, 18:02 | Сообщение # 2
    почетный гость
    Сейчас нет на сайте
    Урок классный и понятный)
    А можно ссылочку на следующие уроки?
    CyberGraphДата: Четверг, 24 Октября 2013, 13:09 | Сообщение # 3
    почетный гость
    Сейчас нет на сайте
    krap, http://gcup.ru/publ/0-0-18812-0-17

    Вакансия
    grayichДата: Среда, 10 Декабря 2014, 22:23 | Сообщение # 4
    был не раз
    Сейчас нет на сайте
    jmonkey умеет SPH ?
    GlumSpiritДата: Пятница, 19 Декабря 2014, 00:16 | Сообщение # 5
    уже был
    Сейчас нет на сайте
    Переводить уроки на Русский в официальной Вики не стоит. Там они поддерживают только английский.

    Сообщение отредактировал GlumSpirit - Воскресенье, 25 Января 2015, 17:26
    DVAmodДата: Понедельник, 17 Октября 2016, 16:21 | Сообщение # 6
    был не раз
    Сейчас нет на сайте
    Кому еще интересна тема. Вот сделал множество уроков по Java движку JME3 angel

    1. JMonkeyEngine Основы задания скриптов и физики. Продолжение (JME3, open source)

    2. JMonkeyEngine Урок Основы задания скриптов и физики для объектов сцены (Начало JME3)

    3. [JMonkeyEngine] Уроки по движку. Примеры проектов. Обзор (JME3)

    4. jMonkeyEngine SpaceShift Editor 0.7.6

    5. JMonkeyEngine Уроки по игровому движку. Редактирование сцены и эффекты (Scene JME and filters 2/2)

    6. JMonkeyEngine Уроки по игровому движку. Создание сцены и добавление модели (Scene JME 1/2)


    ALL: https://www.youtube.com/playlist?list=PLsekEcTrOcd5PXRIK_n5KhO6jSSbx3RYC
    GlumSpiritДата: Среда, 10 Мая 2017, 15:46 | Сообщение # 7
    уже был
    Сейчас нет на сайте
    Если кому интересно то уроки можно найти здесь http://jmonkeyengine.ru
    dengessДата: Понедельник, 17 Июля 2017, 22:00 | Сообщение # 8
    уже был
    Сейчас нет на сайте
    Спасибо за сайт! up
    Форум игроделов » Движки для разработки игр и сложные системы разработки » 3D движки для разработки игр » Уроки по JMonkeyEngine 3.0
    • Страница 1 из 1
    • 1
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг