基于OpenGl的场景图理解

本文的场景图是狭义的,主要局限于变换。本文是对 University Sheffield Dr Steve Maddock的翻译。

1 基本定义

场景图是对push...pop层次的一种可视化描述。

2 建立场景:

(1) 场景是由一些独立物体组成的。

(2) 每个独立物体有自己的坐标系

eg. 一个正方体可以把其中心放在原点

(3)在物体自己的坐标系里改变物体。eg. 变大缩小,旋转等

(4)通过移动来放置物体到世界坐标系中

(5)基于上图的场景图

相应的代码:

细化drawcubes

 

(6)一个animation的物体通过更改hierarchy可以产生不同的动画效果

时间: 2024-07-31 13:46:05

基于OpenGl的场景图理解的相关文章

基于OpenGL的随机图动画演示框架与代码

基于Opengl的实时动画,为可视化科学计算过程提供了有利的工具. 然而,对于初学者来说,相关知识的学习仍需经历一个过程. 将Opengl的初始化等进行适当封装,建立了Opengl的动画框架,用户可以直接应用C语言的知识或Matlab知识,定义框架中相应的函数,即可实现实时动画程序开发,为科学计算和可视化计算提供了便利. 下面给出了Ubuntu14.04下,基于OpenGL的点线随机图动画框架. 通过分析该程序,用户可以方便地定制程序,以达到用户算法的期望. 代码如下: //第三方库: sudo

基于全景照片和场景模型计算导出纹理贴图

基于全景照片和场景模型计算导出纹理贴图 首先,假设全景的位姿是已知,一般可以通过传感器测量或者相关标定方法计算得到:另外,还假设相机中心与模型坐标中心重合(只有这样才能将全景和模型映射到标准球上):这里重点介绍如何基于全景照片和场景模型(.obj)计算导出纹理贴图(.png).主要用到一种球面映射的思想,具体实现如下: 一.实现思路 1.全景照片标准化,扩大填充为2:1大小的全景照片,如果已经是2:1的全景无需这种扩充变换. 2.标准全景照片映射到标准球面上.(标准球是半径为1m的空间球体) 3

基于OpenGL ES 的深度学习框架编写

基于OpenGL ES的深度学习框架编写 背景与工程定位 背景 项目组基于深度学习实现了视频风格化和人像抠图的功能,但这是在PC/服务端上跑的,现在需要移植到移动端,因此需要一个移动端的深度学习的计算框架. 同类型的库 caffe-android-lib 目前应该是最便于集成使用的深度学习框架库. tensorflow和mxnet据说也有对应的android库,因时间原因暂未测试. CNNdroid,网址https://zhuanlan.zhihu.com/p/25259452,这个是用 ren

基于OpenGL的三维曲面动态显示实现

在使用Visual C++的MFC AppWizard建立应用程序框架后,生成了多个类,与OpenGL编程相关的类是视图类,主要的显示任务都在其中完成. 1.基于OpenGL绘图的基本设置 1.1 设置必要的编译链接环境 OpenGL的图形编程接口包括的主要函数和库函数被封装在动态链接库中,因此在项目中要添加 OpenGL32.dll.glu32.dll和glaux.dll三个库.同时在应用程序的视类头文件中加入OpenGL头文件说明: #include"gl\gl.h" #inclu

opengl中场景变换|2D与3D互转换(转)

opengl中场景变换|2D与3D互转换 我们生活在一个三维的世界——如果要观察一个物体,我们可以: 1.从不同的位置去观察它.(视图变换) 2.移动或者旋转它,当然了,如果它只是计算机里面的物体,我们还可以放大或缩小它.(模型变换) 3.如果把物体画下来,我们可以选择:是否需要一种“近大远小”的透视效果.另外,我们可能只希望看到物体的一部分,而不是全部(剪裁).(投影变换) 4.我们可能希望把整个看到的图形画下来,但它只占据纸张的一部分,而不是全部.(视口变换) 这些,都可以在OpenGL中实

基于OpenGL三维软件开发

实验原理: OpenGL在MFC下编程原理---- Windows操作系统对OpenGL的支持 在Windows下用GDI作图必须通过设备上下文(DeviceContext简写DC)调用相应的函数:用OpenGL作图也是类似,OpenGL函数是通过"渲染上下文"(RenderingContext简写RC)完成三维图形的绘制.Windows下的窗口和设备上下文支持"位图格式"(PIXELFORMAT)属性, 和RC有着位图结构上的一致.只要在创建RC时与一个DC建立联

8张图理解Java

1.字符串不变性 下面这张图展示了这段代码做了什么 1 2 String s = "abcd"; s = s.concat("ef"); 2.equals()方法.hashCode()方法的区别 HashCode被设计用来提高性能.equals()方法与hashCode()方法的区别在于: 如果两个对象相等(equal),那么他们一定有相同的哈希值. 如果两个对象的哈希值相同,但他们未必相等(equal). 3.Java异常类的层次结构 图中红色部分为受检查异常.它

基于Java Web的图形化电网线损计算

引言 在各种电力系统应用软件中, 电力图形化表达的重要组成部分.鉴于目前各种电力系统大多数为B/S结构, 而基于浏览器的矢量图编辑和展示技术已成为当下的热门课题.电力系统的发展迫切需要推出一种图形标准来避免重复的劳动和不同厂商图形格式之间的不兼容. 文献中阐述了多比图形控件在电力系统软件领域的应用及其关键问题,并且指出多比图形控件可以提升基于 Web的电力系统软件图形化的特性,不过对于基于多比图形控件的图形系统如何构建以及如何有效的将多比图形控件应用到电力系统软件中在文中并没有深入探讨.本文将集

学习基于OpenGL的CAD程序的开发计划(一)

本人目前从事的工作面对的客户中很多来自高端制造业,他们对CAD/CAE/CAM软件的应用比较多.公司现有的软件产品主要是用于渲染展示及交互,但面对诸如CAD方面的应用(比如基于约束的装配.制造工艺的流程演示等),功能比较薄弱.本人计划在工作之余开始研究一下基于OpenGL的CAD程序开发的基础功能实现.由于目前工作直接使用的商业游戏引擎进行开发,对底层的OpenGL还不是特别熟悉,从产品发展的长远来看,结合CAD的功能应该是大势所趋,而目前利用一些三维CAD二次开发来实现虽然可以临时解决一些功能