osg

OSG基本图元(上)

╄→尐↘猪︶ㄣ 提交于 2020-01-31 19:35:36
```cpp #include <Windows.h> #include <iostream> #include<osgDB/ReadFile> #include<osgGA/GUIEventAdapter> #include<osgViewer/Viewer> #include<osg/Geode> #include<osg/ShapeDrawable> #include<osgDB/ReadFile> #include<osg/Material> #include<osg/StateSet> osg::ref_ptr<osg::Geode> CreateBox() { osg::ref_ptr<osg::Geode> geode = new osg::Geode; osg::ref_ptr<osg::TessellationHints> hints = new osg::TessellationHints; osg::ref_ptr<osg::ShapeDrawable> shape = new osg::ShapeDrawable(new osg::Box(osg::Vec3(0.0, 0.0, 0.0), 1.0, 10.0, 10.0)); osg::ref_ptr<osg::Material> material = new osg::Material; osg::ref

osg中使用MatrixTransform来实现模型的平移/旋转/缩放

不羁的心 提交于 2020-01-30 09:03:09
osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html#undefined MatrixTransform是从Transform - Group继承而来,因此可以在它的下面挂接Node对象。 通过设置其矩阵,来实现其下子节点的模型变换。 -- 用局部坐标系来理解(局部坐标系又称惯性坐标系,其与模型的相对位置在变换的过程中始终不变) 如下代码: // 创建圆柱体 double r = 0.5; double h = 3.0; osg::Vec3 orginPt(0.0, 0.0, 0.0); osg::ref_ptr<osg::Geode> cylinderGeode = new osg::Geode; osg::ref_ptr<osg::Cylinder> geoCylinder = new osg::Cylinder(orginPt, r, h); osg::ref_ptr<osg::ShapeDrawable> cylinderDrawable = new osg::ShapeDrawable(geoCylinder.get()); cylinderDrawable->setColor(osg::Vec4(1.0f,0.0f,0.0f

osg中使用MatrixTransform来实现模型的平移/旋转/缩放

时光总嘲笑我的痴心妄想 提交于 2020-01-30 06:28:41
MatrixTransform是从Transform - Group继承而来,因此可以在它的下面挂接Node对象。 通过设置其矩阵,来实现其下子节点的模型变换。 -- 用局部坐标系来理解(局部坐标系又称惯性坐标系,其与模型的相对位置在变换的过程中始终不变) 如下代码: // 创建圆柱体 double r = 0.5; double h = 3.0; osg::Vec3 orginPt(0.0, 0.0, 0.0); osg::ref_ptr<osg::Geode> cylinderGeode = new osg::Geode; osg::ref_ptr<osg::Cylinder> geoCylinder = new osg::Cylinder(orginPt, r, h); osg::ref_ptr<osg::ShapeDrawable> cylinderDrawable = new osg::ShapeDrawable(geoCylinder.get()); cylinderDrawable->setColor(osg::Vec4(1.0f,0.0f,0.0f,1.0f)); cylinderGeode->addDrawable(cylinderDrawable.get()); // -- 以下操作都是针对局部坐标系而言 -- // 先将圆柱体平移(20.0, -12.0,

OSG和ProLand 的海面仿真

筅森魡賤 提交于 2020-01-26 19:48:08
基于OSG的海面仿真 OSG中国官网 http://www.osgchina.org/ OSG-ocean的效果图如下 proland的效果图如下 下面为OSG和OCEAN的配置 配置方法转自 http://blog.csdn.net/sohu_2011/article/details/7909803 下面所有的文件都可以在 http://download.csdn.net/detail/xdjinjian/5698027 下载到 一步步编译OsgOcean 电脑: 操作系统:win7 编译器:vs2010 显卡:NVIDIA GeForce GTX 550Ti 准备工作 一 安装cmake 网络下载cmake,并安装; 我安装的是cmake-2.8.9-win32-x86.exe 二 下载OSG并编译 osgOcean 1.0.1是用osg开发的,所以要安装OSG,官网上说可以用OSG2.8.2编译,所以我下载了OSG2.8.2源码来编译。OSG的国外官网进不去,但是国内的osgchina可以下载源码, 网络地址: http://www.osgchina.org/projects/osgcn/wikicn/Downloads.php 目前下载OSG2.8.2只能通过该网址提供的svn来下载;下面是svn http://www.openscenegraph.org/svn/osg

OSG在VS2008下的配置安装

雨燕双飞 提交于 2020-01-24 13:10:45
这两天心血来潮,突然想学点 OSG 的东西,其实 OSG 本身是挺好用的,就是编译安装有点让人头疼,佛祖保佑,终于编译成功了,为便来着参考,将过程记录如下: 一、 准备工作 下载相关的工具软件: 1, 最新版的 OSG 库: OpenSceneGraph-2.8.2.zip 。 2, 安装源代码所需要的工具: cmake-2.6.4-win32-x86.zip 3, Windows 支持的图像库: 3rdParty_Win32Binaries_vc90sp1.zip ,因为我用的是 vc2008, 如果用 vc05 应该有其它针对的版本 4, 数据文件包: OpenSceneGraph-Data-2.8.0.zip 二、 编译准备 为了编译的顺利进行,将下载的文件组织如下: 在 C 盘建立一个 OSG 的文件夹,然后其他文件如下放置: C:\OSG\OpenSceneGraph( 放置 OSG 最新库文件 ) C:\OSG\3rdParty( 放置图像库 ) C:\OSG\data( 放置 OpenSceneGraph-Data-2.8.0.zip 的加压数据 ) ,主要用于 examples 演示 三、 用 cmake 生成 Project & Solution files 1, 在 C:\OSG\OpenSceneGraph 下新建两个文件夹,分别命名为 build, bin

配置osg完全可用!

人盡茶涼 提交于 2020-01-22 01:27:51
环境:vs2015 win10 osg3.6.3 直接用把这个文件夹拷到c盘 里边内容自行下载即可 环境变量path中添加C:\OSG3.4.0\bin;C:\OSG3.4.0\data 在命令行输入 osgversion osgviewer cow.osg osglogo 等,如果出现缺少zlib.dll说明缺少第三方库 我已经都放在上边文件夹里边了 大家直接下载用不会有问题 最后在代码里测试 1.新建c++控制台程序 2. // ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 // #include <Windows.h> #include "stdafx.h" #include<osgViewer/Viewer> #include<osgDB/ReadFile> //int main() //{ // return 0; //} int main(int argc, char **argv) { osgViewer::Viewer viewer; viewer.setSceneData(osgDB::readNodeFile("cessna.osg")); return viewer.run(); } cpp里写这些文件 这个时候运行会有C:\Program Files (x86)\Windows Kits\8.1\Include\um\GL

C++智能指针

杀马特。学长 韩版系。学妹 提交于 2020-01-13 22:10:21
开始接触C++的项目开发,初步了解OSG(OpenSceneGraph)三维渲染引擎。图形学的知识是大二阶段接触的,也有点遗憾后来的毕设没有继续往这方面研究。现在有点像是朝花夕拾,不过也得上了。确实图形学离不开数学,再次接触还是一堆图元,四元数之类的概念问题。可能就因为这些,C++让人觉得难以接触。今天看了一些资料,下次记录一下在OSG封装下构造基本图形。这次主要介绍一下智能指针。 当时N哥做技术培训时候,这个新词感觉很有意思。下面的链接讲的很细 https://www.cnblogs.com/wxquare/p/4759020.html 这里要注意的是在用智能指针定义数组,需要把这个指针存放在堆里面 比如下面的例子 osg::ref_ptr<osg::ShapeDrawable> shape3 = new osg::ShapeDrawable; 目前对于OSG的了解有限,感觉智能指针和引用计数为0时释放内存这两点比较一直贯穿其中。之后的具体理解再进行补充 来源: CSDN 作者: OPMR 链接: https://blog.csdn.net/sexgeek/article/details/103963062

OSG QT :获取鼠标的world坐标

假装没事ソ 提交于 2020-01-13 00:28:15
网上的代码大部分是这样的: 1 auto matViewMatrix = camera->getViewMatrix(); 2 auto matProjectionMatrix = camera->getProjectionMatrix(); 3 auto wndMatrix = camera->getViewport()->computeWindowMatrix(); 4 osg::Matrix MVPW = matViewMatrix * matProjectionMatrix * wndMatrix; 5 osg::Matrix inverseMVPW = osg::Matrix::inverse(MVPW); 6 osg::Vec3 mouseWorld = osg::Vec3(x,y, 0) * inverseMVPW; 在和QT结合的开发的时候,发现这个位置是错误的,因为是鼠标获取的坐标的原点是左上角,而OSG的世界坐标系的原点是左下角,所以要把鼠标的Y值做转换。 像下面这样的: 1 void GraphicsWinQt::mouseMoveEvent( QMouseEvent *event ) 2 { 3 setKeyboardModifiers( event ); 4 this->getEventQueue()->mouseMotion(event->x(),

OSG Camera:setViewMatrixAsLookAt

孤街醉人 提交于 2020-01-13 00:00:50
setViewMatrixAsLookAt:设置viewMatrix,相当于怎么摆放相机 参数说明:void setViewMatrixAsLookAt(const osg::Vec3d& eye,const osg::Vec3d& center,const osg::Vec3d& up); eye:表示相机的位置, center:表示相机看的那个中心点, up:表示哪个方向是正方向 eye和center这两个点相减就是viewdireciton 正常情况下eye点要在center点后面才能看到图像。 camera->setViewMatrixAsLookAt(osg::Vec3f(0.0f, -10.0f, 0.0f), osg::Vec3f(0.0f, 0.0f, 0.0f), osg::Vec3f(0.0f, 0.0, 1.0f)); 因为OSG是右手坐标系,x轴向右,Z轴向上, 但是如果把up点改为-1, camera->setViewMatrixAsLookAt(osg::Vec3f(0.0f, -10.0f, 0.0f), osg::Vec3f(0.0f, 0.0f, 0.0f), osg::Vec3f(0.0f, 0.0, -1.0f)); 那么坐标系会是下面的样子 另外如果viewer设置了漫游器,那么这些函数不会起作用: m_viewer-

tcl/tk编译

天大地大妈咪最大 提交于 2020-01-12 19:05:23
参考: http://www.tcl.tk/doc/howto/compile.html#win 可下载已编译好的bin版本: https://bitbucket.org/tombert/tcltk/downloads/ 1.下载tcl-tk库 http://www.tcl-lang.org/ https://nchc.dl.sourceforge.net/project/tcl/Tcl/8.6.10/tcl8610-src.zip https://nchc.dl.sourceforge.net/project/tcl/Tcl/8.6.10/tcl8610-src.zip 2. 将下载后的文件解压到如下目录 E:\osg\tcl-tk\tcl8.6.10 与 E:\osg\tcl-tk\tk8.6.10 并创建如下目录: E:\osg\tcl-tk\tcltk 3. 编译 打开X64 Native Tools Command Prompt for VS 2019程序 3.1 TCL cd E:\osg\tcl-tk\tcl8.6.10\win nmake -f makefile.vc INSTALLDIR=E:/osg/tcl-tk/tcltk nmake -f makefile.vc install INSTALLDIR=E:/osg/tcl-tk/tcltk 3.2 TK cd