Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Статьи
        Частицы
            Огонь Введение

Огонь Введение

Опубликованно: 17.09.2015, 5:31
Последняя редакция, AdiDOS: 07.02.2016 12:05

Эффекты это одна из неотъемлемых частей в разработке игр и разных приложений, они строятся на так называемых системе частиц .

Система частиц это некая технология позволяющая производить пиксельный рендеринг эффектов  , с помощью этой технологии  возможно сделать такие эффекты как огонь , дым , дождь , снег , водопады , туман , пыль , взрывы , волны , магия и прочее , в этом уроке я постараюсь детально описать создание эффекта в JME , ради примера я решил сделать небольшой эффект огня.


package test;

import com.jme3.app.SimpleApplication;
import com.jme3.effect.ParticleEmitter;
import com.jme3.effect.ParticleMesh;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;

public class HelloEffects extends SimpleApplication {

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

@Override
public void simpleInitApp() {
  //Создание эффекта огня
  ParticleEmitter fire = new ParticleEmitter("Emitter", ParticleMesh.Type.Triangle, 30);
  //Создание материала
  Material mat_red = new Material(assetManager, "Common/MatDefs/Misc/Particle.j3md");
  //Загрузка текстур
  mat_red.setTexture("Texture", assetManager.loadTexture("Effects/Explosion/flame.png"));
  fire.setMaterial(mat_red);
  fire.setImagesX(2);
  fire.setImagesY(2);
  fire.setEndColor(new ColorRGBA(1f, 0f, 0f, 1f)); // red
  fire.setStartColor(new ColorRGBA(1f, 1f, 0f, 0.5f)); // yellow
  fire.getParticleInfluencer().setInitialVelocity(new Vector3f(0, 2, 0));
  fire.setStartSize(1.5f);
  fire.setEndSize(0.1f);
  fire.setGravity(0, 1, 0);
  fire.setLowLife(1f);
  fire.setHighLife(3f);
  fire.getParticleInfluencer().setVelocityVariation(0.3f);
  rootNode.attachChild(fire);

 }
}

Данный пример демонстрирует эффект огня , класс ParticleEmitter  отвечает за создание систему частиц , а далее перейдем к описанию методов.

Конструктор класса первый входящий параметр имя эффекта , а второй определяет тип частиц и может принимать 2 параметра.

Point — Частицы состоят из точек.

Triangle — Каждая частица состоит из двух треугольников в совокупности образуют квадрат.

А последний параметр это максимальное количество частиц.


ParticleEmitter("Emitter", ParticleMesh.Type.Triangle, 50);

 

Функция установки материала частицы.


 setMaterial(mat_red);

 

Установка ширины изображения.


 setImagesX(2); 

 

Установка высоты изображения.


setImagesY(2);

 

Установка конечного цвета частиц.


setEndColor(new ColorRGBA(1f, 0f, 0f, 1f));

 

Установка начального цвета частиц.


 setStartColor(new ColorRGBA(1f, 1f, 0f, 0.5f));

 

Начального скорость анимации частиц.


setInitialVelocity(new Vector3f(0, 2, 0));

 

Начальный размер частиц.


setStartSize(1.5f);

 

Конечный размер частиц.


setEndSize(0.1f);

 

Гравитация по трем осям.


setGravity(0, 0.5f, 0);

 

Низкое значение жизни анимации.


setLowLife(1f);

 

Высокое значение жизни анимации , время анимации определяется случайным выбором между низким и высоким значением.


setHighLife(3f);

 

Скорость изменения частиц.


setVelocityVariation(0.3f);

Текстура используемая в примере.

flame

Вот что получилось.

2

1

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

Спасибо за внимание!!!

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.