多屏同步三维3D显示技术研究技术报告_第1页
多屏同步三维3D显示技术研究技术报告_第2页
多屏同步三维3D显示技术研究技术报告_第3页
多屏同步三维3D显示技术研究技术报告_第4页
多屏同步三维3D显示技术研究技术报告_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多屏同时三维(3D)显示技术研究技术报告目录1 项目背景 错误!未定义书签。2 项目研究内容 12.1 3D显示数据模型的选型研究 12.2 适合实现多屏幕3D显示的软件开发平台和开发工具的选型 12.3 在单计算机上实现多屏幕3D控制的软件实现办法 12.4 多机多屏幕3D显示通信合同和多点交互控制方略设计 13 技术路线 23.1 设计原则 23.2 技术路线 33.2.1 3D显示数据模型的拟定 33.2.2 软件开发平台和开发工具的拟定 33.2.3 单机多显系统硬件实现办法 43.2.4 单机多显系统硬件检测实现办法 43.2.5 OpenGL显示实现办法 43.2.6 单机多显系统OpenGL多显示屏显示实现办法 53.2.7 OpenGL控制实现3D对象平移的办法 63.2.8 OpenGL控制实现3D旋转的办法 63.2.9 单机多显系统同时控制实现办法 63.2.10 单机多显系统鸟瞰导游实现办法 73.2.11 3DS文献转换实现办法 83.2.12 多机多显系统通信合同实现办法 103.2.13 多机多显系统同时控制实现办法 183.2.14 多机多显系统数据更新实现办法 244 系统环境 274.1 系统硬件环境 274.1.1 单机多显系统硬件环境 274.1.2 多机多显系统硬件环境 284.2 系统软件环境 285 系统功效设计 285.1 单计算机对多显示屏的同时控制功效 285.2 单机多显系统3D浏览和控制功效 295.2.1 任意方向旋转功效 295.2.2 平移功效 295.2.3 显示比例自动调节功效 295.2.4 放大和缩小功效 295.2.5 视角设立功效 305.2.6 背景颜色设立功效 305.2.7 绘制模式切换功效 305.2.8 鸟瞰导游功效 305.2.9 自动演示和测试功效 315.3 多机多显系统3D浏览和控制功效 315.3.1 多计算机信息显示功效 315.3.2 多计算机协同工作功效 315.3.3 任意方向旋转功效 325.3.4 平移功效 325.3.5 显示比例自动调节功效 325.3.6 放大和缩小功效 325.3.7 视角设立功效 335.3.8 背景颜色设立功效 335.3.9 绘制模式切换功效 335.3.10 其它计算机窗口显示和控制功效 335.3.11 3D数据自动同时功效 346 总结 错误!未定义书签。7 术语解释 348 参考资料 错误!未定义书签。项目研究内容3D显示数据模型的选型研究重要研究被显示对象的数据表达办法。3D模型选型方面,既要考虑到软件实现的容易性和可靠性,还要考虑显示解决的实时性。特别在网络环境下,3D数据模型的选择将直接影响到数据更新和同时显示的性能。适合实现多屏幕3D显示的软件开发平台和开发工具的选型本研究项目涉及单机和网络两种硬件平台。单机硬件平台中,重要研究多显示适配器的选型和控制办法,要考虑和所选用的软件运行平台及开发工具的兼容性;网络硬件平台则选用较普遍的运行TCP/IP合同的网络。软件技术研究方面,涉及操作系统的选择,软件开发平台和开发工具的选择。这些选择必须适合3D显示的编程和控制算法的实现。在单计算机上实现多屏幕3D控制的软件实现办法重要研究如何实现单计算机对多屏幕的控制办法,涉及硬件方案和软件控制办法。为了达成高层次3D多屏显示的目的,所选的硬件方案必须能够实现不同屏幕的不同控制。软件控制算法的研究要能够实现对多显示适配器的灵活控制,并能实现不同显示之间的协调解决。多机多屏幕3D显示通信合同和多点交互控制方略设计重要研究如何实现网络上的计算机间同时协调显示的控制方略和软件控制算法。本部分的研究涉及通信合同的设计和多点交互控制方略的设计。软件控制算法要在考虑到与所运行的网络平台兼容的基础上,更多地考虑软件的通用性、易用性和可移植性,应充足运用单机多屏显示软件的研究成果,避免重复研究。技术路线设计原则3D显示数据模型的选型设计原则所选用的3D显示数据模型必须含有普遍性和易操作性。普遍性是指能够代表多数3D软件所采用的模型,这样,所研制系统的合用范畴大,含有较高的应用价值;易操作性是指易于进行显示解决,且能够实现灵活的浏览操作。多屏幕3D显示的软件开发平台和开发工具的选型原则软件开发(运行)平台要选择兼容性好,功效和性能满足3D实时浏览需求,且含有较广泛的开发和应用软件的平台。开发工具的选择要和所选择的3D数据模型含有较好的共容性,既能方便地使用和操作3D数据模型,又能实现项目所需要的功效并达成项目预定的性能。单计算机实现多屏幕3D控制的硬件设计原则单计算机实现多屏幕3D控制的硬件选择要含有普遍性,尽量避免应用面小的专用设备和配件,除了达成项目功效和性能规定外,还必须预留一定的余量,方便应对不可预见的性能问题。所选的硬件还要考虑其兼容性、可扩展性和性价比,应当选用品有发展前景和更新换代可能性的系列通用硬件产品。单计算机实现多屏幕3D控制的软件设计原则单计算机多屏幕3D控制软件的设计应含有通用性,应避免对特定硬件含有依赖性的特殊软件开发和设计技术的使用。应避免底层软件的开发,尽量使用易于移植、易于扩展的高层软件设计技术。多机多屏幕3D显示通信合同设计原则通信合同的设计要满足项目对可靠性和实时性的规定。通信合同要基于成熟可靠的网络合同,所选用的网络合同必须确保数据通信能够可靠且实时地进行。合同数据本身应尽量短小灵活且含有较好的扩展性,短小灵活的合同利于进行快速传输,良好的扩展性利于进行系统功效的扩充和应对不可预见的性能问题。多机多屏幕3D显示多点交互控制方略设计原则多机多屏幕3D显示系统的特点是多计算机系统和多顾客操作,多计算机协同解决和和谐的顾客操作界面及良好的操作体验是系统设计的目的。要达成系统的设计目的,所设计的交互控制方略首先必须避免多计算机的控制冲突,另一方面是实现顾客的和谐操作界面和良好的操作体验。最后,所设计的控制方略还要含有较好的容错特性并实现系统的易用性和易维护性。技术路线3D显示数据模型的拟定本项目最后拟定的3D显示数据模型方案是以OpenGL模型为基础,3DS文献为数据输入格式的方案。OpenGL是三维图形技术的基础,许多专业的3D软件,如AutoCAD和3DMax等都是以OpenGL为基础的。OpenGL是现在较为完善的三维图形原则,它是一种与硬件无关的接口,独立于窗口系统、操作系统和硬件系统,能够应用于多个不同的硬件平台和多个网络环境。使用OpenGL能够对3D显示进行非常完全的控制,能够实现较高的显示性能。软件开发平台和开发工具的拟定本项目最后选用Windows操作系统作为本项目软件的开发和运行平台。由于本项目重要涉及图形图像显示,因此首先应选择含有图形界面的运行平台;同时又为了使本项目开发的应用软件运行在较通用的系统上,因此选择Windows操作系统。Windows系统下软件的最佳开发工具当属VC++开发工具,VC++内嵌了对OpenGL的支持,且其WinSock对TCP/IP也含有良好的支持,这使VC++不仅适合于单机多显系统的开发,也适合于网络版的多机多显3D同时系统的开发,因此本项目的开发环境选择的是基于Windows操作系统下的VC++开发环境。单机多显系统硬件实现办法本项研究的第一步是实现单台计算机在Windows98系统上对多个显示屏的显示控制。通过在一台计算机上插入两块完全同样的显示适配器,运用Windows98对多屏显示的支持,实现单台计算机对两个显示屏的控制,并能够通过VC编程,实现自编程序在不同显示屏上的显示控制,达成了自编应用程序能够在不同显示屏上显示不同内容的目的。本项研究的第二步是实现单台计算机在WindowsXP系统上对多个显示屏的显示控制。实现办法和Windows98类似,但必须选用较新的显示适配器才干实现。本项研究的第三步是实现自编应用程序在多个显示屏上实现3D显示的支持。通过对多个显示适配器的研究,最后拟定了PCI和AGP两块显示适配器共存的方案和两块完全相似的PCI-E显示适配器的方案,实现了在不同显示屏上同时、同时显示3D对象的硬件环境。单机多显系统硬件检测实现办法单机多显系统对多显示屏的控制和检测运用了Windows操作系统的虚拟桌面扩展机制。该机制将Windows的桌面定义为一种非常大的逻辑空间,与各显示适配器相连的显示屏都位于这个逻辑空间中的一种特定位置。通过指定主显示屏,并运用操作系统桌面扩展功效,对各显示屏的位置进行设立,将其它显示屏设立到以主显示屏为参考的特定空间。先用函数GetSystemMetrics()得到主窗口的参数,然后根据主窗口的参数和各显示区的相对位置,通过函数MonitorFromPoint()检测各显示屏对应显示区的活动状态,对于处在活动状态的显示区,再用函数GetMonitorInfo()得到对应的显示区参数,从而实现软件对多显示屏的自动检测功效。OpenGL显示实现办法OpenGL进行3D显示控制的办法是:(1)进行OpenGL的初始化解决,涉及建立所需的像素格式、得到指定设备环境的像素模式索引值并据此声明一种像素模式等。(2)通过wglCreateContext()函数用特定视窗关联的上下文设备环境创立一种OpenGL上下文设备环境。3D绘制由下面四个环节重复构成:(3)用wglMakeCurrent(Hdc)函数将特定窗口的设备环境设立为现在OpenGL环境。(4)执行OpenGL的绘制操作,该环节涉及下列子环节:a.调用glPushMatrix()保存现在变换矩阵。b.调用glLoadIdentity()将现在变换矩阵设立为单位矩阵。c.调用gluLookAt()定义视角变换。d.调用glMultMatrixf()设立现在变换矩阵。e.对于每一种要显示的3D对象数据,调用glBegin(ViewMode)和glEnd(),按指定模式进行3D绘制,并在这两个函数的调用之间绘制该对象的全部面片,其中涉及调用glNormal3f()设立每一种顶点的法线方向、根据顶点数据的性质设立纹理、颜色和材质,最后调用glVertex3f()设立该顶点。f.调用glPopMatrix()恢复保存的变换矩阵。(5)用SwapBuffers(wglGetCurrentDC())交换前后台显示缓冲区。(6)用wglMakeCurrent(NULL,NULL)释放OpenGL上下文设备环境。单机多显系统OpenGL多显示屏显示实现办法OpenGL支持多显示屏的办法以下:OpenGL的绘制是面对窗口的,在上述运用OpenGL进行3D绘制的环节2中,为了创立OpenGL的上下文设备环境,必须指定一种Windows对应的窗口,一旦为某个OpenGL设备环境指定了一种窗口,在该OpenGL设备上的绘制都将出现在所指定的窗口中。因此将Windows多显示屏技术和OpenGL显示技术结合是实现OpenGL对多显示屏支持的核心。具体做法是:将Windows应用程序的视窗作为第一种显示窗口(主显示屏),创立三个无模态对话框,并将其位置分别设立在扩展的三个子显示屏所在的区域。分别创立四个OpenGL上下文设备环境,并分别将他们的显示窗口指定为主显示屏和其它三个子显示屏。用wglMakeCurrent(Hdc)函数将现在OpenGL绘制设备指定为特定的显示屏并在所选定的OpenGL设备上进行对应显示屏的绘制,实现OpenGL在不同的显示屏上进行不同的绘制解决。OpenGL控制实现3D对象平移的办法在浏览方式中的平移方式状态下,将顾客对鼠标光标的拖动位移按比例转换为3D坐标的位置移动信息(Z坐标不变),在进行OpenGL显示解决时,通过调用glTranslatef(X,Y,0),变化现在绘制对象坐标系原点的X和Y坐标,就能够实现3D显示对象的平移功效。OpenGL控制实现3D旋转的办法控制实现3D对象旋转的办法以下:在读入3D数据时,计算出该数据对应3D对象的质心,并将其作为旋转中心。运用虚拟球的办法将顾客的鼠标二维移动操作转换为三维的旋转向量。运用四元数运算将上一步得到的鼠标旋转向量转换为三维旋转矩阵。在进行OpenGL显示解决前,先用上述旋转矩阵对3D数据进行变换,再进行显示,就能够得到旋转后的3D视图。单机多显系统同时控制实现办法运用OpenGL实现多个3D绘制对象同时显示的办法是:创立对应于不同显示屏的四个窗口,创立四个OpenGL设备并与上述四个窗口有关联,设立这四个OpenGL设备的显示数据为同一种3D对象,但显示视角各不相似。接受顾客的绘制操作命令,按照顾客操作命令的性质进行各OpenGL设备的数据变换计算,触发第i(i=1)个显示屏的显示更新。在第i个显示屏的显示更新解决中,选中该显示屏对应的OprnGL设备并在其上进行3D绘制。绘制完毕后,触发第i+1个显示屏的显示更新,直到全部的显示屏对应的显示更新解决完毕为止。单机多显系统鸟瞰导游实现办法鸟瞰导游窗口的设立,是为了在3D对象被放大浏览后,主窗口只能显示3D对象部分内容的状况下,为顾客批示出主窗口所显示的内容在整个3D对象中的具体位置。鸟瞰导游窗口中绘制的对象与主窗口中的为同一种3D对象,但鸟瞰导游窗口中绘制的对象始终都是完整的显示。当主窗口只显示3D对象的某个局部内容时,在鸟瞰导游窗口中用虚线框的方式标出主窗口所显示的部分内容的对应位置。鸟瞰导游窗口多个功效的实现办法以下:(1)鸟瞰导游窗口的基本绘制:首先在鸟瞰导游窗口中按照窗口尺寸设立OpenGL视景体参数,使现在显示的3D对象能够完整地在鸟瞰导游窗口中显示出来;主窗口3D对象的任何绘制更新,都可用SendMessage()函数向鸟瞰导游窗口发送绘制更新消息;鸟瞰导游窗口收到主窗口的绘制更新消息后,按主窗口的视角进行同一种3D对象的OpenGL显示,并按现在区域框的参数在鸟瞰导游窗口中绘制一种虚线的区域框。(2)主窗口放大和缩小解决:在主窗口的鼠标中键滚动消息响应函数中,计算出主窗口视景体视点的新位置,按新的OpenGL剪切窗口和3D对象显示尺寸的相对关系计算出鸟瞰导游窗口现在区域框的参数;调用鸟瞰导游窗口的Invalidate()函数,更新鸟瞰导游窗口的绘制。(3)主窗口平移解决:在主窗口的鼠标拖动消息响应函数中,计算出主窗口视景体视点的新位置,按新的OpenGL剪切窗口和3D对象显示尺寸的相对关系计算出鸟瞰导游窗口现在区域框的参数;调用鸟瞰导游窗口的Invalidate()函数,更新鸟瞰导游窗口的绘制。(4)鸟瞰导游窗口导游平移解决:在鸟瞰导游窗口的鼠标对现在区域框拖动消息响应函数中,计算出鸟瞰导游窗口现在区域框相对于其3D对象的位置移动,换算为主窗口视景体视的移动位置并更新主窗口视景体视的x和y坐标;调用主窗口的Invalidate()函数,更新主窗口的绘制。3DS文献转换实现办法3DS文献由数据块构成,数据块的种类非常多,作为3D模型数据,3DS文献中的许多数据是本系统并不需要的,因此本系统仅对3DS文献中的部分数据进行了读入和转换,其它不用的数据则跳过不读。本系统软件读入并转换的3DS文献数据有主块数据、版本数据、对象信息数据、材质数据和对象数据。(1)主块数据的读入解决主块数据的解决较简朴,主块是第一种3DS文献的块,读入后只对块ID进行有效性检查解决,如果该ID不是3DS文献的主块标记,则放弃对该文献的读入操作;如果是3DS文献的主块标记,则用递归调用的办法继续读入并转换主块中包含的其它数据块。(2)版本数据的读入解决版本块数据仅包含一种四字节长的整数版本值,读入后的版本号保存在一种临时的版本变量中,用以对版本号进行检查解决,如果版本号超出了本软件适应的版本,则提示一种可能出错的信息,然后继续读入其它数据块。(3)对象信息数据的读入解决对象信息块由一种四字节长的整数版本值和后续数据块构成,读入后的对象版本号被丢弃,然后从其后的数据块继续读入。(4)材质数据的读入解决每次读入一种新的材质数据块,就在3D模型数据的材质数据链表中添加一种新的材质数据,然后继续读入该材质数据块的后续数据块并根据后续数据块的类型进行不同的解决。一种材质数据块的后续数据块可能是材质名称块、材质颜色块、新的材质块和材质文献名块,不同材质块的解决办法以下:材质名称块的解决:材质名称块只包含特定长度的材质名称字符串,对该块的解决是读入块数据并保存在现在材质数据链表的材质名称变量中。材质颜色块的解决:材质颜色块包含块头和三字节的材质颜色,对该块的解决是读入块头,然后读入三字节的材质颜色并保存在现在材质数据链表的材质颜色变量中。新的材质块的解决:如果现在材质块的类型是一种材质信息块,则表达它是一种新的材质数据块,对该块的解决办法是递归调用材质数据块读入解决函数,读入并解决该材质块数据。材质文献名块的解决:材质文献名块仅由特定长度的材质文献名字符串构成,对该块的解决办法是读入材质文献名并保存在现在材质数据链表的材质文献名块变量中。除以上材质数据块类型外的其它材质数据块都被跳过并丢弃。(5)对象数据的读入解决每次读入一种新的对象数据块,就在3D模型数据的对象数据链表中添加一种新的对象数据,然后继续读入该对象数据块的后续数据块并根据后续数据块的类型进行不同的解决。一种对象数据块由该对象的名称和后续的对象数据块构成,对象数据块的解决首先读入该对象的名称字符串并保存在现在对象数据链表的对象名称变量中。后续的对象数据块可能是一种新对象数据块、顶点数据块、面片数据块、对象的材质名称数据块、对象的UV纹理坐标数据块。不同对象块的解决办法以下:新对象数据块的解决:如果现在对象块的类型是一种对象块,则表达它是一种新的对象数据块,对该块的解决办法是递归调用对象数据块读入解决函数,读入并解决该对象块数据。顶点数据块的解决:每一种顶点数据块由一种两字节的顶点个数和指定个数的顶点坐标(三个四字节浮点数)构成。顶点数据块的解决是先读入顶点个数,保存在现在对象数据的顶点个数变量中,然后为该对象的顶点存储区申请指定大小的空间,再读入全部的顶点数据并保存在新申请的空间中。由于OpenGL的坐标系和3DS文献的坐标系是不同的,3DS中模型的Z轴是指向上的,而OpenGL中模型的Z轴是垂直屏幕指向顾客的,因此需要将3DS文献数据全部顶点坐标的y和z对换,然后将得到的z坐标取反才干得到对的的OpenGL坐标。面片数据块的解决:每一种面片数据块由一种两字节的面片个数和指定个数的面片数据(四个两字节整数)构成,面片数据的前三个数据是构成该面片的顶点索引值,第四个数据是这些顶点的绘制次序码。面片数据块的解决是先读入面片个数,保存在现在对象数据的面片个数变量中,然后为该对象的面片存储区申请指定大小的空间,再依此读入每一种面片的三个顶点索引值并保存在新申请的空间中。普通状况下,对面片的第四个数据-顶点绘制次序码的解决是读入后丢弃不用。但对于某些不规范的3DS文献数据,还需要根据顶点绘制次序码对顶点索引值的次序进行调换,否则用OpenGL绘制出的等于面片可能会失真。对象材质名称数据块的解决:对象材质名称数据块由以0结尾的字符串和后续数据构成,对该块的解决办法是:读入对应的材质名称字符串,将它与已经读入并保存的全部材质数据中的材质名称进行比较,如果有匹配(相等)的材质名称,则将该对象的纹理标志变量置位,并将该对象的纹理标记设立为匹配材质的索引值,否则将该对象的纹理标志变量复位,并将该对象的纹理标记设立为-1。最后跳过对象材质名称字符串背面的全部数据。对象UV纹理坐标数据块的解决:对象UV纹理坐标数据块由一种两字节的纹理坐标个数和指定个数的纹理坐标数据(两个四字节浮点数)构成。对象UV纹理坐标数据块的解决是先读入纹理坐标个数,保存在现在对象纹理坐标个数变量中,然后为该对象的纹理坐标存储区申请指定大小的空间,再一次读入全部的纹理坐标数据并保存在新申请的空间中。多机多显系统通信合同实现办法系统通信合同解决办法在MFC应用程序中,文档类重要负责解决数据,而视图类用于显示数据。在本程序中,文档类CM3DDispDoc负责消息的接受和发送,以及套接字通信的初始化,视图类CM3DDispView解释和解决消息。CM3DDispDoc类发送和接受消息的过程以下:当顾客进行同时控制触发操作或者同时控制操作时,该计算机将向联网的计算机发送消息。发送消息的过程以下:(1)由于本软件在设计合同时采用了可变长度消息的构造,不同的操作封装的消息是不同的。在CM3DDispView类中系统根据顾客的操作封装完消息,然后调用CM3DDispDoc类的UpdateClients()函数。消息的发送放在CM3DDispDoc类中解决。(2)在UpdateClients()函数中,依次从CM3DDispDoc类保存的连接的socket链表m_connectionList中找到与其它计算机连接的CClientSocket对象后,调用CM3DDispDoc::SendMsg()函数发送消息。(3)SendMsg()函数发送消息的过程以下:调用该CClientSocket的SendMsg()函数,SendMsg()函数再调用CMsg类的序列化函数Serialize()完毕数据的发送。接受消息的过程以下。(1)建立完连接后,如果连接的计算机有消息发送过来,则框架代码会自动调用CClientSocket的OnReceive()函数(或者说CClientSocket的OnReceive事件被触发)。在OnReceive()函数中调用文档类CM3DDispDoc的组员函数ProcessPendingReceive(),在文档类中对消息进行接受和解决。(2)ProcessPendingReceive()的解决办法是,先定义一种局部变量CMsgmsg,再调用ReadMsg()函数接受发来的消息。每接受完一次信息,就对该信息进行解决,解决完后析构该msg,然后再判断该socket与否有新的读取数据消息。若有,再重新构造一种CMsgmsg,如此循环,直到缓冲区为空。本软件在设计合同时采用了可变长度消息的构造,因此,即使每次接受消息都用了同一种类CMsg的对象msg,但每次接受的消息的构造并不相似。为了避免两次接受的信息互相影响,一定要把msg定义成局部的,解决完该消息后即析构该msg。(3)ReadMsg()函数接受消息的过程以下:调用该CClientSocket的ReceiveMsg()函数,ReceiveMsg()函数再调用CMsg类的序列化函数Serialize()完毕数据的接受。(4)在ProcessPendingRead()函数中对ReadMsg()函数接受的消息进行解决的过程以下:先判断该消息与否涉及控制权请求消息,若有,则先进行状态转换解决(状态转换解决办法见3.2.13节)。再根据消息的ID为INIT_MSG、STATE_MSG、MOVE_MSG、FILE_MSG来分别进行对应的初始化解决、状态信息解决、3D模型运动解决、数据更新解决。系统通信合同的构成网络应用程序设计中,合同是必不可少的,越是大型的网络应用程序,合同就越复杂。通信的双方为了懂得对方所发送的消息的意义,就必须要商定好消息的格式以及发送的次序,这些也是合同的一种重要构成部分。在客户机/服务器模型中,根据不同的状况,合同能够是对称的,也能够是非对称的。在对称的合同中,每一方都有可能扮演主从角色;在非对称合同中,一方被不可变化地认为是主机,而另一方则是从机。一种对称合同的例子是Internet中用于终端仿真的Telnet,而非对称合同的例子是Internet中的FTP。无论具体的合同是对称的还是非对称的,当服务被提供时必然存在“客户机”和“服务器”。多机多屏3D显示系统的通信合同分无连接和有连接两种。当程序被启动时,由于不懂得网络中与否有其它计算机在运行本软件,必须用无连接的UDP广播报文的形式向网络中全部的计算机发送系统启动消息,任何已运行本软件的计算机在收到系统启动消息后都要与刚启动的计算机建立连接,并回复系统初始化消息。一旦建立连接,后续的通信便用有连接的合同完毕。在基于连接的通信合同中,采用可变长度消息命令,将系统多个解决和全部3D浏览控制命令封装在一种消息构造(一种可串行化的类CMsg)中,实现浏览控制命令的可靠传输,这样使合同含有较好的扩展性,易于增加新的合同或修改某些旧的合同。如果增加新消息合同,则只要把对应的消息项加入类中,并在通信的两端进行对应的解释解决即可。CMsg类中用组员变量m_wMsgID表达所发消息的ID,根据ID来拟定如何封装消息。消息的ID有下列四种类型:●INIT_MSG初始化消息●STATE_MSG状态消息●MOVE_MSG3D模型运动消息●FILE_MSG 数据更新消息系统启动合同当本系统的软件启动时,本地计算机首先会给局域网中全部的计算机发送广播消息。启动合同由七个字节构成,这些数据包含了该计算机运行本程序的启动时间和本软件的启动代码,启动时间涉及年、月、日、时、分和秒,启动代码为一种单字节的常数。局域网内运行本软件的其它计算机收到广播消息后,先通过启动代码判断与否为运行本软件的计算机发送的广播消息。若是,则与该计算机通过握手过程建立点对点的连接。两台计算机建立连接后,就能够进行面对连接的通信,首先要发送的就是系统初始化消息。系统初始化合同程序启动后,如果局域网上已有计算机运行本程序,则这些计算机会给本机发送初始化消息,消息的ID为INIT_MSG,即msg.m_wMsgID=INIT_MSG。初始化消息涉及该计算机的初始状态信息和3DS模型的参数,其由下列组员变量构成:WORDm_wPriority;//计算机启动的序号WORDm_wModelState;//显示的视角CStringm_str3DSName;//打开的3DS文献的文献名floatm_M00,……,m_M33;//一种4×4参数矩阵floatm_newM00,……,m_newM22;//一种3×3参数矩阵floatm_xwalk;//纵向距离floatm_ywalk;//横向距离floatm_zwalk;floatm_displayLength;//视景距离3D浏览控制合同.13D浏览控制合同概述本软件运行后有三种不同的状态,分别是:对等状态、主控状态和附属状态。当某台计算机上运行的软件处在这三种状态之一时,分别将该计算机称为对等机、主机和从机。在任一特定时刻,某台计算机只可能处在三种状态中的一种,且在任一特定时刻,只能有一台计算机是主机。为了描述方便,将顾客对计算机的控制操作分为同时控制触发操作、同时控制操作和非同时控制操作三类。同时控制触发操作:涉及装入3DS对象、开始对已装入的3D对象的旋转、平移、放缩和显示复位等。同时控制操作:涉及对已装入的3D对象的旋转、平移、放缩操作。非同时控制操作:涉及设立本计算机显示的背景颜色、变化本计算机的显示视角等。同时控制操作是各个计算机同时同时进行的解决。同时控制触发操作是顾客在某台处在对等状态的计算机上将要进行同时操作的操作,同时控制触发操作将有可能使该计算机由对等机变为主机;非同时操作则是某台计算机自己进行的操作。.23D浏览控制合同设计浏览控制合同由两部分构成:一是状态消息,其ID为STATE_MSG;二是3D模型运动消息,其ID为MOVE_MSG。(1)控制权请求消息当顾客进行同时控制触发操作时,将会发出控制权请求消息。由于全部的同时浏览操作都会产生该消息,故在设计合同时,将该消息作为全部消息都包含的一部分消息,其包含下列组员变量:BOOLm_bRequest;//请求获得控制权WORDm_wPriority;//计算机启动的序号WORDm_wYear,m_wMonth,m_wDay,m_wHour,m_wMinute,m_wSecond;//同时控制触发操作的时间(2)旋转操作消息旋转操作发送的消息ID为MOVE_MSG。当鼠标移动时,3D模型参数中的4×4的矩阵就会发生变化,故应将该矩阵发送出去,该消息由下列组员变量构成:BOOLm_bMove;//3D模型与否处在任意旋转状态floatm_M00,……,m_M33;//一种4×4参数矩阵(3)鼠标左键松开操作消息当松开鼠标左键时,3D模型参数中的3×3的矩阵就会发生变化,故应将该矩阵发送出去,该消息由下列组员变量构成:BOOLm_bLButtonUp;//左键松开floatm_newM00,……,m_newM22;//一种3×3参数矩阵(4)平移操作消息平移操作发送的消息ID为MOVE_MSG。平移操作变化的是3D模型参数中的横向距离和纵向距离,故消息包含下列组员变量:BOOLm_bSimpleMove;//3D模型处在平移状态floatm_xwalk;//纵向距离floatm_ywalk;//横向距离(5)放缩操作消息放缩操作发送的消息的ID为MOVE_MSG。放缩操作变化的是视景距离,消息包含下列组员变量:BOOLm_bMiddle;//3D模型处在放缩状态floatm_zwalk;floatm_displayLength;//视景距离(6)打开3DS文献操作消息打开3DS文献消息的ID为STATE_MSG,该消息只包含要打开的3DS文献的文献名,其组员变量为:CStringm_str3DSName;//打开的3DS文献的文献名(7)恢复初始状态操作消息恢复初始状态消息的ID为STATE_MSG,该消息只要告知各计算机恢复初始状态即可,各计算机收到消息后将3DS文献的参数恢复初始值。恢复初始状态消息的组员变量为:BOOLm_bInit;//恢复初始状态(8)控制权放弃操作消息控制权放弃消息的ID为STATE_MSG,该消息只包含一种布尔型变量:BOOLm_bGiveUp;//放弃控制权(9)程序退出消息程序退出消息的ID为STATE_MSG,该消息包含一种布尔型变量:BOOLm_bClose;//退出(10)显示视角变化消息显示视角变化消息的ID为STATE_MSG,该消息可能是顾客更改浏览视角引发的,也可能是计算机启动时自动调节的。该消息包含下列组员变量:BOOLm_bLittleWnd;//小窗口显示的视角变化WORDm_wPriority;//计算机启动的序号WORDm_wModelState;//显示的视角.33D数据更新合同数据更新消息的ID为FILE_MSG,即msg.m_wMsgID=FILE_MSG。数据更新消息包含下列组员变量:CStringm_str3DSName;//传输的3DS文献的文献名INTnFileMsgCode;//传输内容代号传输内容代号nFileMsgCode不同时,消息的构造也不相似。nFileMsgCode有下列六种可能取值。●REQUIRE_FILE_NAME 1●RE_REQUIRE_FILE_NAME 2●REQUIRE_FILE_DATA 3●REQUIRE_FILE_DATA_MORE4●RE_REQUIRE_FILE_DATA5●REQUIRE_FILE_END6计算机接受到打开3DS文献的消息后,如果本地没有该3DS文献且没有对应的临时文献(临时文献名为该3DS文献名加上.TMP扩展名),则该计算机(下列称为接受端)会给发来打开文献消息的计算机(下列称为发送端)回复获取文献消息,获取文献消息的传输内容代码nFileMsgCode=REQUIRE_FILE_NAME,此消息不再需要其它组员变量。如果本地没有该3DS文献但有对应的临时文献,则进行断点续传,给发送端回复继续请求发送数据消息,继续请求发送数据消息的传输内容代码nFileMsgCode=REQUIRE_FILE_DATA_MORE,此消息需要一种统计已接受的数据块个数的组员变量:LONGlCurrentPos;//已接受的数据块个数发送端接受到nFileMsgCode=REQUIRE_FILE_NAME的数据更新消息后,得到该3DS文献的长度,并给接受端发送获取文献回复消息。获取文献回复消息的内容代码nFileMsgCode=RE_REQUIRE_FILE_NAME。另外,该消息还增加了一种寄存文献长度的组员变量:LONGFileLength;//文献长度接受端接受到nFileMsgCode=RE_REQUIRE_FILE_NAME的数据更新消息后,保存该3DS文献的长度,并给该发送端发送请求数据发送消息。请求数据发送消息的内容代码nFileMsgCode=REQUIRE_FILE_DATA。由于数据传输是分块传输的,每块大小为1024字节,故此消息还涉及一种统计已接受的数据块个数的组员变量:LONGlCurrentPos;//已接受的数据块个数发送端接受到nFileMsgCode=REQUIRE_FILE_DATA的数据更新消息后,第一次给接受端传输3DS文献数据,传输数据所用的消息为发送数据消息。发送数据消息的内容代码nFileMsgCode=RE_REQUIRE_FILE_DATA。此消息还涉及下列组员变量:LONGlCurrentPos;//已发送的数据块个数INTnFileEndFlag;//数据更新结束标志BYTEFileBuff[1024];//寄存3DS文献块的数组接受端接受到nFileMsgCode=RE_REQUIRE_FILE_DATA的数据更新消息后,保存已经收到的3DS文献数据,然后根据数据更新结束标志nFileEndFlag来决定发送的数据更新消息的内容代码。如果数据更新结束,则打开该3DS文献,并发送文献接受完毕消息,文献接受完毕消息的内容代码nFileMsgCode=REQUIRE_FILE_END,此时数据更新消息不再需要其它组员变量。如果数据更新未结束,则给发送端回复继续请求发送数据消息。继续请求发送数据消息的内容代码nFileMsgCode=REQUIRE_FILE_DATA_MORE,此消息需要一种统计已接受的数据块个数的组员变量:LONGlCurrentPos;//已接受的数据块个数发送端接受到nFileMsgCode=REQUIRE_FILE_END的数据更新消息后,给接受端发送3D模型运动消息,消息的ID为MOVE_MSG。数据更新结束。发送端接受到nFileMsgCode=REQUIRE_FILE_DATA_MORE的数据更新消息后,继续给接受端传输3DS文献数据。传输数据所用的消息为发送数据消息。多机多显系统同时控制实现办法系统运行状态设立程序运行后有三种不同的状态,分别是:对等状态、主控状态和附属状态。当某台计算机上运行的软件处在这三种状态之一时,分别将该计算机称为对等机、主机和从机。在任一特定时刻,某台计算机只可能处在三种状态中的一种,且在任一特定时刻,只能有一台计算机是主机。网络上运行本软件的计算机由其唯一的IP地址互相辨别,且每台计算机都有不同的优先级,该优先级是软件运行时根据局域网内运行该软件的计算机的数目自动拟定的,每台计算机的优先级也是唯一的。软件运行后,不同运行状态的进入和操作以下:对等状态:程序启动后,如果网上运行本程序的计算机都处在对等状态,则计算机将处在对等状态。处在对等状态的计算机能够响应本机顾客的同时控制触发操作进入主控状态,成为主机,或响应其它计算机的控制权请求消息而进入附属状态,成为从机。主控状态:在对等状态下,如果某台计算机的顾客先于其它计算机的顾客进行了同时控制触发操作,则该计算机将进入主控状态,同时向其它计算机发送控制请求消息。处在主控状态的计算机按顾客操作进行同时控制解决,并将对应的控制发送给处在附属状态的其它计算机,从机按照接受到的同时控制命令,进行相似的操作。如果处在主控状态的计算机在一定时间内没有再接受到顾客的同时控制触发操作,则将进入对等状态,同时将向其它处在附属状态的计算机发送控制权放弃消息,收到该消息的其它计算机也将进入对等状态。附属状态:在软件启动时,如果网上已有主机,或在对等状态下,收到其它计算机的控制请求消息,则该计算机将进入附属状态。处在附属状态的计算机接受主机的同时控制命令,并按该命令进行对应控制解决,从机将不接受本机顾客的同时控制触发操作,只接受本机顾客的非同时控制操作。处在附属状态的计算机收到主机控制权放弃信息后进入对等状态。系统状态转换办法对等状态软件启动时,如果局域网上运行本软件的计算机都处在对等状态,则本计算机也将处在对等状态。在对等状态下,如果顾客在计算机上进行下述同时控制触发操作,则该计算机将成为主机。同时控制触发操作涉及下列系统消息:●鼠标左键按下消息●鼠标右键按下消息●鼠标中键滑动消息●装入3DS文献的菜单消息计算机成为主机后,给局域网内运行本软件的其它计算机发送控制权请求消息。控制权请求消息的内容涉及本机响应同时控制触发操作的时间以及本机的优先级。其它计算机收到控制权请求消息后即由对等状态变成从机,并保存收到控制权请求消息的时间和主机的优先级。对等状态对多个消息的解决办法和状态转换:●收到本机顾客的同时控制触发操作。解决:本机进入主控状态;向其它计算机发送控制权请求消息。●收到其它计算机的控制权请求消息。解决:收到单个计算机的控制权请求消息时,本机进入附属状态,保存主机控制权请求消息的时间与主机的优先级;同时收到多个计算机的控制权请求消息时,对这些控制权请求消息的同时控制时间和优先级参数进行冲突判断,拟定主机,保存主机控制权请求消息的时间与主机的优先级;●收到其它计算机的程序启动消息。解决:给该计算机发送控制权请求消息,本机保持对等状态。●收到其它计算机的退出消息。解决:断开与该计算机的连接,本机保持对等状态。主控状态一台计算机成为主机后,顾客就能够在该计算机上进行同时控制操作。在进行同时控制操作的同时,主机通过网络将控制信息发送给各从机。各从机响应同时控制消息,并按消息进行对应的同时控制解决,从而实现同时浏览功效。顾客停止同时控制操作时,主机将启动一种状态转换定时器开始定时。主机启动状态转换定时器的系统消息是:●旋转浏览过程中:鼠标左键松开消息●平移浏览过程中:鼠标左键松开消息●放缩浏览过程中:鼠标中键停止滑动消息●显示复位时:鼠标右键松开消息●装入3DS文献过程中:成功打开并读入3DS文献后如果状态转换时间(普通为0.5秒)到,主机将退出主控状态,进入对等状态,并给各从机发送控制权放弃信息。各从机收到控制权放弃消息后,将保存的主机控制权请求消息的时间与主机的优先级丢弃。如果在状态转换定时时间内,顾客再次进行同时控制触发操作,则主机将状态转换定时器复位,进行对应的同时控制解决,并将控制信息发送给各从机。主机继续保持在主控状态。主控状态对多个消息的解决办法和状态转换:●收到本机顾客的同时控制触发操作和同时控制操作。解决:进行对应的同时控制解决,向各从机发送同时控制消息、复位状态转换定时器。●状态转换定时器时间到。解决:向各从机发送控制权放弃信息,退出主控状态,进入对等状态。●收到其它计算机的控制权请求消息。解决:将控制权请求消息的同时控制时间和优先级参数与本主机的对应参数进行冲突判断,拟定新的主机并进行对应的冲突解决(冲突解决办法及解决冲突后本机的状态转换见后续内容)。●收到其它计算机的程序启动消息。解决:给该计算机发送控制权请求消息,本机保持主控状态。●收到其它计算机的退出消息。解决:断开与该计算机的连接,本机保持主控状态。附属状态某计算机启动本软件时,网络上运行本软件的其它计算机都会给他发送初始化消息,如果网上已有主机,则本机将成为从机。另外,本机还根据收到的初始化消息拟定其优先级和显示3D模型的视角。一台处在对等状态的计算机收到控制权请求消息后,也进入附属状态,成为从机。从机响应主机发出的同时控制命令,控制本机进行与主机相似的同时控制解决。从机不会响应本机顾客的同时控制触发操作。当从机收到主机的控制权放弃消息时,将保存的主机控制权请求时间和主机优先级丢弃,然后进入对等状态。从机能够响应本机顾客的非同时控制操作,并进行对应的解决。●收到本机顾客的同时控制触发操作和同时控制操作。解决:不解决,保持在附属状态。●收到其它计算机的控制权请求消息。解决:将控制权请求消息的同时控制时间和优先级参数与现在主机的对应参数进行冲突判断,决定新的主机并进行对应的解决(冲突解决办法见●收到其它计算机的控制权放弃消息。解决:丢弃现在主机控制权请求消息的时间与主机的优先级,进入对等状态。●收到其它计算机的程序启动消息。解决:给该计算机发送控制权请求消息,本机保持附属状态。●收到其它计算机的退出消息。解决:断开与该计算机的连接,本机保持附属状态。冲突检测与解决办法(1)与状态转换有关的消息不同运行状态下与状态转换有关的多个消息以下:●多个状态下的本地同时控制触发操作消息,涉及鼠标左键按下消息、鼠标右键按下消息、鼠标中键滑动消息和装入3DS文献的菜单消息。该消息使处在对等状态的计算机成为主机。●多个状态下通过网络接受的其它计算机的控制权请求消息。该消息使处在对等状态的计算机成为从机。●主控状态下状态转换定时器消息。状态转换定时器的时间到后,计算机将由主控状态进入对等状态。●附属状态下通过网络接受的主机发出的控制权放弃消息。该消息使计算机由从机变成对等状态。(2)冲突来源本软件交互控制设计的目的是:在对等状态下,先进行同时控制的计算机获得控制权,成为主机;其它的计算机则成为从机并按主机的控制进行同时控制解决。在对等状态下,可能出现两台或两台以上的计算机同时进行本地同时控制触发操作,此时将出现冲突。按照软件设计的规定,出现冲突时,应当按照某种规则,仅使一台计算机成为主机。可能产生的冲突涉及下列两种状况:●在对等状态下,几个顾客在同一时刻开始同时控制触发操作,则这几台计算机将同时成为主机并向其它计算机发送控制权请求消息。这种状况下,无法根据控制权请求消息的先后次序拟定哪台计算机成为主机。●由于网络传输质量等引发的传输时间延迟,可能某一台先进行同时控制触发操作的计算机A的控制权请求消息达成另一台计算机B的时间比计算机B开始同时操作的时间晚,则这两台计算机都会成为主机并向其它计算机发送控制权请求消息。状态转换解决的规则:●在软件启动时,为每台计算机设立一种优先级,在发生第一种冲突时,优先级最高的计算机将获得控制权,成为主机,其它计算机就成为从机。优先级的拟定办法是:先运行本软件的计算机,含有高的优先级;同时运行本软件的计算机,IP地址大的计算机含有高的优先级。●每台计算机在对等状态下收到本机顾客的同时控制触发操作时,统计该时刻的时间,并在发送给其它计算机的控制权请求消息中包含该时间。某台处在对等状态的计算机接受到多个控制权请求消息时,或某台主机收到其它计算机的控制权请求消息时,通过比较各控制权请求消息的时间,拟定成为主机的计算机。(3)冲突检测与解决办法冲突的检测运行本软件的计算机所构成的网络是一种简朴的对等网络,网络中的计算机含有同等的网络权限。产生冲突时,网络中的每台计算机都将收到冲突的消息,并都将按统一的准则来解决该冲突。主机对冲突的解决:本地计算机之因此成为主机,是由于它先响应了本地顾客的同时控制触发消息。产生冲突的消息是来自其它计算机的控制权请求消息。对冲突的解决是在响应当控制权请求消息时比较两台计算机触发同时控制的时间,如果时间相似,再比较两台计算机的优先级,具体的比较算法以下:记计算机响应本地同时控制消息的时间为T1,记接受到的控制权请求消息的时间(即发送该控制权请求消息的计算机响应本地同时控制触发操作的时间)为T2。当T1<T2时,认为本地计算机触发同时控制的时间早,本地计算机应当成为这次控制的主机。解决办法是放弃控制权请求消息,本地计算机仍然是主机。当T1>T2时,认为发送该控制权请求消息的远程计算机响应同时控制的时间早,远程计算机应当成为这次控制的主机。解决办法是本地计算机的状态由主机变成从机,并保存远程计算机亦即新主机的信息。当T1=T2时,认为本地计算机响应同时控制触发操作的时间与发送该控制权请求消息的远程计算机响应同时控制触发操作的时间相似,此时,比较两台计算机的优先级。如果本地计算机的优先级高,则本地计算机应当成为这次控制的主机,解决办法是放弃该控制权请求消息,本地计算机仍然是主机;如果远程计算机的优先级高,则远程计算机应当成为这次控制的主机,解决办法是本地计算机的状态由主机变成从机,并保存远程计算机亦即新主机的信息。从机对冲突的解决:本地计算机之因此成为从机,是由于他先响应了网络上某台计算机发送的控制权请求消息。产生冲突的消息来源只有一种状况:网络上另一台计算机发送的控制权请求消息。解决冲突的办法是按照前节相似的原理比较现在主机和控制权请求消息的主机响应同时控制触发操作的时间和他们的优先级,拟定新的主机。若比较的成果是现在主机还是主机,则解决的办法是本地计算机仍为现在主机的从机,放弃收到的控制权请求信息。若比较的成果是发出控制权请求消息的主机应当成为主机,则解决的办法是本地计算机成为该主机的从机,并用该主机的信息替代现在主机的信息。对等机对冲突的解决:处在对等状态的计算机收到冲突的消息只有一种状况:同时收到网络上一台以上的计算机同时发送的控制权请求消息。解决冲突的办法是按照前节相似的原理比较这些控制权请求消息响应同时控制触发操作的时间和发送消息计算机的优先级,拟定新的主机。多机多显系统数据更新实现办法数据更新合同解决概述多机多显系统的计算机接受到3DS文献消息后,如果本地指定数据文献夹中没有指定的3DS文献,则给发出3DS文献消息的计算机发送获取文献消息;发送端接受到获取文献消息后,得到指定3DS文献的长度消息并发送给接受端计算机;接受端计算机判断本地与否已有临时文献,如果没有则创立临时文献并发送第一块文献数据接受消息,如果有临时文献,则发送临时文献的下一块文献数据接受消息。当发送端计算机收到文献数据接受块消息后,则将3DS文献的指定块读入并发送给接受端计算机;接受端计算机接受并保存文献数据,再发出接受下一块文献数据消息,直到接受端计算机接受到最后一块文献数据,此时则向发送端计算机发送文献传输结束消息,同时将临时文献改名为3DS文献。发送端计算机收到文献传输结束消息后,向接受端计算机发送3D模型运动更新消息,接受端计算机按运动消息设立并显示3D模型,数据更新过程结束。数据更新合同解决办法计算机在收到文献传输消息后,根据文献传输消息代码分别进行获取文献消息解决、获取文献回复消息解决、请求发送数据消息解决、发送数据消息解决、继续请求发送数据消息解决和文献接受完毕消息解决。各解决的具体办法以下:(1)获取文献消息解决本解决是3DS文献发送方计算机进行的解决。当消息的ID为FILE_MSG且传输内容代码nFileMsgCode=REQUIRE_FILE_NAME时,发送3DS文献数据的计算机便执行获取文献消息解决。该解决重要是得到指定3DS文献的长度,并打开指定的3DS文献为后续的文献数据传输解决做准备。(2)获取文献回复消息解决本解决为3DS文献接受方计算机进行的解决。当消息的ID为FILE_MSG且传输内容代码nFileMsgCode=RE_REQUIRE_FILE_NAME时,接受3DS文献的计算机将执行获取文献回复消息解决。该解决首先保存要传输3DS文献的长度,用以进行文献传输结束的判断,接下来进行断点续传解决:检查本地文献夹中与否存在与要传输的3DS文献同名的临时文献,如果没有临时文献或临时文献的长度不是数据块的整倍数,则创立新的临时文献,并发送从第一块3DS文献数据开始传输的消息;如果本地文献夹中已有与要传输的3DS文献同名的临时文献且临时文献的长度是数据块的整倍数,则发送从临时文献的下一块3DS文献数据开始传输的消息。(3)请求发送数据消息解决本解决为3DS文献发送方计算机进行的解决。当消息的ID为FILE_MSG且传输内容代码nFileMsgCode=REQUIRE_FILE_DATA时,发送3DS文献的计算机进行请求发送数据消息的解决。该解决读取指定的3DS文献数据块并构成发送数据消息,发送给文献接受方。如果文献全部读完,还要在消息中设立文献读取完毕标志。(4)请求发送数据消息解决本解决为3DS文献接受方计算机进行的解决。当消息的ID为FILE_MSG且传输内容代码nFileMsgCode=RE_REQUIRE_FILE_DATA时,接受方计算机便进行发送数据消息解决。该解决在接受第一块3DS文献数据时将指定的3DS临时文献打开,将所接受的3DS文献数据块保存到临时文献中,如果接受到的文献数据中的文献传输结束标志置位,则向发送3DS文献的计算机发送文献接受完毕消息,否则向发送3DS文献的计算机发送获取下一块文献数据的消息。(5)继续请求发送数据消息解决本解决为3DS文献发送方计算机进行的解决。当消息的ID为FILE_MSG且传输内容代码nFileMsgCode=REQUIRE_FILE_DATA_MORE时,发送3DS文献的计算机便进行继续请求发送数据消息解决。该解决读取指定的3DS文献数据块并构成发送数据消息,发送给文献接受方。如果文献全部读完,还要在消息中设立文献读取完毕标志。(6)文献接受完毕消息解决本解决为3DS文献发送方计算机进行的解决。当消息的ID为FILE_MSG且传输内容代码nFileMsgCode=REQUIRE_FILE_END时,发送3DS文献的计算机便进行文献接受完毕消息解决。该解决将关闭已经打开的3DS文献,然后向3DS文献的接受方计算机发送3DS模型运动消息。

系统环境系统硬件环境单机多显系统硬件环境本项目的单机多显系统硬件环境为一台高性能PC计算机,该计算机能够有下列两种配备:配备1:主板上应当最少有一种AGP显示适配器插槽,一种PCI插槽,这两个插槽上分别插一块AGP显示适配器和一块PCI显示适配器,这两块显示适配器必须是同一种型号,且使用同一组芯片集,每一块显示适配器含有两个独立的显示接口,每一种显示接口能够接一种显示屏。配备2:主板上应当最少有一两个PCI-E插槽,这两个插槽上分别插一块PCI-E显示适配器,这两块显示适配器必须是同一种型号,且使用同一组芯片集,每一块显示适配器含有两个独立的显示接口,每一种显示接口能够接一种显示屏。上述计算机所配的显示适配器必须含有OpenGL硬件加速功效,以满足系统对3D显示速度的规定。如此配备的计算机,能够外接四个独立的显示屏。本项目单机多显系统的样机配备为:主机:CPU:Intel酷睿2Q6600主板:华硕P5KPremium/WiFi-AP内存:DDR2-8004硬盘:320G显示适配器:XFX讯景8800GTS(T80G-GHD)显示屏:三星931C19英寸普屏多机多显系统硬件环境本项目的多机多显系统硬件环境为若干台高性能PC计算机,计算机上的显示适配器必须含有OpenGL硬件加速功效,这些计算机通过以太网连接在一起。本项目多机多显系统的样机配备为:主机:CPU:Intel酷睿2E6320主板:微星P35Neo2-FR内存:DDR2-6672G硬盘:250G显示适配器:XFX讯景8600GTS(T84G-UDD完美版)显示屏:三星931C19英寸普屏系统软件环境本项目的单机多显系统和多机多显系统的软件环境为WindowsXP或Windows操作系统。两种系统都要对显示适配器进行配备,应当将其硬件加速功效调节到最大值。另外,单机多显系统还要对显示桌面进行扩展配备,首先允许将桌面扩展到主屏外的另外三个显示屏,然后将它们进行排列,排列的方式是:主屏在最左边,其它三个显示屏依次排列在主屏的右方。系统功效设计单计算机对多显示屏的同时控制功效本项目单机多显系统规定所研制的软件能够在给定的硬件环境下控制四个不同的显示屏并同时显示同一种3D对象不同视角的3D透视图。其软件设计必须实现以下功效:一台计算机对多个显示屏的控制功效:通过桌面扩展,将四个显示屏对应的显示区域有序地排列在一起,程序能够按照预定的位置检测这些显示屏的存在并获取各个显示屏的显示信息。不同显示屏有效信息显示功效:系统能够将检测到的各显示屏的状态显示在程序的状态栏上。浏览的同时显示功效:顾客操作鼠标在主显示视图上进行多个浏览控制,这些控制必须同时同时在其它三个显示屏上按各自的视角设立,进行对应的显示变换。单机多显系统3D浏览和控制功效任意方向旋转功效在程序设立为非平移模式下,顾客在主视图上,按下鼠标左键,然后拖动鼠标光标,所显示的3D对象便能够按顾客操作的方向以3D对象的质心为中心进行旋转。平移功效在程序设立为平移模式下,顾客在主视图上,按下鼠标左键,然后拖动鼠标光标,所显示的3D对象便能够按顾客操作的方向进行平行移动。显示比例自动调节功效不同的3D对象数据含有不同的尺寸单位,如果按照固定的比例显示,会出现某些对象太大或某些对象太小的状况。程序应当含有显示比例的自动调节功效。在系统读入3D数据时,就对数据进行归一化解决,并调节数据的中心坐标和视景尺寸,以实现任何3D数据在装入后能以最清晰的比例全部显示在屏幕上。放大和缩小功效为了能够使顾客观察3D对象不同位置的细节,程序应当含有局部放大和整体缩小功效,这样,顾客能够通过平移、旋转和放大操作,观察到3D对象任一位置的细节。对3D对象过分的放大会使观察点进入对象内部,造成顾客感觉显示错误;相反,过分的缩小会使显示对象消失。因此,显示的放大和缩小功效必须有视点位置的限制,以避免过分的放大和缩小给顾客造成系统失效的错觉。视角设立功效单机多显系统的特点是同一种3D对象的多视角显示,为了不引发浏览错觉,除主屏显示外,另外三个屏幕的显示视角是相对固定的,仅主屏的视角能够按需要进行设立。视角的设立功效能够将主显示屏的视角设立为正视、后视、俯视、仰望、左视和右视六种视角模式。背景颜色设立功效不同的3D显示对象含有不同的颜色,因此需要不同的背景颜色以更加好地体现3D对象的显示效果。背景颜色的设立能够将3D显示的背景显示颜色设立为任何一种颜色,以实现同时显示对象的最佳显示效果。绘制模式切换功效OpenGL支持面和线两种三维显示方式,面显示方式以3D对象的面片为显示单元,含有多个三维效果解决,能够较好地表达显示对象的三维特性。线显示方式则仅显示3D对象面片的边界限,不含有光照和阴影解决等功效,但能够较好地体现3D对象的构造和构成特性。程序应当能够允许顾客以两种不同的模式显示3D对象,因此必须含有两种显示模式的切换设立功效。鸟瞰导游功效当顾客对显示的3D对象进行放大操作时,屏幕上只能显示3D对象的某个局部视图,此时进行的平移或旋转操作会使显示画面发生激烈的变化,给顾客造成迷失方向的感觉。鸟瞰导游功效是在主显示屏幕上显示一种小的窗口,该窗口始终显示主视图完整3D对象的画面,并在小窗口中标明现在主视图的显示区域(视景区),以提示顾客现在的观察的视角和局部所在位置,起到浏览导游的功效。另外,通过在小窗口中拖动视景区,还能够起到调节主显示屏中所显示的3D对象位置的功效。自动演示和测试功效自动演示功效能够起到软件使用办法快速入门的作用。该功效能够自动地模拟顾客进行重要浏览功效操作的效果显示,不仅能够让初学者在较短的时间内理解和学习软件的使用,还能够让观察者在较短的时间内理解系统的功效。由于本系统软件涉及3D对象的显示,需要计算机含有较高的计算能力和显示性能。为了能够比较不同计算机在完毕本系统解决功效时性能上的优劣,本系统专门设计了自动测试功效,该功效能够自动计算现在运行软件的计算机完毕特定显示解决所用的时间,方便使用者比较不同计算机用本系统软件进行3D对象显示时的性能。多机多显系统3D浏览和控制功效多计算机信息显示功效多机多显3D同时显示系统由多台通过以太网连接的计算机构成。每台计算机上除了显示本地3D对象指定视角的三维视图外,还

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论