在服务器计算机上呈现三维对象
背景
桌面生产力软件应用程序允许用户创建文字处理文档、电子表格文档、演示文档以及其它种类的文档。这些文档通常包括文本、格式、图像以及其它类型的包括三维(“3-D”)对象的对象。例如,此类文档可包括如三维文本、三维表格、三维形状、三维图形以及三维图表等三维对象。用户向文字处理或电子表格文档添加三维对象以向文档添加视觉风格是相当普遍的。
除了文档的创建之外,典型桌面生产力应用程序还允许用户查看和编辑由其他用户使用相同应用程序或兼容应用程序创建的文档。然而,为查看由另一用户创建的文档,通常必须将用于创建该文档的合适的软件应用程序或兼容应用程序安装在要在其上查看该文档的计算机上。例如,如果用户接收了来自另一用户的文字处理文档并期望查看该文档,包括其中包含的所有图像、三维对象以及其它内容,则将用于创建该文档的文字处理应用程序的副本安装在用户的计算机上通常是必要的。
在许多情况下,如果用户没有将用于创建文档的应用程序的副本安装在他们的计算机上,则用户可能完全无法查看该文档。在其它情况下,用户可能必须定位、下载以及安装用于在他们的计算机上显示文档的兼容查看器应用程序以查看文档。然而,用户定位、安装并执行此类查看器应用程序可能是困难的。在又一些其它情况下,应用程序或查看器应用程序的兼容版本可能对用户希望在其上查看文档的设备的类型而言不可用。例如,用户可能希望在用于创建文档的应用程序或查看器应用程序的版本不存在的个人数字助理(“PDA”)或无线移动电话上查看文档。对具有查看文档以及包含在其中的所有图像、三维对象以及其它内容的需要,但不拥有用于创建文档的必要应用程序的用户而言,这可能是极端令人挫败的。
此处所做出的本发明正是对于这些和其它考虑事项而提出的。
概述
此处描述了用于在服务器计算机上呈现包含三维对象的文档的技术。具体而言,通过利用此处所提出的技术和概念,可在服务器计算机上呈现包含一个或多个三维对象的文档以供使用在客户计算机上执行的诸如万维网(“web”)浏览器应用程序等标准查看器应用程序进行显示。因为在服务器计算机上呈现文档(包括包含在其中的任何三维对象),所以将用于创建该文档的应用程序或该文档类型的指定查看器应用程序安装在客户计算机上是不必要的。
根据此处所提出的一个方面,客户计算机接收显示诸如文字处理文档、演示文档或电子表格文档等文档的请求。该请求可来自于例如响应于查看文档的用户请求。响应于此类请求,客户计算机确定用于创建该文档的应用程序是否可用于该客户计算机来显示该文档。如果用于创建文档的应用程序不可用以显示该文档,则客户计算机向服务器计算机传送呈现该文档的请求,包括呈现包含在该文档中的任何三维对象。
响应于接收到呈现文档的请求,服务器计算机解析文档以确定该文档是否包含任何三维对象。例如,服务器计算机可解析文档以确定任何三维表格、图表、图形、形状或文本是否被包含在文档中。如果文档包含三维对象,则服务器计算机呈现这些三维对象。通过呈现过程,将三维对象变换成二维图像。在一实施例中,以诸如可移植网络图形(“PNG”)格式等web标准图像格式来呈现图像。根据各实施例,相同或不同的服务器计算机可执行三维对象的呈现。以此方式,可将该呈现过程缩放到多个服务器计算机。
一旦呈现了三维对象,还将该文档的剩余部分呈现成web标准图像格式,包括将任何被呈现的三维对象合成到该文档中。随后响应于呈现该文档的原始请求将该文档的呈现版本返回到客户计算机。因为被呈现的文档是使用web标准图像格式的,所以可通过在许多类型的设备上普遍可用的诸如web浏览器应用程序等标准查看器应用程序将被呈现的文档显示在客户计算机上。文档的呈现版本以及包含在其中的任何被呈现的三维对象在由标准查看器应用程序显示时看上去与由创建该文档的应用程序显示时基本类似。根据各实施例,可一次呈现文档的单个页面,包括包含在其中的任何三维对象,而不是呈现整个文档。
应当理解,上述主题也可被实现为计算机控制的装置、计算机进程、计算系统或诸如计算机可读介质等制品。通过阅读以下详细描述和查阅相关联的附图,这些和各种其它特征将是显而易见的。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,本概述也不旨在用于限定所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本发明的任一部分中提及的任何或所有缺点的实现方式。
附图简述
图1是示出由此处所提出的各实施例提供的说明性操作环境和若干软件组件的各方面的网络图;
图2-4是示出在此处所提出的一实施例中提供的客户计算机、前端服务器计算机以及后端服务器计算机的各自的操作的各方面的流程图。
图5是示出用于能够实现本文所提出的各实施例的各方面的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。
详细描述
以下详细描述涉及用于在服务器计算机上呈现三维对象的技术。通过对此处所提出的技术和概念的使用,可在服务器计算机上呈现包含一个或多个三维对象的文档以供使用在客户计算机上执行的标准查看器应用程序进行显示。此过程消除了对将用于创建文档的应用程序、或用于文档类型的指定查看器应用程序安装在客户计算机上以查看文档的需要。
尽管此处所述的主题是在结合操作系统和应用程序在计算机系统上的执行而执行的程序模块的一般上下文中提出的,但本领域技术人员可以认识到,可结合其它类型的程序模块来执行其它实现方式。一般而言,程序模块包括执行特定任务或实现特定的抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。此外,本领域的技术人员可以理解,此处所述的主题可以使用其它计算机系统配置来实践,这些其它计算机系统配置包括手持式设备、多处理器系统、基于微处理器或可编程的消费电子产品、小型计算机、大型计算机等。
在以下详细描述中,参考了构成详细描述的一部分并作为说明示出了各具体实施例或示例的附图。现在参考附图(若干附图中相同的标号表示相同的元素),将描述用于在服务器计算机上呈现三维对象的计算系统和方法的各方面。
现在转到图1,将提供关于由此处所提出的各实施例提供的说明性操作环境和若干软件组件的细节。具体而言,图1示出用于在服务器计算机上呈现三维对象的系统100的各方面。系统100包括客户计算机104、一个或多个前端服务器计算机106A-106N、以及一个或多个后端服务器计算机108A-108N。如图1所示,客户计算机104、前端服务器计算机106A、以及后端服务器计算机108A通过诸如网络117等一个或多个局域网和广域网互连。应该理解,可利用比图1中示出的多得多的网络连接。
图1中示出的客户计算机104包括能够执行操作系统和一个或多个应用程序的标准台式或膝上型计算机系统。具体而言,根据各实施例,客户计算机104可用于执行文档创建应用程序112。文档创建应用程序112包括用于创建可能或可能不包括一个或多个诸如3-D对象116等三维对象的文档114的应用程序。
根据各实现方式,文档创建应用程序112包括用于创建文字处理文档、演示文档或电子表格文档的应用程序。应该理解,此处所述的实现方式可与文档创建应用程序一起使用以创建具有包含在其中的3-D对象的任何类型的文档。根据其它方面,3-D对象116包括三维表格、三维图表、三维图形、三维形状或三维文本对象。然而,应该理解,3-D对象116可包括任何类型的具有三维特性的对象。
如图1所示,客户计算机104还可用于执行客户机查看器应用程序112。根据一实现方式,客户机查看器应用程序110包括被配置成显示根据标准图像格式被格式化的图像的应用程序。例如,在一实现方式中,客户机查看器应用程序110包括能够显示PNG图像文件的应用程序。客户机查看器应用程序112还可被配置成显示其它类型的web标准图像格式。在一具体实现方式中,客户机查看器应用程序110包括能够显示以web标准图像格式被格式化的图像的web浏览器应用程序。然而,应该理解,可将此处所述的由客户机查看器应用程序110执行的功能集成到其它类型的能够显示web标准图像格式的程序中。
如以下将详细讨论的,客户计算机104可用于接收显示诸如文档114等文档的请求。响应于接收到此类请求,客户计算机104确定文档创建应用程序112是否可用于呈现并显示文档114。如果文档创建应用程序112不可用于显示文档114,则客户计算机104利用由前端服务器计算机106A和后端服务器计算机108A提供的功能来呈现文档114。例如,如果文档创建应用程序112未被安装在客户计算机104上或被安装了但是不起作用,则文档创建应用程序112可能是不可用的。
在客户计算机104接收到显示文档创建应用程序112对其不可用的文档114的请求时,客户计算机104将请求118A传送到前端服务器计算机106A。在图1中示出的实施例中,请求118A包括呈现请求120和文档114。然而,在其它实施例中,请求118A包括呈现请求120和对文档114的引用。在此实施例中,不将文档114与请求118A一起传送。相反,客户计算机103将文档114存储在可由前端服务器计算机106A和后端服务器计算机108A访问的联网存储位置上。以此方式,不需要将文档114与请求118A一起传送。
如果文档114包含任何诸如3-D对象116等3-D对象,则也将这些对象与请求118A一起传送。请求118A还可包括关于客户计算机104和由前端服务器计算机106A和后端服务器计算机108A用于呈现文档114的客户机查看器应用程序110的能力的信息。例如,客户计算机104可传送关于与其连接的显示设备的分辨率的信息。此信息可由前端服务器计算机106A和后端服务器计算机108A利用来确定应该呈现文档114的分辨率。
在前端服务器计算机106A接收到请求118A时,该前端服务器计算机106A确定文档114是否包含任何三维对象。如果三维对象被包含在文档114中,则前端服务器计算机106A向后端服务器计算机108A传送呈现该三维对象的请求118B。该请求118B包括要呈现的三维对象116。后端服务器计算机108A接收请求118B并启动3-D呈现过程121。
该3-D呈现过程121取得3-D对象116并将该3-D对象呈现成图像。根据各实施例,诸如PNG等标准图像格式可用于呈现3-D对象116。也可以利用其它类型的图像格式。在3-D呈现过程121完成了呈现3-D对象116时,将响应122返回到前端服务器计算机106A。响应122包括被呈现的3-D对象124。
在前端服务器计算机106A接收到响应122时,利用前端呈现过程119来呈现文档114的其它部分。这可包括例如呈现文档114中的其它内容并将被呈现的3-D对象124合成到被呈现的文档128中。如同3-D呈现过程121,前端呈现过程119将文档114呈现成诸如PNG等web标准图像格式。以此方式,可通过能够呈现web标准图像格式的任何标准查看器应用程序来显示来自前端呈现过程119的输出。
一旦前端呈现过程119完成,前端服务器计算机106A即向客户机查看器应用程序110传送响应126。响应126包括被呈现的文档128和任何被呈现的3-D对象124。一旦响应126由客户机查看器应用程序110接收,客户机查看器应用程序110即在客户计算机104的显示设备上显示被呈现的文档128。
应该理解,虽然上文参考图1所述的过程使得整个文档114由服务器计算机106A和108A呈现,但是其它实现方式可使得一次呈现文档114的一些子部分。例如,根据一实现方式,文档114的各个页面,包括包含在其中的任何3-D对象可由服务器计算机106A和108A呈现并返回给客户机查看器应用程序110。一次呈现文档114的一些页面减少了前端服务器计算机106A和后端服务器计算机108A的计算要求。
还应该理解,尽管结合单个前端服务器计算机106A和单个后端服务器计算机108A来描述参考图1所述的过程,但是也可利用多个计算系统。例如,可利用多个前端服务器计算机106A-106N来接收来自客户计算机104的请求118A。类似的,可利用多个后端服务器计算机108A-108N来并行地呈现3-D对象。根据其它实现方式,可通过在后端服务器计算机108A-108N中的每一个上利用诸如多个中央处理单元或多核中央处理单元等多个处理单元来获取可伸缩性。以此方式,可并行地执行许多3-D对象的呈现。在其它实现方式中,此处所提出的发生在多个计算系统上的处理可在单个计算系统上执行。
还应该理解,被呈现的文档118,包括包含在其中的任何被呈现的3-D对象124由前端服务器计算机106A和后端服务器计算机108A以完全视觉保真度来呈现。完全视觉保真度指的是前端服务器计算机106A和后端服务器计算机108A在不损失视觉质量的情况下呈现文档114以及包含在其中的任何三维对象116的能力。以此方式,被呈现的文档128以及包含在其中的任何被呈现的3-D对象124将如同文档114由文档创建应用程序112显示那样以基本上类似的方式向客户计算机104的用户表现。将在以下参考图2-5提供关于图1中示出的各计算系统和软件组件的其它细节。
现在参考图2-4,将提供关于此处所提出的用于在服务器计算机上呈现三维对象的各实施例的其它细节。具体而言,图2-4是示出在此处所提出的一实施例中的客户计算机104、前端服务器计算机106A以及后端服务器计算机108A的各自的操作的各方面的流程图。一起描述图2-4以示出客户计算机104、前端服务器计算机106A以及后端服务器计算机108A之间的交互。
应理解,此处所述的逻辑操作被实现为(1)一系列计算机实现的动作或运行于计算系统上的程序模块,和/或(2)计算系统内的互连的机器逻辑电路或电路模块。实现方式是取决于计算系统的性能和其它要求的选择的问题。因此,这里所描述的逻辑操作在不同情况下称为状态操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑以及它们的任何组合来实现。还应当理解,可以实现比各附图所示的并在此处描述的更多或更少操作。这些操作也可按与这里所描述的不同的次序来执行。
例程200在操作202开始,其中客户计算机104接收显示文档114的请求。此类请求可例如来自于响应于查看文档114的内容的用户请求。从操作202例程200继续至操作204,其中客户计算机104确定文档创建应用程序112是否可用于显示文档114。如果文档创建应用程序112是可用的,则例程200继续至操作206,其中客户计算机104使得文档创建应用程序112打开文档114并显示该文档。从操作206,例程200继续到操作214并在那里结束。
如果文档创建应用程序112是不可用的,则例程200从操作204分支到操作208。在操作208,客户计算机104向前端服务器计算机106A传送请求118。如上所述,请求118包括对前端服务器计算机106呈现文档114的请求并包括文档114以及包含在其中的任何三维对象116。
在例程300的操作302,前端服务器计算机106A接收请求118A。在操作304,响应于接收到此请求,前端服务器计算机106A解析文档114。一旦该解析完成,例程300即继续至操作306,其中前端服务器计算机106A确定是否有任何三维内容被包含在文档114中。如果没有三维内容被包含在文档114中,则例程300从操作306分支到以下所述的操作312。然而,如果文档114包含一个或多个3-D对象116,则例程300从操作306继续至操作308。在操作308,前端服务器计算机106A向后端服务器计算机108A传送请求118B。如上所述,请求118B包括对后端服务器计算机108A呈现3-D对象116的请求。
在例程400的操作402,后端服务器108A接收请求118B。例程400随后继续至操作404,其中执行3-D呈现过程121以将3-D对象116呈现成被呈现的3-D对象124。一旦完成了3-D呈现过程121,在操作406,将包括被呈现的3-D对象124的响应121返回到前端服务器计算机106A。从操作406,例程400继续到操作408并在那里结束。
在例程300的操作310,前端服务器计算机106A接收被呈现的3-D对象124。从操作310,例程300继续至操作312,其中文档114由前端呈现过程119呈现,包括将被呈现的3-D对象124合成到被呈现的文档128中。一旦前端呈现过程完全呈现了文档128,则例程300继续至操作314,其中将包括被呈现的文档128和被呈现的3-D对象124的响应126返回给客户计算机104。
在例程200的操作210,客户计算机104接收响应126。响应于接收到包括被呈现的文档128的响应126,例程200继续至操作212,其中客户机查看器应用程序110显示包括包含在其中的任何被呈现的3-D对象124的被呈现的文档128。从操作212,例程200继续到操作214并在那里结束。
应该理解,尽管例程200、300、400示出了呈现整个文档114的过程,但是可利用类似过程来一次呈现文档114的单个页面。还应该理解,尽管文档114的呈现被描述为由前端服务器计算机106A和后端服务器计算机108A执行,但是这些过程也可由单个服务器计算机执行。具体而言,可在单个服务器计算机上执行前端呈现过程119和3-D呈现过程121。还可利用其它类型的实现方式来最大化此处所述的各计算机的网络性能和处理器使用率。
图5示出了用于能够执行本文所描述的用于以上述方式在服务器计算机上呈现三维对象的软件组件的计算机500的说明性计算机体系结构。图5中示出的计算机体系结构示出常规台式、膝上型、或服务器计算机且可用于执行此处所呈现的被描述为在客户计算机104、前端服务器计算机106A-106N、或后端服务器计算机108A-108N上执行的软件组件的任何方面。
图5所示的计算机体系结构包括中央处理单元502(“CPU”)、包括随机存取存储器514(“RAM”)和只读存储器(“ROM”)516的系统存储器508、以及将存储器耦合至CPU 502的系统总线504。基本输入/输出系统被存储在ROM 516中,该系统包含帮助诸如在启动期间在计算机500中的元件之间传递信息的基本例程。计算机500还包括用于存储操作系统518、应用程序和其它程序模块的大容量存储设备510,这将在本文中更为详尽地描述。
大容量存储设备510通过连接至总线504的大容量存储控制器(未示出)连接到CPU 502。大容量存储设备510及其相关联的计算机可读介质为计算机500提供非易失性存储。尽管本文所包含的计算机可读介质的描述指的是大容量存储设备,如硬盘或CD-ROM驱动器,但本领域的技术人员应理解,计算机可读介质可以是可由计算机500访问的任何可用计算机存储介质。
作为示例而非限制,计算机可读介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机可读介质包括但不限于,RAM、ROM、EPROM、EEPROM、闪存或其它固态存储器技术、CD-ROM、数字多功能盘(“DVD”)、HD-DVD、蓝光(BLU-RAY)或其它光学存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机500访问的任何其它介质。
根据各实施例,计算机500可以使用通过诸如网络520等网络与远程计算机的逻辑连接在联网环境中操作。计算机500可以通过连接至总线504的网络接口单元506来连接到网络520。应当理解,网络接口单元506也可用于连接至其它类型的网络和远程计算机系统。计算机500还可以包括用于接收和处理来自多个其它设备的输入的输入/输出控制器512,这些设备包括键盘、鼠标或者电子指示笔(未在图5中示出)。类似地,输入/输出控制器可以提供至显示屏、打印机或其它类型的输出设备(也未在图5中示出)的输出。
如前简述的那样,多个程序模块和数据文件可以存储在计算机500的大容量存储设备510和RAM 514内,包括适于控制联网的台式计算机、膝上型计算机或服务器计算机的操作的操作系统518。大容量存储设备510和RAM 514还可以存储一个或多个程序模块。具体而言,大容量存储设备510和RAM 514可存储客户机查看器应用程序110、前端呈现过程119、以及3-D呈现过程121,其每一个都在上文参考图1-4详细描述。大容量存储设备510和RAM 514还可存储其它类型的程序模块。
基于上文,应该理解,此处提供了用于在服务器计算机上呈现三维对象的技术。尽管用对计算机结构特征、方法动作和计算机可读介质专用的语言描述了此处呈现的本主题,但可以理解,所附权利要求书中定义的本发明不必限于此处所述的具体特征、动作或介质。相反,具体特征、动作和介质是作为实现权利要求的示例形式公开的。
上述主题仅作为说明提供,并且不应被解释为限制。可对此处所述的主题作出各种修改和改变,而不必遵循所示和所述的示例实施例和应用,且不背离所附权利要求书中所述的本发明的真正精神和范围。