![](https://img-blog.csdnimg.cn/20210819172841324.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
OSG
OSG学习笔记
Devin·Finn
✍择一事,终一生,不为繁华易匠心。
展开
-
C++ && OSG随笔(更新ing)
废话开始接触osg已经一个月多了,从前端一下子转过来,虽然有C++的基础,OSG的编码方式,还是很有不同,特别是笔者没有学过OpenGL,作为一个初学者,碰壁是在所难免的事情。配置环境、阅读入门书籍等大概花了一个月时间,最近开始学习代码和编程原理。网上的资料很少,有很多收费。。。以下链接均免费公开,欢迎讨论指教。有需要文章中的工具等可以看我的资源或者私信我发布。论坛OSG官方论坛OSG中国官方论坛随笔20210819更新:OSG一些基础OSG的VS环境配置OSG的HelloWorl原创 2021-08-19 18:45:14 · 549 阅读 · 0 评论 -
三维坐标旋转函数
三维坐标旋转函数:参数说明:lot = 0,0,-47.5]为带旋转点坐标radian=[math.radians(54),math.radians(0),math.radians(298)]为X、Y、Z轴旋转角度的对应弧度制def rotateTransformation(lot, radian): rot_matrix_x = linalg.expm(np.cross(np.eye(3), [1,0,0] / linalg.norm([1,0,0]) * radian[0]))原创 2022-05-17 21:32:18 · 360 阅读 · 0 评论 -
关于OSG中裁剪几何体中isCullingActive()抛出异常:this is nullptr的问题
最开始是由于边界抛出来的异常思考:考虑是不是由于Geode创建的时候没有new之类的问题,由于我代码中最外层的报错是是切割监视器中的Pick函数中,步进也没有发现什么问题对比之前另一个系统中成功的代码,对比了一下。发现这里多添加了一层Geode,当即修改代码,从原来的Geometry -> Geode - > Geode -> ClipNode 改为Geometry -> Geode - > ClipNode ,然后,就好了,,,🙂又是苦逼研究原创 2022-05-11 22:13:58 · 312 阅读 · 1 评论 -
报错:QOpenGLContext::swapBuffers() called with non-exposed window, behavior is undefine
QOpenGLContext::swapBuffers() called with non-exposed window, behavior is undefine这句报错是出现在我的控制台中的,意思就是刷新OSG场景的时候还没有开始绘制场景,类似没有new就开始调用方法一样。解决打上断点调试发现是在绘制窗口之后报的错,所以将刷新场景的方法放在窗口显示之后,就可以了。...原创 2021-10-29 12:45:26 · 1443 阅读 · 0 评论 -
OsgQt环境搭建注意事项
OsgQt的CMakeLists.txt文件需要修改的部分修改部分:其中3.6.5是笔者的OSG版本,按照自己的修改就行FIND_PACKAGE(OpenSceneGraph 3.6.5 REQUIRED osgDB osgGA osgUtil osgText osgViewer osgWidget)SET(OPENSCENEGRAPH_SOVERSION 158)# 把下面这部分注释掉# 3rd Party Dependency Stuff# IF(WIN32)# INCL原创 2021-10-20 20:37:29 · 374 阅读 · 0 评论 -
VS2019工程开发中的问题总结
在C++常规中设置附加包含目录中的文件,#pragma region后面不能跟中文,会报由于编码引起的错误,猜测是由于工程开发中由于不同文件编码不同引起的。不同编码文件之间传值会乱码,(场景是文件路径),改为窗口选择文件,自动存入vector中然后传值,乱码解决。...原创 2021-10-12 13:28:20 · 206 阅读 · 2 评论 -
Qt开发中的问题总结
一开始用Qt开发的界面等,最后改为MSVC项目之后,文件的编码由UTF-8改为GB2312之后,界面中的部分显示成了乱码。// 乱码QString::fromLocal8Bit("打开文件");// 正常QStringLiteral("打开文件");不同编码文件之间传值会乱码...原创 2021-10-11 14:00:34 · 203 阅读 · 0 评论 -
Qt + MSVC使用SARibbon控件,踩坑记录
以下是笔者的碎碎念,正文向下滑…emm…背景是这样子的,前两天老师查看需求实现情况的时候,表示我没有界面操作。。。。啊这。。。我遂即恶补了Qt的知识,熬完了传智的视频和练习,老师表示不要原生要Office风格的系统。。。(似乎老师们对Office的风格都有一种执念…)好吧,继续研究ing,找到了开源项目SARibbon,刚上手超级生涩(笔者以前是做前端的,最近开始C++的桌面端),过程中遇到了很多的Bug…作为一名多年码农,有Bug和吃饭一样见怪不怪了,But…就有那么一两个Bug,能让你一杯茶,一首.原创 2021-10-05 21:53:34 · 1501 阅读 · 3 评论 -
Node派生类的遍历等
需求背景需求是这样的,需要用一个几何体,在一个体元素中提取一部分的插值结果。自然是没有现成的算法。实现的过程中,就需要对Geode、Geometry进行遍历。由于我之前编译帮助文档失败了,虽然OSG版本是3.6.5的,但是帮助文档的版本却是2.9.11的。一些方法还是有出入的。所以记录一下遍历Geode内的Geometry cout << "Geode2的数量" << this->temp_gde->getNumChildren() << endl;原创 2021-09-14 19:02:16 · 151 阅读 · 0 评论 -
矩阵 平移旋转
简单操作步骤:先实例化一个node,平移到x正轴的5osg::ref_ptr<osg::Group> group = new osg::Group;osg::ref_ptr<osg::MatrixTransform> max = new osg::MatrixTransform;osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("glider.osg");max->addChild(node.ge原创 2021-08-28 18:43:09 · 915 阅读 · 0 评论 -
OSG学习中的一些小问题
今天尝试叠加几何体,却出现了重叠,缝隙的问题。思考一番后发现忽略了一些问题,圆柱体的中心点在xyz的半值。不在底部或者顶部。原创 2021-08-20 23:42:44 · 185 阅读 · 0 评论 -
基础图元 简单矢量
创建简单矢量图基础:OSG坐标系,与笛卡尔三维坐标系方向相同步骤:申请顶点数组,设置垂直xoy面的正方形的四个顶点osg::ref_ptr<osg::Vec3Array> coords = new osg::Vec3Array;coords->push_back(osg::Vec3(-10.0, 5.0, -10.0));coords->push_back(osg::Vec3(10.0, 5.0, -10.0));coords->push_back(os原创 2021-08-19 20:25:58 · 217 阅读 · 0 评论 -
基础图元 Box
创建一个长方体(Box)效果图:步骤:申请一个精度osg::ref_ptr<osg::TessellationHints> hints = new osg::TessellationHints;hints->setDetailRatio(0.5);申请一个Shape(需要赋值精细度)osg::ref_ptr<osg::ShapeDrawable> shape = new osg::ShapeDrawable(new osg::Box(osg::Vec原创 2021-08-19 20:01:28 · 221 阅读 · 0 评论 -
OSG的HelloWorld
加载一个飞机模型直接上代码:#include <osgViewer/Viewer>#include <osgDB/ReadFile>int main() { osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer; viewer->setSceneData(osgDB::readNodeFile("glider.osg")); return viewer->run();原创 2021-08-19 18:44:38 · 351 阅读 · 0 评论 -
OSG的VS环境配置
配置VS环境笔者使用的是vs2019+osg3.6.4的环境项目右键,打开属性,选择VC++目录,给可执行文件目录添加路径为osg下面的bin,包含目录添加路径为osg下面的include,库目录添加为osg下面的lib目录。在链接器—》输入—》附加依赖性中添加以下类库osgd.libosgUtild.libosgGAd.libosgViewerd.libOpenThreadsd.libosgAnimationd.libosgDBd.libosgEarthd.libos原创 2021-08-19 17:45:08 · 709 阅读 · 0 评论 -
OSG一些基础
场景节点树节点关系图osg::Groupgroup里有addChild()这个函数,可以添加子节点到group下面,Node则没有这个osg::MatrixTransform可以设置一些矩阵的变换。旋转、缩放、平移之类的操作osg::AtuoTransform一些自动的矩阵。自动缩放、自动旋转、朝着屏幕、朝着相机之类的操作osg::PositionAttitudeTransform设置位置...原创 2021-08-19 17:22:49 · 426 阅读 · 0 评论