bool EarthManipulator::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa) { bool handled = false; // first order of business: make sure the CSN is established. if ( !established() ) return false; // make sure the camera projecti…
关于物理引擎旋转的一些整理 参考文档 http://blog.wolfire.com/2010/03/Comparing-ODE-and-Bullet 介绍ODE和bullet的利弊 http://stackoverflow.com/questions/6408198/bullet-vs-newton-game-dynamics-vs-ode-physics-engines 讨论作者想要哪款物理引擎 https://www.ibm.com/developerworks/cn/opensource…
在osgEarthUtil 下 Ocean.cpp 的  traverse函数中: // we don't want the ocean participating in the N/F calculation: osg::CullSettings::ComputeNearFarMode mode = cv->getComputeNearFarMode(); cv->setComputeNearFarMode( osg::CullSettings::DO_NOT_COMPUTE_NEAR_FA…
看了一下,OE生成的可执行文件 除了osg库和第三方库 OE生产最多的dll就是 osgdb_osgearth_XXXX.dll了 这些都是为了通过osgDB机制加载earth的数据用的. 所以,我觉得osgearth主要的工作是在给osg添加大量的DB插件,也就是数据读取解析插件! 这样可以读取能画出“earth地球”功能的数据!这是OE的主要行为…
首先粒子在地球上位置摆放很简单: //传入的经纬度坐标 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::Matrix offsetmatrix 计算出子节点在父节点下的绝对坐标 //osg::Matrix offposition 用来计算当前节点相对父节点的位置 osg::Matrix offsetmatrix; offsetmatrix.setTrans(newposition3); offsetmatrix.preMultRotate(fatherquat); offsetmatrix.preMultRotate(itr->_quatOffsetRotate); osg::Mat…
ReadResult result; osg::ref_ptr<osgDB::ReaderWriter> reader = osgDB::Registry::instance()->getReaderWriterForExtension("tif"); std::string name("D:\\gd.tif"); osgDB::ReaderWriter::Options* opt= NULL; osgDB::ReaderWriter::ReadR…
1.osgearth_graticule:生成经纬线. 2.osgearth_annotation:各类标注(点.线.面.模型.文本等). 3.osgearth_city:加载一个城市三维模型,可以浏览. 4.osgearth_clamp:在一个区域加载生成5000个树木的三维模型展示. 5.osgearth_colorfilter:运行不起来…… 6.osgeatth_controls:有一个osg的图标,可以控制透明度与方向.还有一些文本矩形框之类的. 7.osgearth_demo:qt的…
倾斜摄影三维模型格式包含:*.osgb,*.dae等 文件格式包含:*.xml, *.desc, *.lfp等 例如:LocaSpace Viewer软件把osgb分块模型文件建立索引生成一个lfp文件,该lfp文件包含三维模型所在的经度.纬度.高度值,便于倾斜摄影三维模型在地球上进行定位. osgb节点内部关系: MatrixTransform (通过ProxyNode关联PageLod) || PageLod || PageLod || PageLod || PageLod ..... ||…
总体介绍: 倾斜摄影就是将拍好的数据,三角网格化再附上贴图. 目前流行处理软件: Street Factory.PIX4DMapper.smart3D 后期开发平台:超图 Skyline smart3D相关资源网址:http://www.acute3d.com/s3c-viewer/ 其他相关平台:LocaSpace Viewer osgb文件是保存倾斜摄影的基本数据格式 可以通过osgconv.exe直接转换成osgt格式查看内部构造 使用webgl的cesium需要将osgb格式转换成3dT…
oe中的视角加速感觉好奇怪,就仿照谷歌方式去改了. 先看看oe原来的漫游器改变视角的接口: void CameraManipulator::setViewpoint(const Viewpoint& vp, double duration_seconds) { // If the manip is not set up, save the viewpoint for later. if ( !established() ) { _pendingViewpoint = vp; _pendingVi…
前面关于MyBatis功能点二plugin已经介绍了一些应用及其实现的底层代码,本文总结MyBatis提供的拦截器平台框架体系. 通过MyBatis功能点二:从责任链设计模式的角度理解插件实现技术 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中相关源码分析可知责任链模式在拦截器平台中的应用.从上图看除了责任链模式拦截器平台还使用了jdk动态代理,因为Plugin继承了实现jdk动态代理的Invocationhandler接口. 综合而言,Mybatis将工作单元与具体执行机制分离…
gazebo_models:https://bitbucket.org/osrf/gazebo_models 模型庫下載,可以參考如下命令: ~/Rob_Soft/Gazebo7$ hg clone https://bitbucket.org/osrf/gazebo_models 下載更改目錄下載到指定文件夾中. 模型庫的結構 目錄 配置等可以參考官方文檔,注意model.sdf. 當然也可以將自己制作的模型上傳到庫中,文檔中也有具體說明. code$ hg clone https://your…
spring中拦截器主要分两种,一个是HandlerInterceptor,一个是MethodInterceptor 一.HandlerInterceptor HandlerInterceptor是springMVC项目中的拦截器,它拦截的目标是请求的地址,比MethodInterceptor先执行. 1.创建我们自己的拦截器类并实现 HandlerInterceptor 接口或继承HandlerInterceptorAdapter.2.创建一个Java类继承WebMvcConfigurerAd…
由于受够了OE的漫游器,想搞个可以在全球飞行的漫游器,所以就做了一个: 请无视我的起名规则······ 类头文件:EarthWalkManipulator.h #pragma once //南水之源 20180101 #include <osgGA/CameraManipulator> #include <osgEarth/MapNode> #include <osgEarth/Viewpoint> #include <osgEarth/GeoData> c…
在初级版上,进行新的漫游方式调整 头文件: #pragma once //南水之源 20180101 #include <osgGA/CameraManipulator> #include <osgEarth/MapNode> #include <osgEarth/Viewpoint> #include <osgEarth/GeoData> class EarthWalkManipulator :public osgGA::CameraManipulator…
知识基础:osg漫游器基础 class OSGEARTHUTIL_EXPORT EarthManipulator : public osgGA::CameraManipulator EarthManipulator是直接继承osgGA的漫游器的 所以漫游器工作方式也是和osg漫游器一样的: 1.通过handle函数进行键鼠交互 2.通过updateCamera函数更新相机姿态(姿态通过getInverseMatrix) 未完…
原文参考:http://docs.osgearth.org/en/latest/user/features.html 自己翻译的,本人英文水平有限,有问题看原链接,原文 20170802重置修改部分翻译(本人也在不断学习啦O(∩_∩)O~) 注:OE就是osgEarth 了解Features Features是矢量的几何图形 不像(光栅化的)地图与高程数据,他不是离散的像素位图. osgEarth可以在任何级别详细的显示Features. 一个Features由三个部分组成 1.矢量的几何图形(…
ModelSource 是一个能生成OpenSceneGraph节点的驱动(driver) osgEarth使用ModelSources显示矢量特征(feature)数据和加载和显示外部3d模型 Feature Geometry(特征的几何模型插件) 这个插件使用样式表将矢量特性数据绘制成OSG几何模型 使用举例: <model driver="feature_geom"> <features driver="ogr"> <url>…
原文参考:http://docs.osgearth.org/en/latest/developer/maps.html#programmatic-map-creation 本人翻译水平有限... 加载earth地图文件 osg::Node* globe = osgDB::readNodeFile("myglobe.earth"); 最简单的方式 API编程式的地图创建 用API创建一个地图的基本步骤是: 1.创建一个地图对象(Map object)2.在你认为合适的地方添加图像层和高程…
RangeMode PIXEL_SIZE_ON_SCREEN 首先我们看看原始数据的构成: 第12层:(第一层) 第23层:(最后一层) pagelod下面有N多的pagelod一层包裹一层 通过osgviewer遍历时,会根据距离的远近加载不同层级的“小瓦片” 可以看出其stateset和geode的数据量不小,而且通过pagelod不断加载卸载,是变化的.这会导致大批量渲染时,加载卡顿(目前只是一小片测试) 如上图圈出的部分会不断变化. 下面开始我们的数据合并测试: 可以明显的看到GPU爆了…
几何Geometry 高度Altitude 挤压Extrusion 图标Icon 模型Model 渲染Render 皮肤Skin 文本Text 覆盖Coverage 提示: 在SDK中,样式表的命名空间是osgEarth::Symbology 每个符号类是在AltitudeSymbol中,属性通过LineSymbol::strokeWidth() 访问器可用 值类型 float: 实数 float with units: 有单位的实数, e.g. 20px (20 pixels) or 10m…
原文参考:http://docs.osgearth.org/en/latest/references/earthfile.html#model-layer 本人翻译能有限.... 模型层 模型层渲染“非地形”数据,如矢量的特征数据,外部三维模型等 举个例子: <map> <model name = "my model layer" driver = "feature_geom" enabled = "true" visible…
英文原文在 FGFCS.h头文件中 JSBSim的控制操作封装了飞行控制系统(FCS)的功能. 这个FGFCS类还封装了相同的“系统”和“自动驾驶仪”能力. FGFCS包含用来定义一个系统或飞行模型体系的“FGFCS组件列表”. 飞机的配置文件包含控制路径的描述(从一个输入或命令开始和结束的效应),例如:aerosurface. FCS组件包括一个轴的控制律是在配置文件中定义的顺序.例如,x - 15 <flight_control name="X-15 SAS"> <…
1.example_osganimate一)演示了路径动画的使用(AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera.CameraView.MatrixTransform.PositionAttitudeTransform等四种类型的节点上.二)演示了osgSim::OverlayNode的使用 2.example_osganimationeasemotion一)演示了osgAnimation::EaseMotion的使用,EaseMot…
参考:最长的一帧 先看下frame void ViewerBase::frame(double simulationTime) { advance(simulationTime);//记录仿真时间,帧数,收集弃用对象 eventTraversal();//处理键鼠响应,VPW矩阵,交互回调 updateTraversal();//更新节点访问器,分页数据,更新回调,相机操作,设置cullseting renderingTraversals();//遍历渲染 } eventTraversal()流…
1.osgearth_graticule:生成经纬线. 2.osgearth_annotation:各类标注(点.线.面.模型.文本等). 3.osgearth_city:加载一个城市三维模型,可以浏览. 4.osgearth_clamp:在一个区域加载生成5000个树木的三维模型展示. 5.osgearth_colorfilter:运行不起来-- 6.osgeatth_controls:有一个osg的图标,可以控制透明度与方向.还有一些文本矩形框之类的. 7.osgearth_demo:qt的…
查看osgconv.cpp main函数在533行 osg::ArgumentParser arguments(&argc,argv); //........一堆功能不管,先看一下文件读写 FileNameList fileNames; ;pos<arguments.argc();++pos) { if (!arguments.isOption(pos)) { fileNames.push_back(arguments[pos]); } } std::string fileNameOut(&…
因为对于globalmap不熟悉,不怎么怎么修改高程,好像也没有这功能. 干脆自己手动修改了高程图tiff了 由于自身一直使用osg的 自己使用了osgDB直接读取tiff,修改后保存的. 同事小周一直研究gdal,她使用了gdal库直接改的,事实证明在专业gis处理上还是gdal更合适,现在把两种方式都总结一下: 第一种:通过osgDB修改tiff #include <osg/Image> #include <osgViewer/Viewer> #include <osgE…
参考:最长一帧 先介绍几个类: osgUtil::CullVisitor:“筛选访问器” 当我们使用它遍历场景图形的各个节点时, CullVisitor 将会对每一个遇到的节点执行场景筛选的工作,判断它是否会超出视截锥体范围, 过于渺小,或者被遮挡节点(OccluderNode)挡住,从而将无助益于场景浏览的物体筛选并 剔除,降低场景绘制的资源消耗 osg::RenderInfo:“渲染信息”管理器 负责保存和管理与场景绘制息息相关的几 个重要数据:当前场景的视景器,当前场景对应的所有摄像机,以…