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();
}
近期下载者:
相关文件:
收藏者: