APP下载

基于Direct 3D三维图形的几何信息演示系统设计与实现

2022-05-11王永强

山东商业职业技术学院学报 2022年2期
关键词:控件顶点图形

王永强

(南京工程学院,江苏 南京 211167)

Direct3D是DirectX的重要组成模块。它是现代程序设计中最重要的三维绘图编程数据接口之一,由微软公司于Microsoft Windows操作系统上开发而来。其不仅作为一种最基本的设计单元受到国内外众多三维图形软件厂商以及显卡商的一致认可,而且通过三角形图元以及线图元等,为网络游戏设计以及专业绘图软件运行提供了重要的绘图编程技术接口。在此背景下,本文主要基于Direct3D视角,为数据模型中用以绘制基本图元顶点数据信息以及图元相关拓扑结构信息演示,设计一套集信息提取、信息交互和信息展示为一体的系统,以便科学获取Direct3D流水管线中的交互信息,从而直观呈现在用户窗口界面,提高用户体验度以及交互性。

1.系统设计原理及模块

Direct视角下,3D三维图形几何信息演示必须具有良好的信息交互性与良好的用户体验度。为了实现图元信息交互,同时使该几何信息演示系统能够支持多模快操作,通过三维图形几何信息提取以及信息演示和信息交互三个不同设计过程,使信息系统中顶点信息以及图元信息对应关系能够进行科学提取以及高亮显示,同时实现3D图形几何模块旋转及缩放和平移等,使其为Direct3D程序开发人员设计、调试和优化运维提供辅助参考。结合这一设计思想,本文主要基于Direct视角,将3D三维图形几何信息演示系统分为几何信息提取模块及几何信息演示模块和几何信息交互模块。[1]

2.系统信息提取模块设计

Direct视角下,3D三维图形几何信息提取模块设计分为两种情形:一种是在获知应用程序源代码前提下,几何信息的提取设计;另外一种是在无法获知应用程序源代码前提下,几何信息的提取设计。

2.1应用程序源代码几何信息的提取

在能够获知应用程序源代码基础上,主要通过如图1所示的Direct3D流水管线,对3D三维图形几何信息演示系统中的顶点声明数据以及定点缓冲数据和索引缓冲数据及信息图元数据等几何信息进行提取。[2]

图1 Direct视角下3D三维图形渲染流水管线流程图

Direct视角下3D三维图形渲染流水管线中,顶点声明数据包括纹理坐标以及位置和颜色及法向量等,其主要用来系统描述Direct3D中每个顶点数据的顶点缓冲流索引属性以及顶点缓冲流中偏移量的属性和数据格式,同时也可对Direct3D中,每个顶点数据的数据索引类型及属性使用类型进行描述。而Direct视角下,绘制3D三维图形全部的顶点缓冲数据主要存放于Direct3D顶点缓冲数据存储区。通过在数据索引缓冲过程中,按照存储顶点缓冲数据的顺序连通索引,即可有效防止绘制三维模型的所有顶点缓冲数据重复存放于Direct3D顶点数据存储区。[3]除此之外,Direct3D视角下,三维图形几何演示系统运行中的相关图元信息数据,主要以三角形以及点和线的形式,被完整存储于Direct3D中专门用于存放图元数据的位置。

2.2无应用程序源代码几何信息的提取

以上分析主要针对获知应用程序源代码这种情况下的几何信息提取设计进行了分析。在系统设计过程中,若无法获知应用程序源代码,本文设想基于Direct视角下,采用Direct3D驱动层,通过安装相关运行组件以及核心态图形子系统和显示驱动,以此将Direct3D相关运行组件和Direct3D虚拟驱动层及Direct3D用户态驱动层连接在一起,以此科学实现对三维图形几何信息演示系统中,顶点声明信息以及顶点缓冲信息、索引缓冲信息等进行拦截和提取。具体驱动流程如图2所示。[4]

图2 Direct视角下3D三维图形几何信息提取驱动流程

在上述驱动过程中,主要模型分为用户态与核心态,由此构成了基本的信息提取驱动层。基于Direct视角下,对3D三维图形几何信息演示系统中的顶点声明信息、顶点缓冲信息及索引缓冲信息和图元数据等全部API信息的调取,都需要通过应用程序,进入由微软公司在Microsoft Windows操作系统上所开发的Direct3D相关运行组件,然后将Application Program-minginterface等信息提取并译为DDI信息,然后经过由不同显卡硬件提供商所提供的Direct3D用户台驱动层,以此对经过调取的DDI信息进行指令翻译,并进行硬件加速。[5]在此过程中,由于Direct视角下,3D三维图形几何信息演示系统内部设有虚拟驱动,因此,其能够对信息演示系统中,经相关运行组件传输的DDI信息进行有效拦截,然后按照系统操作运行指令,对虚拟驱动层拦截的DDI调用几何信息进行筛选和记录,将记录和筛选后的调动发送至信息系统中的核心态显示驱动层执行系统指令,以此负责完成整个系统运过程中顶点声明信息、顶点缓冲信息以及索引缓冲信息和图元数据信息的提取。

3.系统信息演示模块设计

Direct视角下,3D三维图形几何信息演示模块是在上述信息提取基础上实现的。结合前文所述信息系统交互设计需求,本文拟设计的3D三维图形几何信息演示系统主要信息演示阶段包括几何信息的高亮显示以及几何信息模型的旋转和3D信息模型的平移及缩放等,以此实现良好的用户交互。

3.1几何信息高亮显示、旋转、平移及缩放等交互模块设计

首先,几何信息的高亮显示以及几何信息模型的旋转和3D信息模型的平移及缩放等交互功能属于Direct视角下3D三维图形渲染流水管线中的基础功能。主要复杂顶点处理通过对几何信息的顶点坐标进行模型空间转化,以此将其转化到所要展示信息的空间屏幕中。在实际坐标转化以及旋转和平移等交互功能实现过程中,该信息系统主要基于模型空间以及世界空间和观察空间及投影空间、屏幕空间等,实现世界变换及观察变换和投影变换以及视区变换等。在此交互过程中,模型与世界空间坐标中的相关信息转换需通过世界变换来完成;世界与观察空间之间的数据转换需通过对观察点的方向、位置重设实现观察变换;三维对象在观察空间内,通过投影变换将其向传统的二维平面进行投影,最终通过一系列空间投影转换,由系统的视区转换功能,通过对视区左上角的高度、宽度以及角度和亮度等进行设置,以此实现对象在屏幕空间以及投影空间的相互转换。具体几何阶段Direct3D标准的图形显示流程如图3所示。[6]

图3 Direct3D标准的图形显示流程

3.2图元拓扑结构信息展示模块设计

通过上述空间转换投影之后,为了能够科学辅助计算机软件及三维图形绘制程序开发人员进行程序调试和运维,通过几何信息展示设计,将系统三维模块中的相关信息,以图形化的方式实时显示在用户窗口内。其中,采用普通的窗口类以及CListCtrl控件,分别针对图元数据的有关拓扑结构信息及系统顶点数据和索引数据进行展示。其显示的技术原理,是利用空间坐标转换思想,将图元拓扑结构信息的的顶点数转化到用户信息显示窗口的屏幕中,然后在此基础上,再利用wireframe的填充技术功能,使图元拓扑结构几何模型信息最终以线条方式进行显示。

3.3索引数据模块、顶点数据展示模块设计

CListCtrl控件是指LCS-OWNERDATA样式的虚拟列表控件。因此,在对相关信息进行展示设计时,本文拟采用 CListCtrl 控件实现系统索引数据及顶点数据展示。在系统信息列表中,每一列分别代表顶点声明中的一个属性,然后采用 CListCtrl控件,使每一列数据按照其具体的属性,在用户列表窗口中进行显示。但是,在实际信息演示过程中,经常会遇到多个不同的顶点。[7]因此,为了提高顶点数据显示的响应速度,本文通过虚拟CListCtrl列表控件技术,对列表项信息进行合理优化,使虚拟 CListCtrl列表控件所有者对相关列表信息进行管理。在信息管控和展示过程中,列表框架和虚拟CListCtrl列表控件通信通过LVN-GETDISPINFO完成,请求项信息由列表框架发送,然后经虚拟 CListCtrl列表控件对该请求项信息进行响应后,将其提供给列表框架使用。经过测试调试,基于虚拟 CListCtrl列表控件技术,实现顶点数据和索引数据显示,使Direct视角下3D三维图形几何信息演示系统的顶点数据和索引数据显示响应速度大大提高,同时也有效避免了在顶点数据个数较多情况下,顶点数据显示响应速度不及时等问题。

3.4系统信息交互模块设计

交互性是Direct视角下3D三维图形几何信息演示系统设计的核心。为了提高用户的体验性,使其能够对 3D三维图形几何信息演示有更加直观和形象的了解,本信息系统采用强大的交互控制功能,使系统通过响应键盘和鼠标消息为用户拾取、显示图元顶点信息、模型旋转、平移以及缩放奠定重要的技术基础。因此,在Direct视角下,3D三维图形几何信息演示系统的坐标变换,主要基于DXUT程序框架的Model Viewer-Camera类,其内置消息响应机制支持用户更加便捷地对键盘和鼠标展开指令,使图元、顶点信息一一拾取、显示。在此过程中,也可为用户展开模型旋转、平移及缩放等提供重要的技术基础,以此确保三维图形几何信息能够以图形化的方式,实时显示在用户窗口内,实现良好的用户交互。

当DXUT程序框架的Model Viewer-Camera类收到用户键盘以及鼠标的操作指令时,系统会自动结合相关信息参数指令,对新的世界变换矩阵参数进行计算,以此将运行参数发送到Direct视角下3D三维图形渲染流水管线,以此实现图元信息和顶点信息对应关系的拾取和高亮显示及几何模型进行旋转、缩放和平移等不同的信息演示效果。

在几何信息演示过程中,会有很多实时性的交互操作。比如,空间投影变换以及位置平移和缩放等,而要更好地达到预期的交互操作效果,在交互设计中,必须确定用户鼠标的具体交互操作指令。因此,Direct视角下3D模型和2D图形几何信息提取主要差异就在于物体横、纵、竖坐标x、y 、z。3D模型判断鼠标屏幕坐标(x,y)的位置,需使投影到屏幕中的物体经多次平移以及缩放和旋转等,故对3D三维图形几何信息交互展示较为困难。

基于此,通过Direct3D提供了三种函数,以此判断三维图形几何信息的交互,而本几何信息系统的信息拾取操作及展示和交互,主要针对顶点声明、顶点缓冲、索引缓冲、图元拓扑结构数据等。如果在旋转、平移等交互变换中,一一判断鼠标屏幕坐标(x,y)的区域,会导致不同三维图元拓扑结构信息可能相互存在重叠关系。因此,在信息选取时,可能会将所有重叠信息全部选中。故本文基于拾取操作理论,改进算法,科学确定用户鼠标屏幕坐标,通过缩放、平移、旋转获得投影点,然后在视点与投影点引一条射入场景光线,以此判断图元拓扑结构信息之间的相互重叠情况。交互设计优化主要基于算法对规则模型进行相交重叠测试计算分析。本文在交互优化设计过程中,通过对上述拾取改进算法进行优化测试,实践结果表明此种方法速度快、操作运行便捷,然后科学对相交物体同用户鼠标点之间的有效距离进行计算分析,从而结合距离点,判别哪个物体被选中。如果鼠标点与某个相交物体的距离最近,则可以判断该物体为被用户选中的物体。[8]

如图4拾取射线的空间变换投影过程所示,在计算机三维图形几何信息交互演示中,3D图形要经过几何、取景、投影和视区变换等四个不同的空间变换流程,才能在用户屏幕中进行全面显。因此,在交互设计中,重点就在于通过一系列的反变换,得到相关坐标值,使其在世界坐标中显示出。拾取射线是一条从视点 o(0,0,0)出发的射线。因此,在设计时只需得到该拾取射线的反向向量,即可确定拾取射线于观察空间内的具体位置。若p’为拾取射线和截头体近平面之间的交点坐标,则经空间变换之后的用户点击屏幕坐标(x,y)的投影点,就是拾取射线和截头体近平面之间的交点坐标p’坐标,此时拾取射线的反向向量v=p’-o(0,0,0)=(px,py,1)。

图4 基于三维空间拾取算法的3D三维图形几何信息交互设计

4.系统功能实现

Direct视角下3D三维图形几何信息演示系统设计实现,主要基于DXUT 框架,其主要建立在Direct3D API 之上的系列函数封装。本几何信息演示系统三维图形几何信息提取、信息演示及信息交互,都需要通过在框架DXUT上开发,并调用DXUT框架中的主函数,就可更加便捷地提取流水管线中的3D三维图形几何信息,最终以图形化方式在用户窗口内进行实时交互展示,如图5所示为DXUT框架的主函数:

图5 DXUT框架的主函数

从上述DXUT框架主函数WinMain中的调用可以看到,DXUT框架首先设定DXUTSet Callback Device Create(d)、Rese(t)函数、Los(t)函数以及Destroye(d)函数、FrameRende(r)函数、Frame Mov(e)函数、DXUTInit()、Create Window()函数、Device()函数和Main Loop()函数等一系列回调函数。当用户触发设备重置及帧渲染等某些事件时,就会向该几何信息演示系统中的相关应用程序提供回调函数,从TInit起,框架DXUT中的相关信息被系统程序调用并通过API 进行指令初始化、创建窗口和设备及循环主消息,直至运行结束退出程序。因此,采用模块化的思想进行设计,从而使系统应用程序可以通过调用以下回调函数,执行相关指令(见图6)。

图6 回调函数一般调用顺序

图7是Direct视角下3D三维图形几何信息教学天平演示系统运行过程中的屏幕截图。图中由图元拓扑信息和顶点数据显示区这两大主要的图形信息显示区构成,该Direct3D天平实验教学信息演示系统可直观将三维模型中的复杂几何信息展示在图元拓扑信息和顶点数据显示区,以此为Direct视角下3D三维图形几何信息演示系统开发设计和调试提供了重要的技术基础。在实际设计演示和交互过程中,场景在Direct3D三维图形提取以及演示和交互过程中非常关键。所以,图7中的天空盒展示了一种Direct视角下3D三维图形几何信息演示的良好渲染场景,不仅实现了快捷化操作,而且通过三维直观模型使Direct3D天平实验教学信息图形展示的视觉美感大大提升,以此在虚拟框架之下为用户交互提供了一种多样化的视角。

图7 Direct视角下3D三维图形几何信息教学天平演示系统运行图

结束语

综上所述,本文研究的背景是基于Direct视角下,对3D三维图形几何信息演示系统进行设计,主要从设计与实现两方面对本信息展示系统实现过程进行了优化分析。通过信息展示系统设计原理介绍,针对三维图形几何信息提取、信息演示及信息交互等三个不同阶段的设计重点进行了阐述,最终基于DXUT框架的主函数,采用模块化思想进行调试优化,使系统通过响应键盘和鼠标消息为用户展开多种操作提供了极大的便利。在此技术条件之下,用户可以实现图元和顶点信息的拾取、交互显示及3D三维图形空间旋转、空间缩放和空间平移等,由此为驱动开发人员错误分析及系统运行调试提供了一种辅助参考,同时使3D图形几何信息以图形化的方式,实时显示在用户窗口,实现了良好的交互。但是,本系统设计主要基于Direct视角,采用DXUT虚拟列表框架支持用户对3D三维图形进行一系列空间旋转、空间缩放和空间平移等,设计过程可能存在不足,需在今后实践研究中继续完善和改进。

猜你喜欢

控件顶点图形
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
基于.net的用户定义验证控件的应用分析
关于.net控件数组的探讨
分图形
找图形
图形变变变
图形配对
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
数学问答