osg中遇到的问题】的更多相关文章

OSG中找到特定节点的方法 转自:http://38288890.blog.163.com/blog/static/19612845320072721549504/ 为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程 [download id="14"]阐述了这个问题.下面是我写的一个类,找到指定名字.指定类型的节点:class findGeoNamedNode:public osg::NodeVisitor{public:fi…
osg中遇到的问题 今天写程序的时候, 需要把键盘和鼠标消息转发出来, 就直接写了接口用signal丢出来了. 程序写的很多, 测试的时候却崩溃了.... 在场景中拖拽鼠标左键的时候, 会发现在扔出鼠标左键的按下和弹起消息后, 还会再弹出几个消息: 多出来的几个消息查了下, 65508是右ctrl键, 有时还会弹出65507(左ctrl键)!!! 我勒个去, osg不会自动干这事吧, 以前没发现啊! 屁话不多说, 开始查吧.... 各种翻源码, 就是没看到哪里添加键盘消息了, 实在没辙到群里问了…
osg中的视点控制 osg的视点控制基类是CameraManipulator, 它是一个虚基类, 有用的方法都跟home有关. 在这个类里面有三个重要的成员变量: osg::Vec3d _homeEye osg::Vec3d _homeCenter osg::Vec3d _homeUp   这三个变量定义了初始相机的位置.   我们最常用的TrackballManipulator类其实没有定义什么, 它的主要方法都在基类OrbitManipulator里. 这个类里重要的函数是setTransf…
OSG中的HUD 所谓HUD节点,说白了就是无论三维场景中的内容怎么改变,它都能在屏幕上固定位置显示的节点. 实现要点: 关闭光照,不受场景光照影响,所有内容以同一亮度显示 关闭深度测试 调整渲染顺序,使它的内容最后绘制 设定参考贴为绝对型:setReferenceFrame(osg::Transform:ABSOLUTE_RF) 使其不受父节点变换的影响:setMatrix(osg::Matrix::identity()) 使用平行投影,设定虚拟投影窗口的大小,这个窗口的大小决定了后面绘制的图…
osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html#undefined MatrixTransform是从Transform - Group继承而来,因此可以在它的下面挂接Node对象. 通过设置其矩阵,来实现其下子节点的模型变换. -- 用局部坐标系来理解(局部坐标系又称惯性坐标系,其与模型的相对位置在变换的过程中始终不变) 如下代码: // 创建…
OSG中的示例程序简介 转自:http://www.cnblogs.com/indif/archive/2011/05/13/2045136.html 1.example_osganimate一)演示了路径动画的使用(AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera.CameraView.MatrixTransform.PositionAttitudeTransform等四种类型的节点上.二)演示了osgSim::OverlayNode…
OSG中找到特定节点的方法 为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程 [download id="14"] 阐述了这个问题.下面是我写的一个类,找到指定名字.指定类型的节点: class findGeoNamedNode: public osg::NodeVisitor { public: findGeoNamedNode(); findGeoNamedNode(const std::string name): osg…
OSG中的示例程序简介 1.example_osganimate一)演示了路径动画的使用 (AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera.CameraView. MatrixTransform.PositionAttitudeTransform等四种类型的节点上.二)演示了osgSim::OverlayNode的使用 2.example_osganimationeasemotion一)演示了osgAnimation::EaseMot…
#pragma comment(lib, "osg.lib") #pragma comment(lib, "osgDB.lib") #pragma comment(lib, "osgViewer.lib") #include  "osgViewer/Viewer" #include  "osgDB/ReadFile" #include  "osg/Node" #include "…
点选主要是重载osg的GUIEventHandler, class CPickHandler : public osgGA::GUIEventHandler{ //自定义回调函数名:CPickHandler osgViewer::Viewer * mViewer; //在这里定义要在重载函数里使用的变量 osg::Group * mGroup; osg::Node * lastSelect; osg::Node * replacedNode; int replaceNum; public: CP…
在OpenSceneGraph中,智能指针(Smart pointer)的概念指的是一种类的模板,它针对某一特定类型的对象(即Referenced类及其派生类)构建,提供了自己的管理模式,以避免因为用户使用new运算符创建对象实例之后,没有及时用delete运算符释放对象,而造成部分内存空间被浪费的后果,也就是所谓的内存泄露错误. 由于OSG中与场景图形有关的大多数类均派生自Referenced类,因此OSG大量使用了智能指针来实现场景图形节点的管理.智能指针的使用为用户提供了一种自动内存释放的…
前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模式 探究osg中的程序设计模式---创造型模式---Factory(工厂)模式 探究osg中的程序设计模式---创造型模式---AbstractFactory(抽象工厂)模式 探究osg中的程序设计模式---创造型模式---Singleton(单例)模式 探究osg中的程序设计模式---创造型模式---Builder(创造者)模式 探究osg中的程序设计模式---创造型模式---Prototype(原型)模式 总…
#pragma comment(lib, "osg.lib") #pragma comment(lib, "osgDB.lib") #pragma comment(lib, "osgViewer.lib") #include  "osgViewer/Viewer" #include  "osgDB/ReadFile" #include  "osg/Node" #include "…
作者:3wwang 原文接连:http://www.3wwang.cn/html/article_104.html 前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模式 探究osg中的程序设计模式---创造型模式---Factory(工厂)模式 探究osg中的程序设计模式---创造型模式---AbstractFactory(抽象工厂)模式 探究osg中的程序设计模式---创造型模式---Singleton(单例)模式 探究osg中的程序设计模式---创造型模式-…
最近看到osg Examples的osgQtBrowser例子, 觉得效果还是挺好的, 想加入到自己的项目中来, 就这样的搬运工作也出问题了-__- 拷过来的是这一段: osg::ref_ptr<osgQt::QWebViewImage> image = new osgQt::QWebViewImage; ) image->navigateTo((arguments[])); else image->navigateTo("http://www.baidu.com&quo…
最近在一个项目中需要动态的添加和删除EventHandler,添加的时候很顺利,使用view->addEventHandler()函数就可以了. 不过在删除的时候,出现点麻烦.   直接调用view->removeEventHandler()函数,会导致view在调用frame函数时,崩在这个位置: void CompositeViewer::eventTraversal(){    ...        for(ViewEventsMap::iterator veitr = viewEven…
//NeartestPointNodeVisitor.h #pragma once #include <osg\Matrix> #include <vector> #include <osg\Node> #include <osg\NodeVisitor> #include <osg\Camera> #include <osg\Vec3> #include <osg\MatrixTransform> #include &l…
osg::Shape类 继承自osg::Object类: osg::Shape类是各种内嵌几何体的基类,不但可以用于剔除和碰撞检测,还可用于生成预定义的几何体对象: 常见的内嵌几何体包括: osg::ShapeDrawable类: 派生自osg::Drawable类: 在osg::ShapeDrawable类的构造函数中提供了关联osg::Shape的方法: 同时,因为它继承自osg::Drawable类,所以它的实例需要被添加到叶节点中才能被实例绘制. createTexturedQuadGe…
3ds Max做好动画模型 导出选项:包含-动画-附加选项-勾选使用场景名(这样动画名就是场景名)高级选项-单位-勾选自动(否则导出的模型很小) 导出文件名假设a.fbx使用osgconv工具旋转坐标轴,因为FBX的坐标轴和OSG坐标轴X相差一个90度 osgconv a.fbx -o 90-1,0,0 a_new.osgb --use-world-frame 这里一定注意转换后的文件格式不要再使用fbx,要使用osgb(ive也不行),因为fbx的写插件有问题,动画写不进去 然后加载动画的时候…
主要涉及三个类: 1. osgUtil::PolytopeIntersector // 详细不同算法实现类 2. osgUtil::IntersectionVisitor //用来遍历节点树的每一个节点 3.osg::Node * mNode;  //  你要做相交測试的根节点 先看使用方法: osg::ref_ptr<osgUtil::PolytopeIntersector> intersector = new osgUtil::PolytopeIntersector(osgUtil::In…
使用osg加载fbx模型,需要自己编译fbx插件,编译流程与插件使用案例如下 代码地址:https://github.com/shelltdf/osgFBX CMake Error: The following variables are used in this project, but they are set to NOTFOUND.Please set them or make sure they are set and tested correctly in the CMake fil…
// draw callback that will tweak the far clipping plane just    // before rendering a drawable.    struct OverrideNearFarValuesCallback : public osg::Drawable::DrawCallback    {        OverrideNearFarValuesCallback(double radius)            : _radius…
常用的内嵌几何体包括: osg::Box //正方体 osg::Capsule //太空舱 osg::Cone //椎体 osg::Cylinder //柱体 osg::HeightField //高度图 osg::InfinitePlane //无限平面 osg::Sphere //球体 osg::TriangleMesh //三角片 以下是代码示例: /********************************************************** *Write by F…
int main() { osg::ref_ptr<osgViewer::Viewer> viewer1 = new osgViewer::Viewer; osg::ref_ptr<osg::Group> group1 = new osg::Group; osg::ref_ptr<osg::Group> group2 = new osg::Group; //osg::ref_ptr<osg::Node> node1 = osgDB::readNodeFile…
main.cpp测试代码 #include "TestSmartPointer" void fun() { SP<TestSmartPointer> sp1=new TestSmartPointer("A"); SP<TestSmartPointer> sp2=sp1; sp1=sp2; } void main() { fun(); //system("pause"); } TestSmartPointer头文件 #pra…
这三个值都是vec3变量,其中eye和center确定视角         eye就相当于人的眼睛,我们观察场景,是从这个坐标去看的,然后有了眼睛,我们观察得有一个方向,那么久需要另外一个坐标,就是center,就是我们要看的点,eye和center这两个点确定一条直线,这条直线就是我们的实视线,这就有了视角.up不知道有什么用,好像并没有什么用,…
添加文字版需要用到osg的三个名字空间:                         osgText::Text,这个类用来添加文字和设置文字的一些属性:                         osg::Geometry,这个类用来画常见的图形:                         osg/ShapeDrawable,通过这个类也可以画一些常见的图形,并且可以吧Geometry加进osg::Geode节点中: 下面先简要介绍一下这三个命名空间:   1.osgText:…
首先粒子在地球上位置摆放很简单: //传入的经纬度坐标 osg::Vec3d geoPoint; const SpatialReference* latLong = SpatialReference::get("wgs84"); //偏移在地球上的点 GeoPoint point(latLong, geoPoint.x(), geoPoint.y(), geoPoint.z(), eMode); osg::Matrix matrixGood; point.createLocalToWo…
OSG的消息机制包括好多个头文件预定义及多个类. 首先,消息接收相关的类当属osgGA::GUIEventHandler和osgGA::GUIEventAdapter这两个类了.前者处理OSG程序与用户交互,处理事件,事件全靠handle这个函数.此函数的定义: 重载1: virtual bool handle(osgGA::Event* event, osg::Object* object, osg::NodeVisitor* nv); 重载2: virtual bool handle(con…
OSG是Open Scene Graphic的缩写,是基于C++平台的使用OpenGL技术的开源3D场景开发. vs环境安装或者是在Ubuntu中环境的安装网上教程很多,都是大同小异的,认真操作容易成功,其中vs中的安装编译过程时间花销很大,估计3个小时.如果是在VS下面进行编辑的话要进行一些设置,要设置OSG的lib和include目录,而ubuntu中只需要编译时链接上几个库就ok,所有需要的库包括-losg,-losgViewer,-losgDB,-losgGA. 开始学习时,在vs的编程…