OSG粒子系統應用 雨雪效果

2021-07-04 00:09:54 字數 1412 閱讀 2876

目標:使用osg的粒子系統完全對天氣中雨雪效果的模擬

直接上**

osg::matrixd matrixeffect;

matrixeffect.maketranslate(pos);

// 設定粒子位置

osg::ref_ptr

> trans =

new osg::matrixtransform;

// 對粒子範圍進行了放大

trans->setmatrix(matrixeffect * osg::matrixd

::scale(100, 100, 100));

// 建立雨粒子

osg::ref_ptr

> pe =

new osgparticle::precipitationeffect;

pe->rain(1.0);

pe->setusefarlinesegments(true);

// ilevel引數是乙個int值,表示雨的級別,一般1-10就夠用了

pe->setparticlesize(ilevel /

10.0);

// 設定顏色

pe->setparticlecolor(osg::vec4(1, 1, 1, 1));

trans->addchild(pe);

m_praingroup->addchild(trans);

雪效果的實現和雨幾乎是一樣的,只是對precipitationeffect的粒子型別設定不一樣,**:

osg::matrixd mat;

mat.maketranslate(getpostion(x, y));

// 設定粒子位置

osg::ref_ptr

> trans =

new osg::matrixtransform;

trans->setmatrix(mat * osg::matrixd

::scale(10, 10, 10));

osg::ref_ptr

> pe =

new osgparticle::precipitationeffect;

// 注意,這裡區分雨雪效果

pe->snow(1.0);

pe->setparticlesize(ilevel /

10.0);

// 設定顏色

pe->setparticlecolor(osg::vec4(1, 1, 1, 1));

trans->addchild(pe);

m_psnowgroup->addchild(trans);

使用上面的方式是為了加到我的osgearth地球中,如果普通的group不能顯示以上效果的話,可以加入mapnode節點之下試試看。

OSG 粒子系統和初步

本文轉至 網際網路是是乙個相互分形並學習的平台,我希望我每個人可以將我們認為有價值的東西,在不損害他人利益的情況下分享給更多的人。在osg中提供有專門的粒子系統工具,名字空間為osgparticle,osg對經常使用的粒子模擬都做了專門的類,如 explosioneffect用於暴炸的模擬,fire...

粒子系統 烟花效果的實現

提到烟花,大家首先想到的都是天空上那綻放的炫美,或者手中炫目的白光,作為計算機體制內的人,以物件導向的思維來看待烟花的話,會得到什麼呢?我們可以將美麗的烟花效果抽象為由乙個個粒子組成的乙個系統,將粒子作為物件,它擁有座標 顏色 速度 生命週期等屬性,通過對大量粒子的顏色 路徑處理,就可以得到近似的烟...

Unity粒子系統,探照燈效果,相機跟隨

粒子系統 粒子系統是每個引擎都必須具備的,如果缺乏粒子系統,對於引擎將會帶來重要影響。unity3d的粒子系統也同樣相當的強大,現將unity3d粒子系統的部分屬性做如下整理。ellipsoid particle emitter min max size 每個粒子的半徑大小隨機範圍 越大每個粒子就越...