• PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 24.9MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 14
    下载次数
  • 2013-10-28 13:53
    上传日期
osg 节点颜色渐变 HUD文字与矩形颜色渐变,点选功能
Text7.12.rar
  • Text7.12
  • ipch
  • text7.12-b0996a58
  • text7.ipch
    134.2MB
  • Text7.12
  • Debug
  • Text7.12.exe.embed.manifest
    406B
  • link.read.1.tlog
    3.4KB
  • vc100.pdb
    5.8MB
  • link.3744-cvtres.write.1.tlog
    2B
  • link.5924-cvtres.write.1.tlog
    2B
  • link.33156-cvtres.read.1.tlog
    2B
  • link-cvtres.read.1.tlog
    2B
  • link.command.1.tlog
    1.5KB
  • rc.write.1.tlog
    234B
  • link.5924.read.1.tlog
    2B
  • Text7.12_manifest.rc
    206B
  • link.5056.read.1.tlog
    2B
  • CL.write.1.tlog
    238B
  • link.4828-cvtres.read.1.tlog
    2B
  • Text7.12.exe.intermediate.manifest
    381B
  • link.5924-cvtres.read.1.tlog
    2B
  • rc.command.1.tlog
    470B
  • link.7828-cvtres.read.1.tlog
    2B
  • link.5056-cvtres.write.1.tlog
    2B
  • link.5056.write.1.tlog
    2B
  • link.4828-cvtres.write.1.tlog
    2B
  • link.3744-cvtres.read.1.tlog
    2B
  • link.33156.write.1.tlog
    2B
  • cl.command.1.tlog
    586B
  • link.5056-cvtres.read.1.tlog
    2B
  • link-cvtres.write.1.tlog
    2B
  • mt.read.1.tlog
    254B
  • modle.obj
    1.3MB
  • Text7.12.log
    2.1KB
  • link.7828.write.1.tlog
    2B
  • link.5924.write.1.tlog
    2B
  • mt.write.1.tlog
    254B
  • link.7828-cvtres.write.1.tlog
    2B
  • rc.read.1.tlog
    226B
  • link.3744.write.1.tlog
    2B
  • link.33156-cvtres.write.1.tlog
    2B
  • link.4828.read.1.tlog
    2B
  • CL.read.1.tlog
    38KB
  • Text7.12.lastbuildstate
    42B
  • link.3744.read.1.tlog
    2B
  • vc100.idb
    1.8MB
  • link.33156.read.1.tlog
    2B
  • mt.command.1.tlog
    356B
  • link.4828.write.1.tlog
    2B
  • link.write.1.tlog
    552B
  • link.7828.read.1.tlog
    2B
  • Text7.12.exe.embed.manifest.res
    472B
  • Text7.12.vcxproj.filters
    943B
  • Text7.12.vcxproj.user
    143B
  • modle.cpp
    13.2KB
  • Text7.12.vcxproj
    4.2KB
  • Debug
  • Text7.12.pdb
    7.2MB
  • Text7.12.ilk
    1.7MB
  • Text7.12.exe
    229KB
  • Text7.12.sln
    891B
  • Text7.12.suo
    13KB
  • Text7.12.sdf
    16.3MB
内容介绍
#include <osgUtil/Optimizer> #include <osgDB/ReadFile> #include <osgViewer/Viewer> #include <osgViewer/CompositeViewer> #include <osgGA/TerrainManipulator> #include <osgGA/StateSetManipulator> #include <osgGA/AnimationPathManipulator> #include <osgGA/TrackballManipulator> #include <osgGA/FlightManipulator> #include <osgGA/DriveManipulator> #include <osgGA/KeySwitchMatrixManipulator> #include <osgGA/StateSetManipulator> #include <osgGA/AnimationPathManipulator> #include <osgGA/TerrainManipulator> #include <osg/Material> #include <osg/Geode> #include <osg/BlendFunc> #include <osg/Depth> #include <osg/Projection> #include <osg/MatrixTransform> #include <osg/Camera> #include <osg/io_utils> #include <osg/ShapeDrawable> #include <osgText/Text> #include <sstream> // 处理拾取事件的类,继承自osgGA::GUIEventhandler 界面事件处理 class PickHandler : public osgGA::GUIEventHandler { public: //构造函数 PickHandler(osgText::Text* updateText): _updateText(updateText) {} //析构函数 ~PickHandler() {} //处理(事件接口、动作接口) bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter& aa); //拾取(视图、事件接口) virtual void pick(osgViewer::View* view, const osgGA::GUIEventAdapter& ea); //设置显示内容 void setLabel(const std::string& name) { if (_updateText.get()) _updateText->setText(name); } protected: //传递一个文字对象 osg::ref_ptr<osgText::Text> _updateText; }; //事件处理(事件接口、动作接口) bool PickHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter& aa) { switch(ea.getEventType()) { case(osgGA::GUIEventAdapter::PUSH): { //dynamic_cast运算符的作用是将&aa转换成osgViewer::View*类型的对象 osgViewer::View* view = dynamic_cast<osgViewer::View*>(&aa); if (view) pick(view,ea); return false; } case(osgGA::GUIEventAdapter::KEYDOWN): { if (ea.getKey()=='c') { osgViewer::View* view = dynamic_cast<osgViewer::View*>(&aa); //event也是一个指针,类型是osgGA::GUIEventAdapter osg::ref_ptr<osgGA::GUIEventAdapter> event = new osgGA::GUIEventAdapter(ea); event->setX((ea.getXmin()+ea.getXmax())*0.5); event->setY((ea.getYmin()+ea.getYmax())*0.5); if (view) pick(view,*event); } return false; } default: return false; } } //拾取(视图、事件接口)通过view计算交点 ,从事件接口ea中获得 x和y void PickHandler::pick(osgViewer::View* view, const osgGA::GUIEventAdapter& ea) { //创建一个线段交集检测对象 osgUtil::LineSegmentIntersector::Intersections intersections; std::string gdlist=""; //得到鼠标的位置 x和y float x = ea.getX(); float y = ea.getY(); //如果发生交集运算 (即鼠标点中了物体) if (view->computeIntersections(x,y,intersections)) { //得到相交交集的交点, hitr是一个迭代器 for(osgUtil::LineSegmentIntersector::Intersections::iterator hitr = intersections.begin(); hitr != intersections.end(); ++hitr) { std::ostringstream os;//申请一个流 if (!hitr->nodePath.empty() && !(hitr->nodePath.back()->getName().empty())) { // the geodes are identified by name. os<<"Object \""<<hitr->nodePath.back()->getName()<<"\""<<std::endl; } else if (hitr->drawable.valid()) { os<<"Object \""<<hitr->drawable->className()<<"\""<<std::endl; } //将局部坐标顶点和法线输入到os这个流里面。 os<<" local coords vertex("<< hitr->getLocalIntersectPoint()<<")"<<" normal("<<hitr->getLocalIntersectNormal()<<")"<<std::endl; os<<" world coords vertex("<< hitr->getWorldIntersectPoint()<<")"<<" normal("<<hitr->getWorldIntersectNormal()<<")"<<std::endl; //交点索引列表vil,交点存在hitr里面 const osgUtil::LineSegmentIntersector::Intersection::IndexList& vil = hitr->indexList; for(unsigned int i=0;i<vil.size();++i) { os<<" vertex indices ["<<i<<"] = "<<vil[i]<<std::endl; } //gdlist是一个字符串,用来存os中要显示的文字 gdlist += os.str(); } } //设置显示内容 setLabel(gdlist); } //创建HUD 参数是osgText。HUD也是作为场景中的一个节点存在 osg::Node* createHUD(osgText::Text* updateText) { // create the hud. derived from osgHud.cpp (derived:来源于) // adds a set of quads, each in a separate Geode - which can be picked individually // eg to be used as a menuing/help system! // Can pick texts too! osg::Camera* hudCamera = new osg::Camera;//创建一个相机 hudCamera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);//设置绝对帧引用 hudCamera->setProjectionMatrixAsOrtho2D(0,1280,0,1024);//设置正投影矩阵 hudCamera->setViewMatrix(osg::Matrix::identity());//设置视图矩阵 hudCamera->setRenderOrder(osg::Camera::POST_RENDER);//设置渲染顺序为POST hudCamera->setClearMask(GL_DEPTH_BUFFER_BIT);//清除深度缓存 //设置字体,声明一个timesFont,初始化为times.ttf std::string timesFont("fonts/times.ttf"); //关掉字体的光照、禁用深度缓存 来保证字体一直在最上面 osg::Vec3 position(150.0f,800.0f,0.0f);//设置位置 osg::Vec3 delta(0.0f,-60.0f,0.0f); { osg::Geode* geode = new osg::Geode();//也可以写成osg::ref_ptr<osg::Geode> geode = new osg::Geode();-------geode就是一个指针 osg::StateSet* stateset = geode->getOrCreateStateSet();//状态设置 stateset->setMode(GL_LIGHTING,osg::StateAttribute::OFF);//关闭光照 stateset->setMode(GL_DEPTH_TEST,osg::StateAttribute::OFF);//关闭深度缓存 geode->setName("simple");//设置这个geode的名字,geode是场景中的叶子节点 hudCamera->addChild(geode); osgText::Text* text = new osgText::Text; geode->addDrawable( text );//geode是osg场景中的叶子节点,然后就是让所有drawable的东西成组 text->setFont(timesFont);//设置字体 text->setText("Picking in Head Up Displays is simple!\nHow to do it?\nAm I on the first quard?");//设置内容 text->setPosition(position);//设置字体位置,用到上面申明的position position += delta; } for (int i=0; i<6; i++) { osg::Vec3 dy(0.0f,-30.0f,0.0f); osg::Vec3 dx(120.0f,0.0f,0.0f); osg::Geode* geode = new osg::Geode(); osg::StateSet* stateset = geode->getOrCreateStateSet(); const char *opts[]={"One", "Two", "Three", "January", "Feb", "2003"}; osg::Geometry *quad=new osg::Geometry;//申明一个指向几何体的指针 stateset->setMode(GL_LIGHTING,osg::StateAttribute::OFF); stateset->setMode(GL_DEPTH_TEST,osg::StateAttribute::OFF); std::string name="subOption"; name += " "; name += std::string(opts[i]); geode->setName(name);//设置节点的名字 osg::Vec3Array* vertices = new osg::Vec3Array(4); // 1 quad,弄个3元数组指针,数组有4个元素,分别保存矩形的4个顶点 osg::Vec4Array* colors = new osg::Vec4Array;//4元数组指针 ,保存颜色 colors = new osg::Vec4Array; colors->push_back(osg::Vec4(0.8-0.1*i, 0.1*i, 0.2*i, 1.0));//通过i的变化来实现块的渐变颜色 quad->setColorArray(colors); quad->setColorBinding(osg::Geometry::BIND_PER_PRIMITIVE);//绑定颜色到方块上
评论
    相关推荐
    • codesforimageprocessing.rar
      实现简单图像处理,包括256色转灰度图、Hough变换、Walsh变换、中值滤波、二值化变换、亮度增减、傅立叶变换、反色、取对数、取指数、图像平移、图像旋转、图像细化、图像缩放、图像镜像、均值滤波、对比度拉伸、拉普拉斯锐化(边缘检测)、方块编码、梯度锐化、灰度均衡、直方图均衡、离散余弦变换、维纳滤波处理、逆滤波处理、阈值变换、高斯平滑。
    • matlab.rar
      基于MATLAB-GUI图形界面的数字图像处理软件 本系统设计基于GUI图形界面,用matlab语言编写代码,实现功能包括图象的读取、存储、显示、直方图均衡化、阈值化、小波分解、小波重构、加噪、去噪、平滑、锐化、边缘检测、图像分割等
    • OPENCV_SIFT_VC6.rar
      基于OPENCV的SIFT特征提取与匹配算法。包含完整的从图像高斯金字塔、DOG、空间极值点提取、关键点描述、KDtree匹配等关键步骤的全部函数实现,对全面深入理解Lowe的SIFT算法有莫大帮助。程序运行前须安装(1)OpenCV: http://opencvlibrary.sourceforge.net (2)SIFT: http://web.engr.oregonstate.edu/~hess/index.html,并配置其环境参数。
    • MATLAB_code_of_image_processing.rar
      该gui函数基本上包括图像处理里面的最基本处理,相当于一个小型photoshop。比如读取文件,几何变换中的垂直镜像,平移,旋转,缩放;正交变换的DFT,FFT,DCT,DST,DHT,DWashT;灰度处理中的反色,直方图均衡,全局线性变换,分段线性变换,指数非线性变换,对数非线性变换;图像增强里面的加噪声,平滑,锐化,伪彩色增强;图像分割里面的灰度阈值法,Robert,Laplace,sobel,prewitt,canny算子边缘检测法;图像恢复里面的直接逆滤波,维纳滤波;图像编码里面的霍夫曼编码,行程编码等等
    • bianyuan_jiance_bijiao.rar
      用六种算子(分别是gabor、拉普拉斯、priwitt、robert、sobel、wallis),对三种图象进行边缘检测比较,强烈推荐哦,是本人的毕业设计中的关键程序
    • 一维和二维小波变换的VC实现.rar
      小波算法在vc的具体实现.小波算法在图像处理,视频压缩,特征提取等领域有广泛应用,程序以灰度图像为数据分别演示了一维和二维小波变换,希望对大家有所帮助.谢谢!
    • thresold.rar
      基于小波变换阈值去噪的MATLAB源代码(包含小波包去噪程序)
    • HOG.rar
      基于HOG的行人检测,作者的源代码有错误,现代码已经进行了改变,并可以调试通
    • tuxiangzengqiang.rar
      本程序基于Matlab,初步实现图像增强的基本操作,实现 图像明暗度调整, 图像旋转,更改颜色显示方式,直接灰度调整,图像求反,动态范围压缩,显示原始图像直方图,直方图均衡化,滤波增强等功能
    • ImgSeg.rar
      哥们图像边缘检测与特征提取的毕业设计,包括全部经典算法,还有他自己的改进,VC6下测试通过。(这个改进我不是很懂,不要问我!:))