ScatterPoints

所属分类:3D图形编程
开发工具:C/C++
文件大小:952KB
下载次数:3
上传日期:2015-10-23 20:45:29
上 传 者zmjsysy
说明:  离散点是数据管理,采用4叉树的管理方式,对于搞图形算法的人员还是很有帮助的.渲染采用OSG,不能直接编译,需要配置一下环境,没提供
(Discrete point data management, the use of 4-tree management methods, for persons engaged in graphics algorithms or helpful. Rendering using OSG, can not be directly translated, need to configure the environment, did not provide)

文件列表:
ScatterPoints\AttemperPoints.cpp (2842, 2013-04-07)
ScatterPoints\AttemperPoints.h (636, 2013-04-07)
ScatterPoints\main.cpp (2484, 2013-04-06)
ScatterPoints\OrganizePoints.cpp (11922, 2013-04-06)
ScatterPoints\OrganizePoints.h (875, 2013-04-06)
ScatterPoints\RenderPoints.cpp (1694, 2013-04-08)
ScatterPoints\RenderPoints.h (353, 2013-04-08)
ScatterPoints\ScatterPoints.ncb (6614016, 2013-04-20)
ScatterPoints\ScatterPoints.vcproj (4987, 2013-04-07)
ScatterPoints\stdafx.cpp (678, 2013-04-08)
ScatterPoints\stdafx.h (356, 2013-04-05)
ScatterPoints\targetver.h (765, 2013-03-31)
ScatterPoints (0, 2015-10-23)

/* OpenSceneGraph example, osgpointsprite. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #pragma comment(lib, "osg.lib") #pragma comment(lib, "OpenThreads.lib") #pragma comment(lib, "osgDB.lib") #pragma comment(lib, "osgUtil.lib") #pragma comment(lib, "osgVolume.lib") #pragma comment(lib, "osgWidget.lib") #pragma comment(lib, "osgFX.lib") #pragma comment(lib, "osgGA.lib") #pragma comment(lib, "osgManipulator.lib") #pragma comment(lib, "osgViewer.lib") #include #include #include #include #include #include #include #include #include #include #include osg::Geode *makeGalaxy(unsigned nvertices) { osg::Geode *geode = new osg::Geode(); osg::Geometry *galaxy = new osg::Geometry(); osg::Vec3Array *vertices = new osg::Vec3Array(); osg::Vec4Array *colors = new osg::Vec4Array(); osg::Vec4 ini(1,1,0,1); osg::Vec4 fin(0,0,1,1); /** Formula for the two spirals */ for (unsigned i=0;ipush_back(osg::Vec3(cos(val)*val+modx1, sin(val)*val+mody1, modz1)); vertices->push_back(osg::Vec3(-cos(val)*val+modx2, -sin(val)*val+mody2, modz2)); colors->push_back(ini+(fin-ini)*(i*2/(float)nvertices)); colors->push_back(ini+(fin-ini)*(i*2/(float)nvertices)); } galaxy->setVertexArray(vertices); galaxy->setColorArray(colors); galaxy->setColorBinding(osg::Geometry::BIND_PER_VERTEX); galaxy->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POINTS, 0, nvertices)); geode->addDrawable(galaxy); return geode; } osg::StateSet* makeStateSet(float size) { osg::StateSet *set = new osg::StateSet(); /// Setup cool blending set->setMode(GL_BLEND, osg::StateAttribute::ON); osg::BlendFunc *fn = new osg::BlendFunc(); fn->setFunction(osg::BlendFunc::SRC_ALPHA, osg::BlendFunc::DST_ALPHA); set->setAttributeAndModes(fn, osg::StateAttribute::ON); /// Setup the point sprites osg::PointSprite *sprite = new osg::PointSprite(); set->setTextureAttributeAndModes(0, sprite, osg::StateAttribute::ON); /// Give some size to the points to be able to see the sprite osg::Point *point = new osg::Point(); point->setSize(size); set->setAttribute(point); /// Disable depth test to avoid sort problems and Lighting set->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF); set->setMode(GL_LIGHTING, osg::StateAttribute::OFF); /// The texture for the sprites // osg::Texture2D *tex = new osg::Texture2D(); // tex->setImage(osgDB::readImageFile("Images/particle.rgb")); // set->setTextureAttributeAndModes(0, tex, osg::StateAttribute::ON); return set; } int main(int, char *[]) { osgViewer::Viewer viewer; /// Make the galaxy of points osg::Node *node = makeGalaxy(5000); node->setStateSet(makeStateSet(10.0f)); viewer.setSceneData(node); return viewer.run(); }

近期下载者

相关文件


收藏者