青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級(jí)工程師 Android高級(jí)軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語(yǔ)言 程序猿
這是新版蓋莫游戲引擎2.1.1中全腳本控制的粒子系統(tǒng)
相關(guān)的配套lua腳本(以后還會(huì)加入對(duì)python等腳本的支持)
  1 -- 這是蓋莫引擎中使用lua腳本的測(cè)試粒子
  2 
  3 -- 定義粒子池粒子個(gè)數(shù)
  4 max_particles = 2400
  5 
  6 -- 定義粒子初始位置
  7 particle_pos_x = 0.0
  8 particle_pos_y = 0.0
  9 particle_pos_z = 2.0
 10 
 11 -- 定義重力加速度
 12 gravity = 9.8
 13 
 14 -- 定義粒子大小
 15 particle_size = 0.8
 16 
 17 -- 定義粒子壽命
 18 particle_life = 8.2
 19 
 20 -- 定義批處理粒子個(gè)數(shù)
 21 batch_particles = 80
 22 
 23 -- 定義粒子和地面之間的摩擦力
 24 friction = 0.75
 25 
 26 -- 定義粒子系統(tǒng)發(fā)射半徑
 27 fountain_radius = 1.6
 28 
 29 -- 定義粒子范圍半徑
 30 particle_r = (fountain_radius + particle_size/2)*(fountain_radius + particle_size/2)
 31 
 32 -- 初始化隨機(jī)種子
 33 function InitRand()
 34    math.randomseed(os.time())
 35 end
 36   
 37 -- 定義粒子速度
 38 particle_vel = 8.0
 39 
 40 -- 獲取時(shí)間對(duì)應(yīng)的速度值
 41 function GetVelByTime(t)
 42     return particle_vel*(0.8 + 0.1*(math.sin(0.5*t)+math.sin(0.31*t)))
 43 end
 44    
 45 -- 獲取xy平面隨機(jī)轉(zhuǎn)角
 46 function GetRandRotXY()
 47     return (2.0*3.14159265/4096.0* math.random(1,4095)
 48 end   
 49 
 50 function InitParticles(dt)
 51     -- 定義粒子初始位置
 52     local xpos=particle_pos_x
 53     local ypos=particle_pos_y
 54     local zpos=particle_pos_z
 55     -- 初始化粒子顏色red,green,blue
 56     local red=0.7 + 0.3 * math.sin(0.34*dt + 0.1)
 57     local green=0.6 + 0.4 * math.sin(0.63*dt + 1.1)
 58     local blue=0.6 + 0.4 * math.sin(0.91*dt + 2.1)
 59     ---- 獲取粒子隨機(jī)速度x分量
 60     local xy_angle = GetRandRotXY()
 61     local vt = GetVelByTime(dt)
 62     local xvel=0.45 * math.cos(xy_angle)*vt
 63     -- 獲取粒子隨機(jī)速度y分量
 64     xy_angle = GetRandRotXY()
 65     vt = GetVelByTime(dt)
 66     local yvel=0.45 * math.sin(xy_angle)*vt
 67     -- 獲取粒子初始速度
 68     local zvel=0.7 + (0.3/4096.0* (math.random(1,4095))
 69     return xpos,ypos,zpos,
 70            red,green,blue,
 71            xvel,yvel,zvel
 72 end
 73 
 74 -- 更新粒子狀態(tài)
 75 function UpdateParticles(life,xpos,ypos,zpos,xvel,yvel,zvel,red,green,blue,dt)
 76     -- 修正粒子生命
 77     local new_life = life - dt * (1.0 / particle_life)
 78     -- 修正粒子速度
 79     local new_zvel = zvel - gravity  *dt
 80     local new_xpos = xpos + xvel*dt
 81     local new_ypos = ypos + yvel*dt
 82     local new_zpos = zpos + new_zvel*dt 
 83     if new_zvel < 0.0 then
 84         if new_xpos*new_xpos + new_ypos*new_ypos < particle_r and new_zpos < particle_pos_z + particle_size/2 then
 85             new_zvel = -friction * new_zvel
 86             new_zpos  = particle_pos_z + particle_size/2 + friction * (particle_pos_z + particle_size/2 - new_zpos)
 87         -- 當(dāng)粒子碰撞到地面應(yīng)該跳起來(lái)
 88         elseif new_zpos < particle_size/2 then
 89             new_zvel = -friction * new_zvel
 90             new_zpos  = particle_size/2 + friction * (particle_size/2 - new_zpos)
 91         end
 92     end   
 93     
 94     return new_life,
 95            new_xpos,new_ypos,new_zpos,
 96            red,green,blue,
 97            xvel,yvel,new_zvel
 98 end
 99 
100 --[[
101 蓋莫引擎2.1.1使用的lua粒子腳本格式如下:
102 全局變量:
103 batch_particles
104 particle_size
105 particle_life
106 max_particles
107 
108 粒子初始化函數(shù):
109 InitParticles(dt)(參數(shù)當(dāng)前時(shí)間)
110 返回位置,顏色,速度
111 
112 粒子更新函數(shù):
113 UpdateParticles(life,xpos,ypos,zpos,xvel,yvel,zvel,dt)
114 返回更新后的粒子壽命,位置,顏色以及速度
115 ]]
116 
這是引擎當(dāng)前粒子系統(tǒng)配置的腳本文件
可以改動(dòng)的就是例子初始化和更新函數(shù)的實(shí)現(xiàn)
粒子初始化函數(shù)有1個(gè)時(shí)間輸入?yún)?shù)
9個(gè)輸出參數(shù)分別為:位置顏色速度
更新函數(shù)有粒子壽命,位置顏色速度和當(dāng)前時(shí)間
傳回參數(shù)有粒子新壽命,粒子位置,顏色和速度
另外幾個(gè)不可缺少的全局粒子變量有
batch_particles
particle_size
particle_life
max_particles
含義就不提了
對(duì)應(yīng)的cpp代碼如下:

 1 #include <GEngine/Gaimo.hpp>
 2 using namespace core; 
 3 void TransForm(double t);
 4  
 5 //! 設(shè)備指針 
 6 RefPtr<Device> device;
 7 //! 視頻驅(qū)動(dòng)指針
 8 RefPtr<VideoDriver> videodriver; 
 9 //! 3角函數(shù)表指針
10 RefPtr<libmath::TriTable> table; 
11 
12 int main(int argc, char **argv)
13 {
14     double     t0, t;
15     device = core::InitDevice("蓋莫引擎粒子測(cè)試1",argv[0]);
16     videodriver = device->GetVideoDriver(); 
17     table = device->GetTriTable();
18     
19     core::ParticleSystemDesc desc = device->GetLuaContext()->GetParticleSystemDesc("..\\script//particle1.lua");
20     core::RefPtr<core::ParticleSystem> ps = device->GetSceneManager()->GetParticleSystem(desc);
21 
22     t0 = device->GetTime();
23     BEGIN_LOOP(device)
24         t = device->GetTime() - t0;
25         videodriver->SetViewPort(Recti(0,0,640,480));
26         videodriver->SetClearColor(Color(0.0f0.0f0.3f1.0f));
27         videodriver->SetClearBuffer(ENGINE_CLEAR_COLOR | ENGINE_CLEAR_DEPTH);
28         videodriver->SetPerpective(65.0f,64.0/48.0,1.0f,60.0f);
29         TransForm(t);
30         ps->Render();
31     END_LOOP(device)
32     return 0;
33 }
34 
35 void TransForm(double t)
36 {
37     double xpos, ypos, zpos, angle_x, angle_y, angle_z;
38     static double t_old = 0.0;
39     float  dt = (float)(t-t_old);
40     t_old = t;
41 
42     angle_x = 80;
43     angle_y = 10.0 * table->SinTable( 0.3 * t );
44     angle_z = 10.0 * t;
45  
46     xpos =  15.0 * table->SinTable( (M_PI/180.0* angle_z ) +
47              2.0 * table->SinTable( (M_PI/180.0* 3.1 * t );
48     ypos = -15.0 * table->CosTable( (M_PI/180.0* angle_z ) +
49              2.0 * table->CosTable( (M_PI/180.0* 2.9 * t );
50     zpos = 4.0 + 2.0 * table->CosTable( (M_PI/180.0* 4.9 * t );
51     videodriver->SetPilotView(xpos,ypos,zpos,angle_z,angle_y,angle_x);
52 }

使用方法很簡(jiǎn)單就是從設(shè)備指針獲取lua上下文然后傳入粒子配置腳本文件
獲取粒子描述符
之后以其為參數(shù)從場(chǎng)景管理中獲取粒子系統(tǒng)即可使用
夠簡(jiǎn)潔吧
截圖如下:
posted on 2010-03-30 12:07 ccsdu2009 閱讀(1353) 評(píng)論(3)  編輯 收藏 引用 所屬分類: Game引擎
Comments
  • # re: 蓋莫2.1.1版游戲引擎粒子系統(tǒng)-全腳本控制下的粒子系統(tǒng)[未登錄](méi)
    清風(fēng)
    Posted @ 2010-03-31 10:40
    恩...粒子的更新我還一直想放到GPU上去計(jì)算,放到腳本里恐怕粒子數(shù)量稍大就歇菜了,特別對(duì)于復(fù)雜的效果.  回復(fù)  更多評(píng)論   
  • # re: 蓋莫2.1.1版游戲引擎粒子系統(tǒng)-全腳本控制下的粒子系統(tǒng)
    ccsdu2009
    Posted @ 2010-03-31 10:47
    @清風(fēng)
    這是當(dāng)然
    不過(guò)當(dāng)前使用多線程計(jì)算粒子數(shù)據(jù) 可以彌補(bǔ)一點(diǎn)損失  回復(fù)  更多評(píng)論   
  • # re: 蓋莫2.1.1版游戲引擎粒子系統(tǒng)-全腳本控制下的粒子系統(tǒng)
    99書(shū)城官方網(wǎng)站
    Posted @ 2010-03-31 13:32
    哈哈師大的俺不是大的呢  回復(fù)  更多評(píng)論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品九色蝌蚪自拍| 国产一区二区三区无遮挡| 欧美视频在线观看免费| 国产日韩视频| 亚洲自拍电影| 日韩视频久久| 欧美wwwwww| 狠狠色伊人亚洲综合成人| 亚洲区免费影片| 亚洲与欧洲av电影| 久久精品最新地址| 欧美成人嫩草网站| 蜜臀av在线播放一区二区三区| 中日韩男男gay无套| 一本色道精品久久一区二区三区| 亚洲欧美日韩一区二区在线| 国产精品丝袜白浆摸在线| 中文在线一区| 99在线精品观看| 欧美日韩免费区域视频在线观看| 亚洲视频欧美在线| 亚洲在线视频观看| 国产日韩精品久久久| 国产精品美女午夜av| 亚洲精品一二区| 欧美mv日韩mv国产网站app| 亚洲精选在线观看| 久久欧美中文字幕| 一区精品在线| 亚洲精品一区二区三区四区高清| 欧美精品一区二区三| 亚洲愉拍自拍另类高清精品| 欧美日产一区二区三区在线观看| 亚洲国产精品久久久久婷婷884 | 国产在线播精品第三| 亚洲一区二区视频| 亚洲欧美一区二区激情| 欧美日韩精品一区二区天天拍小说| 欧美大色视频| 亚洲乱码一区二区| 欧美三级第一页| 最新亚洲激情| 亚洲手机成人高清视频| 欧美午夜视频网站| 亚洲在线第一页| 亚洲人人精品| 欧美一级视频免费在线观看| 国产美女精品一区二区三区| 欧美在线黄色| 欧美三级资源在线| 久久国产福利| 免费在线观看成人av| 久久爱www久久做| 欧美人与性禽动交情品 | 国产精品美女www爽爽爽视频| 亚洲精品午夜| 国产精品欧美久久| 亚洲国产综合91精品麻豆| 亚洲日韩欧美视频一区| 欧美黑人国产人伦爽爽爽| 亚洲日本中文字幕区| 99精品视频免费观看| 欧美日一区二区在线观看| 一区二区精品在线| 性刺激综合网| 亚洲国产精品尤物yw在线观看| 久久阴道视频| 中文精品视频| 欧美成人69av| 欧美在线看片| 亚洲欧洲日本国产| 国产精品女人网站| 久久婷婷成人综合色| 中文亚洲视频在线| 亚洲精品中文字幕在线| 久久精品综合网| 亚洲一区精彩视频| 亚洲高清免费在线| 国产精品亚洲аv天堂网| 久久人人爽人人爽| 在线亚洲精品| 黄色免费成人| 国产精品视频yy9099| 欧美日本一道本在线视频| 欧美一级播放| 99精品视频免费观看| 麻豆精品视频在线观看| 亚洲国产精品成人一区二区| 久久综合综合久久综合| 免费观看成人www动漫视频| 亚洲国产精品va在线看黑人动漫| 欧美日韩在线精品| 国产精品成人一区二区网站软件 | 欧美成人午夜剧场免费观看| 久久久久久久久久久一区| 欧美一级久久| 欧美一区二区三区视频在线观看| 一本色道久久综合亚洲精品不卡 | 欧美精品一区二区精品网| 在线视频欧美日韩精品| 欧美一级电影久久| 久久黄色影院| 亚洲理论电影网| 欧美日韩一区在线视频| 美女国产一区| 亚洲午夜91| 午夜亚洲性色福利视频| 欧美一乱一性一交一视频| 亚洲人成网站色ww在线| 9i看片成人免费高清| 夜夜嗨av一区二区三区| 久久精品在线| 欧美有码视频| 欧美一区二区视频在线观看| 在线观看欧美| 亚洲欧美999| 欧美国产日韩免费| 一区二区三区国产盗摄| 亚洲视频香蕉人妖| 亚洲一区三区电影在线观看| 欧美国产免费| 欧美日韩黄色一区二区| 精品96久久久久久中文字幕无| 好看不卡的中文字幕| 欧美午夜片欧美片在线观看| 国产精品国产三级国产专播精品人| 国产精品视频网站| 亚洲一区二区免费| 久久精品免费电影| 狼狼综合久久久久综合网| 亚洲巨乳在线| 久久久久久精| 中文国产成人精品| 国模精品一区二区三区色天香| 久久精品最新地址| 亚洲欧美成人综合| 日韩香蕉视频| 国产丝袜一区二区| 亚洲福利电影| 香蕉精品999视频一区二区| 亚洲第一毛片| 欧美人妖另类| 欧美网站在线观看| 亚洲黄色片网站| 欧美日韩亚洲综合在线| 亚洲网站视频福利| 一区二区三区视频在线看| 欧美精品久久久久久| 亚洲精品中文在线| 亚洲看片免费| 国产精品久久久久久久一区探花 | 久久婷婷国产综合国色天香| 久久久久久网址| 亚洲欧美成人一区二区三区| 久久亚洲精品网站| 久久美女性网| 国语自产精品视频在线看8查询8 | 日韩视频在线一区二区| 国产精品久久久久久av福利软件 | 久久久免费精品| 亚洲一区成人| 夜夜嗨av一区二区三区| 午夜视频在线观看一区二区| 日韩系列在线| 99精品欧美一区| 亚洲精品中文字幕有码专区| 欧美成人免费一级人片100| 亚洲欧美偷拍卡通变态| 久久精品夜色噜噜亚洲a∨| 亚洲一区二区视频| 欧美亚洲第一页| 亚洲图片欧美日产| 亚洲综合99| 国产精品九九久久久久久久| 亚洲一区欧美一区| 久久久噜噜噜久久狠狠50岁| 91久久国产综合久久91精品网站| 欧美日韩爆操| 在线中文字幕不卡| 亚洲精品视频一区| 欧美激情免费在线| 一区二区久久| 久久成人av少妇免费| 欧美午夜欧美| 欧美高清视频| 亚洲精品免费网站| 欧美成人国产| 亚洲精品国产视频| 亚洲毛片网站| 久久久精品网| 欧美在线观看日本一区| 国产偷自视频区视频一区二区| 午夜精品视频在线观看一区二区 | 在线成人免费视频| 欧美精品激情| 亚洲——在线| 国产精品国产三级国产aⅴ9色| 午夜免费久久久久| 欧美91视频| 在线日韩欧美视频|