问题描述

今天我发现网友们竞然在透视投影和正交投影切换上存在问题,不知道怎么切,而且切出来问题很多。说良心话我就不是特别理解,因为这就是一句话的事情呀,我写出这个例子:双击,当前是透视就转成正交,当前是正交就转成透视。

本节资源

本文集包括本节所有资源包括模型代码都在此下载,按节的序号有文件或文件夹。

注意: 务必使用浏览器打开:
【击此打开网盘资源链接】

关键实现

我写了个事件处理,响应了双击事件,捕获后当前是透视投影就转成正交投影,当前是正交投影就转成透视投影,我的窗口长宽比是1:1.3:

    virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa){osgViewer::Viewer* viewer = (osgViewer::Viewer*)(&aa);if (ea.getEventType() == ea.DOUBLECLICK){if (_isPerspective){viewer->getCamera()->setProjectionMatrixAsOrtho(-20*1.3, 20*1.3, -20, 20, 0, 1000);}else{viewer->getCamera()->setProjectionMatrixAsPerspective(30, 1.3, 0.1, 100);}_isPerspective = !_isPerspective;}return false;}

以下是全部代码

#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osgGA/GUIEventHandler>class MyEventHandler : public osgGA::GUIEventHandler
{public:MyEventHandler() {_isPerspective = true;}virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa){osgViewer::Viewer* viewer = (osgViewer::Viewer*)(&aa);if (ea.getEventType() == ea.DOUBLECLICK){if (_isPerspective){viewer->getCamera()->setProjectionMatrixAsOrtho(-20*1.3, 20*1.3, -20, 20, 0, 1000);}else{viewer->getCamera()->setProjectionMatrixAsPerspective(30, 1.3, 0.1, 100);}_isPerspective = !_isPerspective;}return false;}bool _isPerspective;
};int main(int argc, char** argv)
{osgViewer::Viewer viewer;viewer.setSceneData(osgDB::readNodeFile("cow.osg"));viewer.addEventHandler(new MyEventHandler());viewer.run();return 0;
}

第25节 实例-透视投影和正交投影切换相关推荐

  1. Android零基础入门第25节:最简单最常用的LinearLayout线性布局

    原文:Android零基础入门第25节:最简单最常用的LinearLayout线性布局 良好的布局设计对于UI界面至关重要,在前面也简单介绍过,目前Android中的布局主要有6种,创建的布局文件默认 ...

  2. 第25节 典型应用集成技术

    第25节 典型应用集成技术 典型应用集成技术 1[单项选择题]共享数据库是一种重要的企业应用集成方式.以下关于共享数据库集成方式的叙述中,错误的是___( )___. A共享数据库集成方式通常将应用程 ...

  3. 是非人生 — 一个菜鸟程序员的5年职场路 第25节

    是非人生 - 一个菜鸟程序员的5年职场路第25节作者: 花8 天涯IT: http://cache.tianya.cn/publicforum/content/itinfo/1/77229.shtml ...

  4. HTML5+CSS3小实例:百叶窗图片切换效果

    实例:百叶窗图片切换效果 技术栈:HTML+CSS 效果: 源码: [html] <!DOCTYPE html> <html><head><meta http ...

  5. js+css实例超漂亮tab切换选项卡代码

    效果图: 代码:切换效果,要点击才能实现. js+css实例超漂亮tab切换选项卡代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra ...

  6. 【OpenGL ES】 Android OpenGL ES -- 透视投影 和 正交投影

    博客地址 : http://blog.csdn.net/shulianghan/article/details/46680803 源码下载 : http://download.csdn.net/det ...

  7. 投影变换--透视投影和正交投影

    .2.3 投影变换 3.2.3.1 基本概念 在计算机图形软件中所采用笛卡尔(cartesian)直角三维坐标系统,按照z轴方向的不同有两种形式: 1右手系统:当用右手握住z轴时,大姆指指向z轴的正 ...

  8. 第25节 虚拟专有网络原理及配置命令

    IPsecVPN 1 引言 1.1 加密技术概述 1.2 VPN概述 1.3 VPN分类 1.3.1 远程访问VPN 1.3.2 点到点VPN 2 IPsecVPN 2.1 IPsecVPN概述 2. ...

  9. 第12节 实例-挖方填方量的计算

    感谢 感谢网友热心提出这个问题,大家有问题也可以在评论区提出. 资源下载 本文集包括本节所有资源包括模型代码都在此下载,按节的序号有文件或文件夹: [击此打开网盘资源链接] 功能 1. 我们先画一个盒 ...

最新文章

  1. 创业基础(第四章: 创业风险及识别与管理) 来自高校:全国大学生创新创业实践联盟 分类:创新创业 学习规则:按序学习
  2. 太阳表面是怎样的呢?
  3. 【转】我的第一个Python小程序
  4. java jtree_Java JTree
  5. 前端学习(2906):Vite 解决了 Webpack 哪些问题
  6. java传递实例_Java方法的参数传递机制实例详解
  7. jQuery源码研究分析学习笔记-静态方法和属性(10)
  8. 关于在Webservice里使用LinqToSQL遇到一对多关系的父子表中子表需要ToList输出泛型而产生循环引用错误的解决办法!...
  9. 中国夹层玻璃板行业市场供需与战略研究报告
  10. java的JDK配置
  11. android c++标准命名空间demo
  12. Java -考研 学习路线(笔记链接汇总)-个人用
  13. “隐身侠”轻松破解,忽略开关机保护
  14. x64 盗版PCHunter
  15. 向日葵远程软件连接Ubuntu无法显示桌面之解决方案
  16. ESP8266 在Arduino 使用ST7789 OLED
  17. hdu 6184 Counting Stars(三元环计数)
  18. 微信小程序,大佬救我!!!
  19. Intelsat-29e卫星解体全损,威胁地球静止轨道安全
  20. Cocos-js快速上手

热门文章

  1. reiserfs相关
  2. 虚拟偶像的歌声原来是这样生成的!
  3. (转)漫谈CMS:ZOOMLA、NETCMS、风讯、动易异同
  4. JSR303校验之list校验问题
  5. 记录PHP实现第三方支付接口实现方法(发起支付、支付结果回调)
  6. 通过模拟200万次扔硬币得到的概率分布曲线(近似正态分布)
  7. mac M1芯片安装vmware虚拟机及centos8详细教程
  8. 夜神模拟器android 7.1.2 x86_64安装xposed框架
  9. Java 访问 复制 粘贴 剪切板
  10. Canvas橡皮筋似画图11