关闭

一个简单的粒子系统

标签: opengl粒子系统c++
1347人阅读 评论(0) 收藏 举报

一个简单的粒子系统

    一个简单的小程序,欢迎大家都来交流交流。

环境要求

    环境:glew-1.9,freglut,Opengl,IDE:vs2012,win32

粒子系统效果

    粒子实现的喷泉效果:

    喷泉效果参数:

// param1 构造参数

float startcol[4] = {0.5f, 0.3f, 0.2f, 1.0f};

float colfactor[4] = {-0.01f, 0.005f, 0.00f, 0.0f};

GLuint showlist = 0;

// param2 构造参数

float udvParam[3] = {1.0f, 0.0f, 0.0f}; // 方向向量不必为单位向量,因为  actionDescriptor 的构造函数会自动将其单位化

float rotateParam[3] = {0.0f, 0.0f, 90.0f};

float rotateVarParam[3] = {0.0f, 10.0f, 10.0f};

float speedParm = 0.06f;

float speedFactorParam[2] = {1.0f, 0.02f};

// param3 构造参数

uint32 lifelong = 2000; // 粒子生存时间ms

    粒子实现的落雪效果:

    落雪效果参数:

// param1 构造参数

float startcol[4] = {0.5f, 0.5f, 0.5f, 1.0f};

float colfactor[4] = { 0.0f, 0.0f, 0.00f, 0.0f};

GLuint showlist = 0;

// param2 构造参数

float origionPlaneParam[2] = {0.5f, 0.5f};

float planeNormalsParam[3] = {0.0f, -1.0f, 0.0f};

float speedParam = 0.002f;

float speedFactorParam[2] = {0.975f, 0.0f};

float forceParam[3] = {0.0f, 0.00f, 0.0f};

// param3 构造参数

uint32 lifelong = 2000; // 粒子生存时间ms

主要数据结构

    粒子系统中包含以下类和结构体:

class clock;

class randomMaker;
class appearanceDescriptor;
class actionDescriptor;
class lifeDescriptor;
class particle;
class anti;

    简单说明以下这些类的功能:clock是一个计时器;randomMaker是一个随机数产生器,是我从Opencv里刨出来的,精简之后封装了一下;particle是粒子类,包含了粒子的各种属性,颜色,速度,位置,方向,生命长度等;粒子的所有属性大致分为三种,外观,动作和生命期,为了描述方便我把三种属性分别封装为appearanceDescriptor(外观描述符),actionDescriptor(动作描述符),lifeDesCriptor(生命期描述符);anti用来管理一组粒子,构造anti是通过提供上边三个例子描述符的类规定粒子的外观,动作和存在的时间。

项目源文件及其下载地址

下载地址:particleSys.zip

下载后请认真核对压缩文件信息:
大小: 18464009 字节
MD5: 8AD880E643E7A078CEA7508C670E0D75
SHA1: CE000E3741FFD2945DAE57DECEFEA5A580E7E231
CRC32: 996BD6F0


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:64687次
    • 积分:1012
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:3篇
    • 译文:4篇
    • 评论:8条
    文章分类
    最新评论