下面的范例演示了4个视景器辅助相机拼接在一起,同时显示一个场景的效果:

#include <osgViewer/Viewer>
#include <osg/Node>
#include <osg/Geometry>
#include <osg/Geode>
#include <osg/Group>
#include <osg/AutoTransform>
#include <osg/ProxyNode>
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>
#include <osgText/Text>
#include <osgUtil/Optimizer>
#include<osg/Camera>
#include<osgViewer/Viewer>
#include <iostream>osg::Camera* createCamera(int x, int y, int w, int h)
{osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;traits->windowDecoration = false;traits->x = x;traits->y = y;traits->width = w;traits->height = h;osg::DisplaySettings* ds = osg::DisplaySettings::instance();traits->alpha = ds->getMinimumNumAlphaBits();traits->stencil = ds->getMinimumNumStencilBits();traits->sampleBuffers = ds->getMultiSamples();traits->samples = ds->getNumMultiSamples();osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get());osg::ref_ptr<osg::Camera> camera = new osg::Camera;camera->setGraphicsContext(gc.get());camera->setViewport(new osg::Viewport(0, 0, w, h));return camera.release();
}
void main()
{osg::Node*pModel = osgDB::readNodeFile("glider.osg");osgViewer::Viewer viewer;viewer.addSlave(createCamera(100, 100, 400, 300), osg::Matrixd::translate(1.0, -1.0, 0.0), osg::Matrixd());viewer.addSlave(createCamera(505, 100, 400, 300), osg::Matrixd::translate(-1.0, -1.0, 0.0), osg::Matrixd());viewer.addSlave(createCamera(100, 405, 400, 300), osg::Matrixd::translate(1.0, 1.0, 0.0), osg::Matrixd());viewer.addSlave(createCamera(505, 405, 400, 300), osg::Matrixd::translate(-1.0, 1.0, 0.0), osg::Matrixd());viewer.setSceneData(pModel);viewer.run();
}

说明:addSlave的第2个参数是投影偏移矩阵,第3个参数是观察偏移矩阵。

结果如下:

这四个相机共享主相机的投影矩阵和观察矩阵以及同一个场景树结构。其中第一个addSlave表示第一个视景器,其中:第2个参数osg::Matrixd::translate(1.0, -1.0, 0.0),表示在原来主相机的投影矩阵的基础上,x轴向右有1单位的偏移量,Y轴向下有1单位的偏移量,这样保证了第一个窗口的部分奶牛模型位于第一个窗口的右下角,同理第2、3、4个视景器addSlave函数的第2个参数保证了部分奶牛模型位于窗体的左下角、右上角、左上角,这样相当于四个部分的奶牛模型拼接到了一起。注意:主相机投影是在每个子窗体中心的,也就是说第2个参数设置为osg::Matrixd::translate(0, 0, 0.0),则这四个窗体的部分奶牛模型都位于四个窗体的中心。

osg多视景器实现投影墙相关推荐

  1. 史上最全虚拟现实VR(视景仿真/系统仿真/可视化)工作站硬件配置方案

    主要内容 第一章 虚拟现实(视景仿真.系统仿真.可视化)系统介绍 第二章 虚拟现实系统对硬件技术要求 第三章 行业应用VR工作站配置方案          VR应用1-视景仿真与训练工作站配置方案   ...

  2. 虚拟现实VR(视景仿真、系统仿真、可视化)工作站配置方案

    主要内容 第一章 虚拟现实(视景仿真.系统仿真.可视化)系统介绍 第二章 虚拟现实系统对硬件技术要求 第三章 行业应用VR工作站配置方案            VR应用1-视景仿真与训练工作站配置方案 ...

  3. 3D坐标系、矩阵变换、视景体与裁剪

    背景 当前3D图形界主要有两个:微软的Direct 3D以及某组织的OpenGL.曾经一度OpenGL几乎占据所有3D图形领域,这在巨人微软面前简直就是屌丝逆袭.曾几何时微软搞IDE borland公 ...

  4. 机载雷达电子对抗视景仿真训练系统软件

    机载雷达电子对抗视景仿真训练系统软件 华盛恒辉视景仿真是近几年随着计算机技术与仿真理论的发展而出现的一门新型学科.其采用计算机图形技术,根据仿真的目的,构造仿真对象的三维模型并再现真实的环境.将视景仿 ...

  5. 视景帮你三分钟了解全息应用

    视景帮你三分钟了解全息应用 最近经常被问到全息的问题,比如: 能不能给我搞个跟科幻片中那样完全悬浮在空气中的全息影像? 这次展会能弄个悬浮的全息来表现智能智慧就非常COOL了. 嗯-- 我还是整一篇文 ...

  6. OpenGL投影变换:视景体及glFrustum、gluPerspective 与glOrtho、gluOrtho2D

    一.            视景体 视景体是指成像景物所在空间的集合.它是一个空间集合体. 注意视景体指的是一个空间集合.一般来说,集合中的每个空间都是个立方体.然后所有的这些空间堆在一起,在外侧取一 ...

  7. 判断点是否在视景体内的参考资料

    最近在研究视景体裁剪的问题,在网上搜索资料,以下是可以参考的内容,希望对大家有帮助. http://www.lighthouse3d.com/tutorials/view-frustum-cullin ...

  8. AerSale将携手Universal Avionics为空客320飞机上的ClearVisionTM增强型飞行视景系统开发STC

    佛罗里达州科勒尔盖布尔斯--(美国商业资讯)--二手飞机.发动机.二手可用材料以及维护.修理和大修(MRO)服务的全球供应商AerSale®今日宣布,该公司将与Universal Avionics携手 ...

  9. 计算机可视化视景仿真,计算与仿真、三维设计、图像处理、视景仿真、4k视频剪辑工作站介绍2015版.pptx...

    计算与仿真.三维设计.图像处理.视景仿真.4k视频剪辑工作站介绍2015版 图形工作站的历史.现状与品牌差异分类过去(2008年前)现在品牌IBMSUNSGIHP/DELL/联想UltraLAB硬件各 ...

最新文章

  1. sublime插件开发教程(附源码)
  2. MIUI 9稳定版即将推送,米粉:升级小米6相机算法比升级系统重要
  3. Boost:parallel grep测试程序
  4. 【数据结构】集合及运算
  5. complete checkbox in Fiori
  6. excel SUBTOTAL函数使用详解
  7. centos 6 安装mosh 1.2
  8. 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
  9. 一款可留言的恋爱计时HTML源码
  10. pandas 常用函数整理
  11. 老板为什么越来越难熬?
  12. 大型网站技术架构-入门梳理
  13. rabbitmq direct 多个消费者_rabbitMQ消息队列入门介绍
  14. 记账用哪个软件比较好?
  15. HandlerSocket安装
  16. 2022年6月少儿编程等级测试来了
  17. 常见泰勒展开公式及复杂泰勒展开求法
  18. 从零开始学python项目_从零开始学Python程序设计
  19. 代码实证:风险平价及其改进思路——主成分风险平价
  20. 第三章 变量和数据类型_C语言中的小数(float,double)

热门文章

  1. 25条写代码建议,句句真言,值得牢记!
  2. Windows环境下yolov3+darknet批量处理图片完整教程
  3. VHDL数字秒表的设计
  4. android view getx 0,Android动画:解决通过View.getY()获取初始位置为0的问题
  5. app图标圆角角度_教你如何绘制风格统一的APP界面图标
  6. java环境classpath_Java开发环境配置之Path和classpath
  7. threejs 三面体_如何在Three.js中构造空心圆柱体
  8. php文件引用问题,Php引用文件引起的空白行问题(UTF-8)
  9. 用python让excel飞起来 pdf_能听会写的科大讯飞智能办公本,让工作效率瞬间翻番!丨试用...
  10. python开发小型数据库_Python开发【第十七篇】:MySQL(一)