
osgEarth2020
努力的包老板
任重而道远 冲鸭~~~~!
展开
-
应对osg导入模型初始朝向不一致导致多模型运动动画计算姿态出错问题
1.问题从3DMax中制作完成的模型,导出后的姿态各不相同,比如osg中自带的 .osg 格式模型,模型翻滚轴为x轴,俯仰轴为y轴,偏航轴为z轴。实际在osgEarth上使用的时候,如令模型初始方向为向北,即设置y轴为翻滚轴、x为俯仰轴、z轴为偏航轴。而系统交付使用的时候,使用方导入的模型坐标轴不一定按上面的来。2.解决思路及控制要求因此需要在对模型姿态进行控制与调整。思路:通过对名字末尾的字符串进行判断,判断出模型当前轴向信息,然后进行调整。要求:让模型制作方控制模型的正向仅在xoy平面,z轴控原创 2020-12-09 10:18:44 · 798 阅读 · 0 评论 -
一篇看懂osg矩阵父子关系与绝对/相对坐标系问题
MatrixTransform父子节点坐标系问题任意MartixTransform节点可以通过调用getMatrix()方法获得从参考点变换到目前MartixTransform节点所在位置的矩阵Matrix。每个模型都有自己的坐标系,比如有些飞机做成osg类型的文件时机头方向可能是z轴,有些机头方向却是x轴。这可以在外部软件如3dmax等进行修改,再打包模型。打包好的模型加载进osg中后,模型坐标系与模型保持相对静止,在模型加入到osg中时,模型的轴与世界坐标轴重合,原点相同。如果对模型进行旋转操作,原创 2020-08-11 13:45:36 · 1591 阅读 · 0 评论 -
osg/osgEarth绘制几何体
绘制几何体所需要的类如下:osg::Geode、osg::Geometry、osg::Vec3Array、osg::DrawArrays、osg::PrimitiveSet四个类包含的过程为 osg::ref_ptr<osg::Geode> pGeode = new osg::Geode; osg::ref_ptr<osg::Geometry> pGeometry = new osg::Geometry; osg::ref_ptr<osg::Vec3Arr原创 2020-08-10 14:48:11 · 2394 阅读 · 0 评论 -
osgEarth使用经纬度定义视点/设置相机跟随移动的节点
设置相机视点位置#include <osgEarthUtil/EarthManipulator>//---------------------------------------------------------------------------------------------//定义视点类对象osgEarth::Viewpoint vp;//设置视点参数,focalPoint()函数返回的是一个点_point,然后调用set()函数进行设置,第一个参数是空间参考参数,第二个原创 2020-08-10 14:37:29 · 4526 阅读 · 0 评论 -
osgEarth世界坐标和经纬度坐标相互转换
经纬度转世界坐标函数包含osg::EllipsoidModel的头文件为#include <osg/CoordinateSystemNode>osg::Vec3d LonLatAltToWorld(const osg::Vec3d lonLatAlt){ osg::Vec3d world; osg::EllipsoidModel* em = new osg::EllipsoidModel(); //Lat纬度Long经度 em->convertLatLongHeightT原创 2020-08-10 14:31:46 · 4982 阅读 · 0 评论 -
osgEarth设置文本颜色和大小
颜色设置void setTextColor(const osg::Vec4& clr){ m_textColor = clr; for(unsigned int i = 0;i < m_pTextGroup->getNumChildren();++i) { osgEarth::Annotation::LabelNode* pLabel = dynamic_cast< osgEarth::Annotation::LabelNode* >(m_pTextGroup原创 2020-08-10 14:27:33 · 1269 阅读 · 0 评论 -
osg/osgEarth设置节点显隐状态
设置节点显隐往上追溯,继承于Node的类的对象都可以设置显隐bool if_visible//如果是trueif (if_visible){ //可见 node->setNodeMask(0xFFFFFFFF);}else{ //不可见 node->setNodeMask(0x0);}原创 2020-08-10 14:21:18 · 1309 阅读 · 0 评论 -
程序无代码错误但是运行报错:xx不是类的函数
这种情况多出现在修改了所使用的库中的源码(添加了新的注释或修改了注释)如果一个函数明明没错,但是一直提示不是类的函数,或者其中调用找不到标识符,可能是注释的问题,把注释去掉再编译试试,尤其是这种形式的注释:/** */ 这种注释是蓝色的适用于复制了源码的注释符号过来或是对源码添加了新的注释后出现不明原因报错的情形。解决问题:回忆一下修改了哪里的注释,把注释删掉,把中文的标点改成英文的...原创 2020-08-10 14:04:26 · 353 阅读 · 0 评论 -
osgEarth要素贴地问题
贴地使用两种标签,分别是clamping和techniqueclamping之下含有CLAMP_TO_TERRAIN和CLAMP_ABSOLUTEtechnique之下含有TECHNIQUE_MAP、TECHNIQUE_SCENE、TECHNIQUE_GPU、和TECHNIQUE_DRAPE自由组合,多多试试,总有一个组合能实现贴地格式为:osgEarth::Style style;style.getOrCreateosgEarth::Symbology::AltitudeSymbol()原创 2020-08-10 14:01:01 · 2772 阅读 · 0 评论 -
osg控制台程序使用自定义大小窗口启动
使用自定义大小的窗口启动程序的代码viewer->setUpViewInWindow(100,100,800,600);原创 2020-08-10 13:56:49 · 495 阅读 · 0 评论 -
osg::TessellationHints类的头文件
osg::TessellationHints类的头文件#include <osg/ShapeDrawable>这个头文件里面包含了精度类 osg::TessellationHints原创 2020-08-10 13:54:57 · 742 阅读 · 0 评论