::ref_ptr group = new osg::Group(); vector subDirs; findDir(dataDir, subDirs);...::ref_ptr node = osgDB::readNodeFile(path); osg::ref_ptr lod = new osg::PagedLOD...::LOD::RangeMode::PIXEL_SIZE_ON_SCREEN); osg::ref_ptr geode = new osg::Geode; geode->...; osg::ref_ptr lod = new osg::PagedLOD(); auto bs = node->getBound(); auto c = bs.center...::PIXEL_SIZE_ON_SCREEN); osg::ref_ptr geode = new osg::Geode; geode->getOrCreateStateSet(
OSG C++ 获取文件后缀 OSG修改文件后缀名: 在使用OSG开发时,可以使用OSG提供的接口快速实现文件后缀名的修改,而不用麻烦地自己去写C++代码。...在osg的osgDB/FileNameUtils库中,提供了获取和修改文件后缀的函数,如下: /** Gets the parent path from full name (Ex: /a/b/c.Ext
数据资源准备 在OSG官方网站上下载最新的源码包。一般要求下载三个包: OpenSceneGraph-3.6.3,OSG的源码包。...2) BUILD_OSG_EXAMPLES/BUILD_MFC_ EXAMPLE: 这两个都是OSG的示例,可以勾选编译进去方便以后学习。...include文件夹就是OSG安装的include文件夹,里面是OSG的头文件。lib/lib_D则放入OSG的lib文件。HelloOSG就是我们用VS2015新建的空白win32控制台工程。...参考文献 OSG环境搭建(OSG3.6.2+VS2017+Qt5.10.1) VS2015+OSG3.6.1编译问题 OSG3.4.0+VS2010+WIN10编译及二次开发环境搭建 VS2010+64...+OSG3.2.1之一帮助文档的生成
最近做了一段时间的CEGUI和OSG之间的结合,有一点小小的收获。写一篇文章来记录所做的一点点事情。 下面写一点CEGUI和OSG之间结合的东西。...一.整体过程概述: CEGUI作为OSG的Drawable集成到OSG中。CEGUI继承osg::Drawable类,作为一个Drawable完成初始化,加入到一个节点中(osg::Geode)。...然后将该节点在Viewerd执行realize()之后加入到osg::Group对象中。即可将CEGUI集成到OSG中。...::ref_ptr gnode = new osg::Geode; osg::ref_ptr stateset = gnode->getOrCreateStateSet...osg::Geode> gnode = new osg::Geode; osg::ref_ptr stateset = gnode->getOrCreateStateSet
osg::Group(); string osgPath = "D:/Work/OSGBuild/OpenSceneGraph-Data/glider.osg"; osg::Node...::StateSet * ss = node->getOrCreateStateSet(); osg::ref_ptr program = new osg::Program...::ON); } int main() { osg::ref_ptr root= new osg::Group(); string osgPath = "D:...::StateSet * ss = node->getOrCreateStateSet(); osg::ref_ptr program = new osg::Program...::ON); } int main() { osg::ref_ptr root= new osg::Group(); string osgPath = "D:
1.解决方案 不得不说关于OSG的资料实在太零散了,搜索了很多关于OSG在QT下的解决方案,都是各有各的说法,有的说的不是很清楚,有的已经过时了。这里提供一下自己的解决方案吧。...在远古的OSG里面,应该是提供对QT的支持的;不过应该是由于QT版本变动比较大,现在的OSG版本应该已经没有了。...在这里我把定时器的部分给改进了一下,等待OSG的环境初始化完成在启动定时器,这个警告就没有了。...( osg::Vec4(0.2, 0.2, 0.6, 1.0) ); camera->setViewport( new osg::Viewport(0, 0, traits->width...::DisplaySettings* ds = osg::DisplaySettings::instance().get(); osg::ref_ptr<osg::GraphicsContext
/Light> using namespace std; using namespace osg; //添加灯光节点 void AddLight(osg::ref_ptr group...启用指定光源 //创建一个Light对象 osg::ref_ptr light = new osg::Light(); light->setLightNum(0);...->addChild(lightSource); } int main() { //根节点 osg::ref_ptr root = new osg::Group; root..., osg::StateAttribute::ON); // 启用指定光源 //创建一个Light对象 osg::ref_ptr light = new osg::Light...->addChild(lightSource); } int main() { //根节点 osg::ref_ptr root = new osg::Group; root
正文 我之前在这篇博文《OSG嵌入QT的简明总结》中论述了OSG在QT中显示的可视化问题。...int main(int argc, char* argv[]) { QSurfaceFormat format = QSurfaceFormat::defaultFormat(); #ifdef OSG_GL3...::ref_ptr loadedModel = osgDB::readRefNodeFile(filename); // optimize the scene graph...第二个是这个解决方案获取的帧数好像是自己计算的,与OSG内部计算的帧数不同似乎也正常。不过我这里是不太敢用这个解决方案了,目前还是使用之前的解决方案,以后有机会还是自己研究一下其中的实现。...参考 OpenSceneGraph + QOpenGLWidget - minimal example OSG 使用Qt的QOpenGLWidget
目录 1.解决方案 1) 使用TIF格式的DEM 2) 描述HeightField 2.存在问题 3.参考文档 1.解决方案 在网上参考了一些资料,使用OSG创建地形最简单的办法就是使用OSG::HeightField...::Geode* geode = new osg::Geode(); osg::ref_ptr heightShape = new osg::ShapeDrawable...osgDB::readImageFile(texFile); osg::ref_ptr tex = new osg::Texture2D; tex->setImage...(texImage); tex->setDataVariance(osg::Object::DYNAMIC); //渲染状态 osg::ref_ptr stateset...3.参考文档 osg三维重建的两种方法剖析:三角面片(osgUtil::DelaunayTriangulator)和四角面片(osg::HeightField) OSG从高程图创建地形-可运行 OSG从高程图创建地形
概述 我在《OSG加载倾斜摄影数据》这篇博文中论述了如何通过OSG生成一个整体的索引文件,通过这个索引文件来正确显示ContextCapture(Smart3D)生成的倾斜摄影模型数据。...osgEarth::GeoTransform,可以直接通过这个类的接口来加载倾斜摄影模型: std::string filePath = "D:/Data/scene/Dayanta/Data.osgb"; osg...::ref_ptr node = osgDB::readNodeFile(filePath); osg::ref_ptr xform...着色 另外一点要注意的是直接读取加载的倾斜摄影模型是没有颜色信息的,这点和OSG还不太一样,在帮助文档里面论述了这个问题: ?..."D:/Data/scene/Dayanta/Data.osgb"; osg::ref_ptr node = osgDB::readNodeFile(filePath); osg
/TriangleFunctor> using namespace std; using namespace osg; osg::ref_ptr redPolygon;...//计算空间三角形的面积 double CalTriangleArea(const osg::Vec3& a, const osg::Vec3& b, const osg::Vec3& c) {...::Geometry; // osg::ref_ptr redVex = new osg::Vec3Array; redPolygon->setVertexArray...//设置颜色数组 osg::ref_ptr redColors = new osg::Vec4Array; redColors->push_back(osg::Vec4...参考 OSG学习笔记(三)之如何将非三角面转换为三角面 osg几何体的图元的遍历 OSG计算并绘制模型中每一个三角面片的法向量 OSG(OpenSceneGraph)基础学习9:OSG多边形分格化
1.首先创建工程之前必须先链接OSG以及CEGUI的开发库,根据自身配置路径进行设置,现将本人设置路径贴出来以供参考,如下: 包含目录: E:\OSG\include F:\CEGUI\cegui...#pragma once #include #include #include #include <CEGUI...::CopyOp ©op=osg::CopyOp::SHALLOW_COPY):Drawable(drawable,copyop){} META_Object(osg,CEGUIDrawable...坐标系统是不一样的,如果是全屏的话,CEGUI中的0在OSG中是900(以1440*900为例),所以需要进行调整,以便CEGUI与OSG屏幕一致 return false; } case...::ref_ptr geode = new osg::Geode; osg::ref_ptr cd = new CEGUIDrawable
/FeatureModelLayer> #include using namespace std; void AddVector(osg...filePath; fmlOpt.featureSourceLayer() = filePath + "_source"; fmlOpt.enableLighting() = false; osg...::ref_ptr map = new osgEarth::Map(mapOpts); osg::ref_ptr mapNode =...map->addLayer(layer); AddVector(map); osgViewer::Viewer viewer; viewer.setSceneData(mapNode); osg...false; fmlOpt.styles() = new osgEarth::Symbology::StyleSheet(); fmlOpt.styles()->addStyle(style); osg
osgEarth::MapOptions mapOpts; mapOpts.cache() = cacheOpts; mapOpts.profile() = profileOpts; //创建地图节点 osg...::ref_ptr map = new osgEarth::Map(mapOpts); osg::ref_ptr mapNode =...osgEarth::Drivers::GDALOptions gdal; gdal.url() = "D:/Work/OSGNewBuild/osgearth-2.10.1/data/world.tif"; osg...BlueMarble", gdal); map->addLayer(layer); osgViewer::Viewer viewer; viewer.setSceneData(mapNode); osg...::ref_ptr map = new osgEarth::Map(mapOpts); osg::ref_ptr mapNode =
最近上线了的基于HTML5的燃气3D培训仿真系统,以前的老系统是采用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但因为这次新产品需求要求能运行多移动终端...,多年前基于MFC封装OSG的老系统架构也实在该退休了,这年头找能维护MFC这种古董级GUI的靠谱人也非易事。...,业务功能上还未有太大创新,但就目前的进度我们已经体会到HTML5的开发快速性,js语言也不是想象中那么弱,团队控制好一定的编码规范后js的灵活性带来的开发进度提高还是非常显著,刚开始选型大家还在争论OSG
1) OpenSceneGraph OSGEarth是OpenSceneGraph扩展库,编译过程可以参看我的另一篇文章:Win64下编译OSG详细过程(Win10+VS2015+OSG3.6.3)。...OSG有非常多的子类库,所以如果自己一个个填写的话非常麻烦。...然后填写文件夹C到OSG_DIR编译项,最后再次“Configure”,就可以帮你自动识别了相关的路径了。 ?
2) 日照方向 关于日照方向,我在《通过OSG实现对模型的日照模拟》这篇文章里面有过详细的表述,那么这里就直接搬运过来。 (1) 太阳高度角和太阳方位角 对于太阳光照来说,其方向并不是随便设置的。...我这里用到了GDAL来读写DEM和图像,此外还有向量计算用到了osg库里面的内容,如果没有osg,可以自己简单实现下,都是很简单的数学知识。...#include #include #include #include #include using namespace std; using namespace osg; //计算三点成面的法向量 void Cal_Normal_3D(const Vec3d& v1, const...::Vec3d arrayvector(0.0f, 0.0f, -1.0f); double fAltitude = osg::DegreesToRadians(solarAltitude);
近期,香港城市大学实验中合成了高熵合金,其微观结构表征为无序界面纳米层(DINL)包裹有序超晶格颗粒(OSG)材料,避免了普通多晶合金高温环境下结构不稳定性的弊端的同时,具有超高的强度,相关成果在Science...实验发现,有序超晶格颗粒(OSG)材料顶角主要被Al(11%)、Ti(11%)原子占据,面心主要被Ni(45%)、Co(21%)原子占据,然而无序界面纳米层位置,组分发生明显变化,具体表征为Ni、Al以及...附录:相关思考 1、文中作者杨涛做实验出身,博士期间发表了好几篇Science,妥妥大神无疑了,,在5月份时候就想从模拟的角度得知界面(DING)与晶粒(OSG)原子浓度为何具有差异等,是否可以用最优化理论去解释...首先想到的就是跟能量最优排布相关~(详细参考生活中的科学(三)——蜂巢形状以及结冰过程思考) 个人理解:采用电弧熔炼和热机械加工使得钢锭升温过程中,系统吸收相应的能量(总能量升高),由于晶界(DING)的能量密度高于晶粒内部(OSG...推论1:晶界(DING)与晶粒内部(OSG)的区别可以表征为不同的原子排布,个人推测界面能量密度高于晶粒内部能量密度; 推论2:每次电弧熔炼过程中,DING晶界(组分不一致)应该产生于最外侧,多次熔炼,
这个技术利用网络流量中可识别的交互行为,创建一个“组织安全图”(Organizational Security Graph[TM] (OSG)),OSG是一个基于时间所观察出的关系而形成的模型。...Aorato通过监控AD网络流量,对比实际活动与OSG模型中的异常,而这些异常可能就代表着攻击行为或者安全策略遭到违反了。...其部署及实现原理大致如下: 通过端口镜像方式部署,复制所有AD相关的网络流量到DAF中 DAF自动持续不断的学习各个个体行为 DAF建立OSG,并持续更新和维护个体的侧写特征。
领取专属 10元无门槛券
手把手带您无忧上云