科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件OpenGL下的场景层次化渲染

OpenGL下的场景层次化渲染

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文主要叙述在VC6下基于OpenGL的场景层次化渲染的实现方法。

作者:冯杰 来源:yesky 2007年10月21日

关键字: OpenGL 场景 渲染

  • 评论
  • 分享微博
  • 分享邮件
目前使用VC6.0+OpenGL图形库已经逐渐成为开发3D应用程序的主流,但是在使用OpenGL图形库中会涉及到很多2D或者3D坐标,正确理解这些坐标的含义是使用OpenGL开发应用程序的前提,另外对于一个复杂的3D场景如果使用程序的手段来进行有效的渲染也是至关重要的。本文主要探讨这两个方面的问题。

  1. 相关基础知识

  要渲染真实世界的3D物体,首先必须了解OpenGL里面的坐标系统。OpenGL是使用顶点(Vertex)来描述几何物体的,最开始几何物体处于世界坐标之下,然后所有的顶点都通过模型视图变换、投影变换以及视口变换来转换为屏幕坐标。通过这种流水线似的作业,3D场景就可以在屏幕上展现出来了。
世界坐标系统遵循右手定则,即X轴是从左至右,Y轴由下至上,Z轴是垂直于屏幕由里到外。这样在OpenGL里面使用的坐标值都是在这样的一个座标系统之下定位的,然后通过一系列的变换转换为人眼坐标,进而最后转换为屏幕坐标(2D坐标)。

  2. 场景的层次化渲染

  对于一个复杂的场景,如果才能有效的进行渲染呢?这里就借助一个示例来进行说明。
例子是这样的,需要在一个SDI窗口下绘制如下的一个2D的货车(实际上在进行场景层次化渲染这方面,2D渲染的思路与3D渲染思路是一样的)



  实现的思路首先应该是对这个货车分解几个独立的子实体:货车主体(前面那个大矩形)、货车主体车轮、拖车主体(后面的矩形)、拖车主体车轮。那么整个货车在运动的时候应该是以主货车为运动的主体,其他的子实体都对主货车做相对运动,这就好比是爸爸牵着儿子走路一样,整体上爸爸和儿子是一起往前走的,但是就局部来说,儿子可以绕爸爸做四周环绕运动。所以在利用OpenGL渲染比较复杂的3D物体时,首先要分清楚此3D物体的自由度的个数,然后分离出一个主体部分,其他部分只是对这个主体部分做相对运动即可。这样的思路在渲染复杂的机器人的时候也应用到了。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章