osg可以實作各種各樣角複雜的粒子效果,下面實作一個比較簡單的下雪的效果:
void createSnow() {
osg::ref_ptr<osg::Group> root = new osg::Group;
root->addChild(osgDB::readNodeFile("cow.osg"));
//設定雪花類
osg::ref_ptr<osgParticle::PrecipitationEffect> sn = new osgParticle::PrecipitationEffect;
//設定雪花濃度
sn->snow(0.3);
//設定雪花顔色
sn->setParticleColor(osg::Vec4(1, 1, 1, 0));
//設定風向
sn->setWind(osg::Vec3(0, 0, 0));
root->addChild(sn.get());
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();
viewer->addEventHandler(new osgViewer::WindowSizeHandler());
viewer->setSceneData(root.get());
viewer->realize();
viewer->run();
}
aaa