分布式冲突和咬合的制作方法

文档序号:12802889阅读:195来源:国知局
分布式冲突和咬合的制作方法与工艺

本发明涉及计算机程序和系统的领域,并且更具体地涉及用于设计建模对象的3d组装的方法、系统和程序。



背景技术:

在计算机辅助设计(cad)、计算机辅助工程(cae)、计算机辅助制造(cam)、虚拟世界、线上视频游戏的上下文中以及更一般地在3d在线应用的上下文中,三维(3d)环境(也被称为3d场景)及其内容,描述局部或完整3d虚拟环境的多种资产,的显示仍然是一种挑战。该3d场景包括3d模型,其中每一个3d模型是一种资产并且具有包括多边形网格、样条曲面、构造实体几何等等的通常表示。材料和纹理,以及3d模型的动画、光线、场景图,同样可以是3d场景的资产。持有该资产的计算机被称为内容服务器。从特定视点(也被称为虚拟相机)观看的这一3d场景的渲染图像可以被显示在第二计算机上。这一远程渲染过程典型地用于云游戏、虚拟地球、虚拟世界。在其上执行这一远程渲染的该第二计算机被称为客户端。

3d在线应用包括被称为3d渲染引擎的软件组件,以便通过考虑3d投影和多个光照效果(阴影、反射等)来生成从特定视点观看的3d场景的一个或多个图片。为了达成其目标,这样的3d在线应用必须在给定时刻将3d场景的信息从服务器传输至客户端。

基本上存在两种场景用于执行3d场景的远程渲染。第一种场景在于直接将3d内容从服务器发送至客户端并且这一个客户端执行渲染步骤。这将被称为几何流式传送(geometrystreaming)。这一方法通常描述虚拟世界如何工作。第二种场景包括执行该渲染步骤并将结果(静态图像或视频流)发送至客户端的服务器。这将被称为像素流式传送(pixelstreaming)。这一方法通常描述远程渲染和云游戏如何工作。

几何流式传送可以使用很多策略来传输3d场景的内容。一种策略的示例是细节等级概念:针对每一个资产,根据可见性计算推断不妨碍最终渲染的整体质量的最小质量等级。如果客户端缓存中的资产版本没有达到要求的质量等级,则服务器发送细化(通常是在要求的版本和客户端缓存中的版本之间的差别)。在这样的策略中涉及的技术的示例是递进网格、地形位移映射、基于体素的点云、细节的层次等级。

在像素流式传送的情况下,传输的数据是通常使用标准压缩方案(用于图像的jpeg/jpeg2000以及用于视频的h.264)进行压缩的图片或视频。存在某些变形以将计算分布在多台计算机上。在3d计算机图形学中,它是指用于将3d场景投影至虚拟相机的位置的2d矩形。视口是屏幕中用于显示要示出的整幅图像的一部分的区域。该应用可以对视口进行切分并且将渲染每一部分(较小帧)的责任分配至多台计算机。在另一变形中,该应用能够对3d场景进行切分并将渲染每一部分(较小的资产集合)的责任分配至多台计算机。

几何流式传送和像素流式传送不同地处理3d在线应用遇到的问题。它们具有如现在所解释的它们自身的缺点和它们自身的限制。

几何流式传送和像素流式传送随着越来越多的客户端而进行不同的调整。像素流式传送非常不利,因为要在服务器侧上进行大部分计算(包括渲染)。因而,要求的服务器的数量随着客户端数量快速增长。由于每个客户端很少共享相同的视点,因此难于找到能够从一个客户端至另一个客户端被重复使用的计算结果。几何流式传送由于在服务器侧上要求更少的计算而调整得更好。然而,通过计算机网络发送几何结构要消耗网络的带宽并通常在客户端计算机上渲染的3d场景上涉及迟延-对于应用的较少反应。

几何流式传送和像素流式传送涉及客户端硬件需求。如上文所提到的,像素流式传送在客户端侧上仅具有少量计算开销,而几何流式传送在客户端侧上要求某些3d显示能力。虽然大多数光照设备现在受益于3d显示的硬件加速,但它们的能力可能是相对受限的,这可能导致不太真实的图片或对于应用的较少反应。

几何流式传送和像素流式传送两者都具有明显的带宽消耗并要求网络可靠性。很多有效的率失真算法可以由像素流式传送使用以确保带宽的公平消耗。然而,对视频进行流式传送与其他应用相比较通常是相当昂贵的。如果可用带宽突然下降,则发送的图像质量可能被相应降低。在网络中断的情况下,客户端将不能够改变它的视点或者与3d场景交互。如前面所介绍的,几何流式传送更可能经历带宽使用的峰值,导致带宽饱和以及网络错误。必须在该应用的设计上(细节等级或lod的使用)以及在3d场景的设计上(场景图的不同区域中的信息量必须被平衡)做出额外的努力以减轻这一效果。如果可用带宽突然下降,带宽饱和将出现得更多,常常导致在客户端视野中该场景的某些部分丢失或恶化。在网络中断的情况下,该客户端仍然能够改变它的视点并且与已经被发送的该场景的元素交互。

像素流式传送不允许对显示于客户端上的3d建模对象/在显示于客户端上的3d建模对象之间执行诸如碰撞检测、冲突的可视化提示的显示、将对象彼此间咬合或者模拟刚体接触的操作。实际上,客户端并不具有3d建模对象的3d内容并且仅渲染由服务器计算的表示。几何流式传送允许客户端执行这样的操作;然而,客户端的计算资源受限并且它们已经被用于渲染3d场景。接触和碰撞检测算法被良好地开发:例如在视频游戏中,模拟固体动力学的需求目前是常见的并且通过被称为“物理引擎”的组件实现。这一组件需要执行包括碰撞检测的数个任务。

在这一上下文中,仍然存在对于在连接至服务器的客户端上执行3d场景渲染的改进方法的需要。优选地,该远程渲染允许对3d场景的3d建模对象/在3d场景的3d建模对象之间执行操作。



技术实现要素:

因此提供了一种用于设计建模对象的3d组装的计算机实现的方法。该方法包括:

-通过将第二3d建模对象与第一3d建模对象的至少一个光栅图像合并而在第二计算机上渲染建模对象的3d组装,该至少一个光栅图像已经从第一计算机流至第二计算机;

-从第二计算机向第一计算机发送与该第二3d建模对象相关的第一数据以用于在第一和第二3d建模对象之间的接触计算;以及

-在第一计算机上计算第一和第二3d建模对象之间的接触。

该方法可能包括下面的一个或多个:

-从第一计算机向第二计算机发送第二数据以根据该接触计算再次渲染建模对象的3d组装;

-第一计算机向第二计算机发送与在计算步骤中被确定与第二对象接触的第一3d建模相关的第二数据;

-与第一3d建模对象相关的第二数据包括第一对象的几何结构;

-与第一3d建模对象相关的第二数据包括第一对象简化的几何结构;

-与第一3d建模对象相关的第二数据包括第一对象简化的几何结构并且第一对象的简化的几何结构与第一对象的几何结构之间的差异小于第二计算机的一个像素的宽度;

-与第一3d建模对象相关的第二数据包括第一3d建模对象的两个或多个深度图;

-在第二计算机上计算第二数据和第二3d建模对象之间的可能接触;

-接触是碰撞或咬合。

-根据接触计算的结果移动第二对象。

进一步提供了包括执行上述方法的指令的计算机程序。

进一步提供了其上记录有上述计算机程序的计算机可读存储介质。

进一步提供了一种包括耦合至存储器和图形用户界面的处理电路的系统,该存储器其上记录有上述计算机程序。

附图说明

现在将借助非限制性示例并参考附图来描述本发明的实施例,其中:

-图1示出了该方法的示例的流程图;

-图2示出了精细碰撞检测的实施例;

-图3示出了粗糙碰撞检测的实施例;

-图4示出了用于渲染建模对象的3d组装的示例的流程图;

-图5示出了计算光照效果的示例的流程图;

-图6阐明了图4的示例;

-图7阐明了图5的示例;

-图8示出了通过通信网络互连的客户端和服务器的示例;

-图9示出了在客户端修改3d场景上的视点时在该客户端和服务器之间的交互的示例;

-图10示出了图8的服务器或客户端的示例。

具体实施方式

参照图1的流程图,提出了用于设计建模对象的3d组装的计算机实现的方法,例如,建模对象的3d组装的内容被存储在一个或多个服务器上并被远程地渲染到至少一个计算机客户端。该方法包括通过将第二3d建模对象与第一3d建模对象的至少一个光栅图像合并而在第二计算机(也被称为客户端)上渲染建模对象的3d组装,该至少一个光栅图像已经被从第一计算机(也被称为服务器)流式传送至第二计算机。该方法还包括从第二计算机向第一计算机发送与第二3d建模对象相关的第一数据以用于在第一3d建模对象和第二3d建模对象之间的接触计算。该方法包括在第一计算机上计算在第一3d建模对象和第二3d建模对象之间的接触。

这样的方法改进了存储在客户端的远程服务器上的具有形成3d场景的某些资产的该3d场景在客户端上的远程显示,例如该服务器和客户端通过计算机网络互连,该计算机网络可以是但不局限于局域网(lan)、城域网(man)、广域网(wan)、诸如以太网等等的互连网络的集合。

注意到,本发明的方法依赖于将3d场景划分为两个部分:一部分将使用像素流式传送进行传输而另一部分将使用几何流式传送进行传输。如何做出这一划分(在哪些将作为视频进行流式传送以及哪些将作为几何结构进行流式传送之间)由应用自行决定,以便取决于其需求而充分利用每一方法。因此,本方法在客户端和服务器之间带来平衡的载荷。由于几何流式传送更多地依赖于客户端而像素流式传送更多地依赖于服务器,本方法在中间找到了其位置,这更加有效。如果在应用的设计中的约束允许将某些资产(例如,3d建模对象、材料、纹理、3d模型的动画、光照、场景图等等)从作为像素流式传送的部分移动至作为几何结构流式传送的部分并且反之亦然,则该应用将能够动态地平衡客户端和服务器之间的载荷,以使该应用适应于状况(适应于多种客户端硬件能力或变化的网络条件)。此外,本发明通过使用像素流式传送来发送场景的选择部分而具有对该选择部分进行保护的能力。这在协同工作的上下文中是有利的。举例来说,用于协同创作的应用,其中一方面客户端接收作为几何结构接收的该场景的某些部分的完整知识:他能够交互、编辑以及将这些资产发送回服务器。另一方面,客户端将不具有通过像素流式传送接收的部分的完整知识。这允许确保对由像素流式传送发送的原始资产的保护,因为它们从来没有被直接传输。举例来说,用户仅能够看到3d建模产品的像素视图并且没有意识到形成所述产品的各部分;形成各部分的组装的部分因此被保护免于用户的任意修改,而且该组装的知识同样被局限于形成视图的给定像素集合。这有利地提供了知识产权保护。

该方法进一步允许在客户端侧上的接触检测同时仍受益于上文讨论的改进的负载平衡和带宽消耗。碰撞检测的计算消耗被第一计算机和第二计算机共享:每个计算机接收由另一计算机已知的3d内容集合的简化表示并在将精炼信息发送到将执行另一阶段的另一计算机之前执行接触检测算法的单个阶段。而且,由机器(客户端或服务器)发送的消息仅包含其自身的3d内容集合的简单表示。由于它们回复给另一个,每一条消息可能包含更精炼的信息,但是更少的数据(因为每个机器每次执行碰撞检测算法的一个阶段,以丢弃没有与相对的集合碰撞的内容)。在下面的讨论中这些优点和进一步的优点将更加清晰。

该方法是计算机实现的。这意味着该方法的步骤(或者基本上所有步骤)由至少一个计算机或任意类似的系统执行。因而,该方法的步骤可能是完全自动地或者半自动地由计算机执行。在示例中,该方法的至少某些步骤的触发可以通过用户-计算机交互来执行。所要求的用户-计算机交互的等级可以取决于自动预知的等级并且与实现用户愿望的需要相均衡。在示例中,这一等级可以是用户定义的和/或预定义的。

举例来说,用户可以选择被渲染的3d场景上的新的视点,并且结果,根据该新的视点来触发对第一3d建模对象的至少一个新的光栅图像的计算,并且将该第一3d建模对象的至少一个新的光栅图像从第一计算机流式传送到第二计算机。

该方法的计算机实现的典型示例是使用适于这一目的的系统来执行该方法。该系统可以包括耦合至存储器和图形用户界面(gui)的处理器,该存储器其上记录有包括用于执行该方法的指令的计算机程序。该存储器还可以存储数据库。该存储器是适于这种存储的任意硬件,可能包括多个物理上不同的部件(例如,一个用于程序,并且可能一个用于数据库)。

“数据库”是指被组织用于搜索和检索的任意数据(即,信息)集合(例如以基于诸如sql的预定的结构化语言的关系数据库)。当存储在存储器上时,该数据库允许计算机的快速搜索和检索。数据库实际上被结构化为促进与多种数据处理操作结合的数据的存储、检索、修改以及删除。该数据库可以由可以被分解为记录的文件或文件集合构成,每条记录由一个或多个字段构成。字段是数据存储的基本单元。用户可能主要通过查询来检索数据。使用关键字和排序命令,用户能够根据正使用的数据库管理系统的规则来在众多记录中快速地搜索、重新排列、分组和选择字段,以在特定的数据聚集上检索或创建报告。在该方法的情况下,第一计算机包括用于存储要在第二计算机上渲染的3d场景的至少一部分资产的数据库。

该方法通常操控资产。这里,术语资产是指3d建模对象、材料、纹理、3d模型的动画、灯光、场景图等等,并且更一般来说术语资产包括能够被渲染或对3d场景的渲染具有影响的所有元素。为了简洁起见,现在将参考建模对象来描述本发明,应该理解,本发明的方法并不局限于这样的建模对象,并且它可以使用3d场景的任意资产。建模对象是由存储在例如数据库中的数据定义的任意对象。通过扩展,语句“建模对象”指代该数据自身。根据系统的类型,建模对象可以由不同种类的数据定义。该系统可以实际上是cad系统、cae系统、cam系统、pdm系统、plm系统、虚拟世界应用、视频游戏;更一般地,该系统可以是执行3d场景及其内容-描述局部或完整3d虚拟环境的各种资产-的显示的任意3d应用。在那些不同的系统中,建模对象由相应的数据定义。然而,这些系统并不排除其他系统,因为建模对象可以由与这些系统的任意组合相对应的数据来定义。系统因而可以很好地是cad和plm系统两者,这将通过下文提供的对这样的系统的定义而变得明显。

定义建模对象的数据包括允许表示该建模对象的数据。上文列出的系统可以例如使用边或线来提供建模对象的表示,在某些情况下使用面或表面。线、边或表面可以按照多种方式表示,例如,非均匀有理b样条(nurbs)。特别地,文件包括规范,据此可能生成几何结构,它反过来允许生成表示。建模对象的规范可以被存储在单个文件或多个文件中。表示建模对象的文件的典型大小,例如在cad系统中,在每部件一兆字节的范围内。并且建模对象典型地可以是数千部件的组装。

在实践中,建模对象可以是3d建模对象,例如表示诸如部件或部件的组装的产品,或者可能是产品的组装。“3d建模对象”是指由允许其3d表示的数据建模的任意对象。3d表示允许从所有角度观察该部件。举例来说,3d建模对象当被3d表示时可以被处置并绕着其任意轴或者绕着在其上显示该表示的屏幕中的任意轴转动。这明显排除了2d图标,它不是被3d建模的。3d表示的显示促进了设计(即,提高了设计者统计上完成他们的任务的速度)。这加速了工业中的制造过程,因为产品的设计是制造过程的一部分。

3d建模对象可以表示在使用诸如cad软件方案或cad系统完成其虚拟设计后要在真实世界中制造的产品的几何结构,例如(诸如机械)部件或部件的组装,或者更一般地任意刚体组装(诸如移动机构)。cad软件方案允许在多种并且不受限的工业领域中设计产品,包括:航空、建筑、建设、消费类产品、高科技设备、工业仪器、运输、航海和/或近海油/气生产或运输。由该方法设计的3d建模对象因而可以表示可以是任意机械部件的工业产品,例如陆地车辆的部件(包括例如汽车和轻型卡车装备、赛车、摩托车、卡车和发动机装备、卡车和公共汽车、火车)、飞行器的部件(包括例如机身装备、航空装备、推进装备、防御产品、航线设备、空间设备)、海军运载工具的部件(包括例如海军装备、商业船只、近海装备、游艇和作业船、航海装备)、一般机械部件(包括例如工业制造机器、重型移动机器或装备、安装的装备、工业装备产品、装配式金属产品、轮胎制造产品)、机电或电子部件(包括例如消费类电子、安全和/或控制和/或乐器产品、计算和通信装备、半导体、医疗设备和仪器)、消费类产品(包括例如家具、家庭和园艺产品、休闲用品、时尚产品、耐用商品零售商的产品、非耐用商品零售商的产品)、包装(包括例如食品和饮料以及烟草、美容和个人护理、日用产品包装)。

plm系统还指适于管理表示物理制造的产品(或者要制造的产品)的建模对象的任意系统。在plm系统中,建模对象因而由适于制造物理对象的数据定义。这些可能典型地是尺寸值和/或容许值。对于对象的正确制造,具有这些值确实是更好的。

cam解决方案还指适于管理产品的制造数据的任意解决方案,软件或者硬件。制造数据一般包括与要制造的产品、制造过程和要求的资源相关的数据。cam解决方案用于计划和优化产品的整个制造过程。举例来说,它能够为cam用户提供可行性、制造过程的持续时间或者诸如特定机器人的资源数量的信息,这可能在制造过程的特定步骤中使用;并且因而允许对管理或要求的投资做出决定。cam是cad过程和可能的cae过程之后的随后过程。这种cam解决方案由商标为的达索系统提供。

cae解决方案还指适于分析建模对象的物理行为的任意解决方案,软件或者硬件。一种公知并广泛应用的cae技术是有限元法(fem),它典型地包括将建模对象划分成能够通过方程式计算和模拟其物理行为的元素。这种cae解决方案由商标为的达索系统提供。另一成长的cae技术包括在没有cad几何结构数据的情况下对由来自不同物理领域的多个组件组成的复杂系统的建模和分析。cae解决方案允许模拟并且因而优化、改进和验证要制造的产品。这种cae解决方案由商标为的达索系统提供。

pdm代表产品数据管理。pdm解决方案是指适于管理与特定产品相关的所有类型的数据的任意解决方案,软件或者硬件。pdm解决方案可以由产品生命周期中涉及的所有角色使用:主要是工程师但也包括项目管理者、金融人士、销售人士和购买者。pdm解决方案一般基于面向产品的数据库。它允许各角色共享他们的产品的一致性数据并且因此防止各角色使用相异的数据。这种pdm解决方案由商标为的达索系统提供。

图10示出了作为客户端的计算机的示例。该示例也可以应用至服务器。该示例的客户端计算机包括连接至内部通信总线1000的中央处理单元(cpu)1010,同样连接至总线的随机存取存储器(ram)1070。客户端计算机进一步具有图形处理单元(gpu)1110,它与连接至总线的视频随机存取存储器1100相关联。视频ram1100在本领域中也被称为帧缓冲器。海量存储设备控制器1020管理对于诸如硬驱1030的海量存储设备的访问。适于有形地体现计算机程序指令和数据的海量存储设备包括所有形式的非易失性存储器,举例来说包括半导体存储器设备,诸如eprom、eeprom以及闪存设备;磁盘,诸如内部硬盘和可移动盘;磁-光盘;以及cd-rom盘1040。前述任意设备可以由专门设计的asic(专用集成电路)补充或者结合在该asic中。网络适配器1050管理对网络1060的访问。客户端计算机还可以包括触觉设备1090,诸如光标控制设备、键盘等。光标控制设备在客户端计算机中使用以允许用户选择性地将光标放置在显示器1080上的任意期望位置。此外,光标控制设备允许用户选择多种命令并输入控制信号。光标控制设备包括多个信号生成设备以将控制信号输入至系统。典型地,光标控制设备可以是鼠标,鼠标的按键用于产生信号。作为选择或者此外,客户端计算机系统可以包括触敏板和/或触敏屏。

计算机程序可以包括能够由计算机执行的指令,该指令包括用于使上述系统执行所述方法的单元。程序可以被记录在任意数据存储介质上,包括系统的存储器。程序例如可以被实现在数字电子电路中,或者在计算机硬件、固件、软件或它们的组合中。程序可以被实现为装置,例如有形地体现在机器可读存储设备中以由可编程处理器执行的产品。各方法步骤可以由执行指令程序的可编程处理器执行以通过操作输入数据并产生输出来执行所述方法的功能。处理器因而可以能够被编程并耦合以从数据存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,或者将数据和指令发送到该数据存储系统、至少一个输入设备和至少一个输出设备。应用程序能够以高级的面向过程或面向对象的编程语言实现,或者如果需要以汇编语言或机器语言实现。在任意情况下,语言可以是编译语言或解释语言。程序可以是完全安装程序或更新程序。在系统上应用所述程序在任意情况下都会获得用于执行所述方法的指令。

所述方法可以包括在制造过程中,制造过程可以包括在执行所述方法之后制造与显示的建模对象相对应的物理产品。

返回参考图1,现在讨论用于设计建模对象的3d组装的方法的示例。

在步骤s10,由诸如客户端计算机的第二计算机渲染3d建模对象的3d组装。通过组合至少两个3d建模对象来获得该3d组装。第一3d建模对象被存储在第一计算机(例如服务器)上,该第一计算机将第一3d建模对象的至少一个光栅图像流式传送到第二计算机。因而在合并时,该至少一个光栅图像已经被从第一计算机流式传送至第二计算机。第二3d建模对象被存储在第三计算机或第一计算机上;参考图5对此进行讨论。

现在参考图4,讨论用于渲染3d组装的示例。在步骤s100,运行在用户计算机上的应用请求显示3d组装,例如,基于选择要显示的组装的用户动作。用户计算机也被称为客户端或第二计算机,与存储要显示的3d组装的至少某些建模对象的服务器(也被称为第一计算机)形成对比。

现在参考图8,示出了例如通过计算机网络连接在一起的服务器1和客户端2的示例。计算机网络是允许计算机交换数据的电信网络。它可以是但不局限于lan、man、wan、以太网等等。本发明的方法可以针对任意种类的计算机网络执行。仍然参考图8,描绘了可能请求存储在服务器1上的相同3d组装的显示,或者请求可能存储在服务器1或者第二服务器3上的另一3d组装的显示的第二客户端4。有趣的是,没有被存储在服务器1上的3d组装的建模对象能够被存储在另一存储器3上,或者被存储在执行该请求的客户端2上,或者甚至被存储在第二客户端4上。因此,本发明能够在客户端/服务器模型或点对点模型中执行;实际上,能够由请求3d组装的显示的客户端2访问的任意计算机1,2,3都能够存储要显示的组装的建模对象。

返回到图4,在步骤s102,由服务器计算第一3d建模对象的至少一个光栅图像。术语光栅图像指代能够经由计算机观看的点矩阵数据结构,该点矩阵数据结构表示通常为矩形的像素网格或者颜色点。光栅图像在技术上通过以像素为单位的该图像的宽度和高度以及每像素比特数进行特征化。术语第一3d建模对象是指形成存储在服务器上的3d组装的一个或多个建模对象。服务器执行本领域公知的计算。举例来说,服务器接收应用的请求(s100),从其数据库检索形成该组装的3d对象,根据检索的3d对象计算在3d空间中这些3d对象的像素,然后选择视点(举例来说,默认地,或者所述组装的用户的最后视点),并且根据选定的视点获得光栅图像。在实践中,3d渲染引擎生成从特定视点观看的3d场景的一个或多个光栅图像,如本领域所公知的;例如,3d渲染引擎使用服务器的计算处理单元(cpu)计算在3d空间中这些3d对象的像素,并使用服务器的图形处理单元以根据3d空间上的视点来获得图像(像素的集合)。在实践中,最普通的流水线如下。cpu向gpu发送三角形的列表。然后gpu将在参考坐标系中的三角形的顶点坐标转换至当前视点坐标系中的新坐标。该三角形的新坐标然后被投影在2d空间中并且投影的三角形被转换为形成要被显示的图像的像素集合。

在步骤s104,针对在步骤s102获得的第一3d建模对象的每一个光栅图像计算深度缓存。术语深度缓存是指深度缓冲(也被称为z-缓冲)过程的结果。深度缓冲或z-缓冲是本领域公知的。每个图像的深度缓存为该图像的每个像素存储该像素的深度(z坐标)。像素的深度缓存是与光栅图像的深度缓存具有相同维度的2d阵列(x-y),光栅图像的深度缓存对于光栅图像中的每个像素存储与从这一像素到相机的距离相关的值。有趣的是,在深度缓存中存储的值可能不总是点至相机距离的线性函数,然而它总是单调函数(大多数时间为严格递增函数),如本领域所公知的。能够使用任意粒度的深度缓存,例如16比特或24比特或32比特深度缓存。在实践中,选择更高的可用粒度;一般为32比特深度缓存。

由第一计算机执行步骤s102和s104。这暗示着在第一计算机上的图形渲染能力。步骤s102和s104对于被计算的每个新光栅图像连续执行。这意味着如果连续计算了多个光栅图像,则一个光栅图像的深度缓存在另一光栅图像已经被计算之后被立即计算。作为选择,在光栅图像(例如预定数量的光栅图像)已经被计算之后能够计算一组深度缓存。

然后,在步骤s120,在步骤s102中计算的光栅图像被从服务器流式传送至客户端;因而,客户端接收像素图像的流。流式传送是指光栅图像在由服务器传送时由客户端接收并被呈现至该客户端。在客户端和服务器之间创建并开启通道,例如,该通道可以基于客户端的请求而创建。并且服务器通过这一通道来将光栅图像发送至客户端。

光栅图像和深度缓存可以被一起流式传送。这意味着客户端“同时”接收光栅图像和与它相关联的深度缓存。在那里,语句“同时”意味着在给定时隙中,该给定时隙可以取决于计算机网络参数(带宽、协议等等)和状态(拥塞、延迟等等)而改变。举例来说,在五秒钟的时隙中,客户端接收光栅图像并且随后接收深度缓存。正如已经讨论的,对于被计算的每个新光栅图像,连续执行步骤s102和s104,这因此使得更容易对深度缓存与光栅图像一起进行流式传送。

光栅图像和深度缓存可以在单个流中进行流式传送,也就是说,使用一个流。作为选择,光栅图像在第一单独流中进行流式传送,而深度缓存在第二单独流中进行流式传送。

在实践中,包括光栅图像的单个流和/或包括深度缓存的单个流,或者包括光栅图像和深度缓存两者的单个流被编码。该编码可以是压缩方案。举例来说,由于渲染图像的序列或者深度缓存的序列形成视频,因此可以使用诸如h.264的标准视频压缩方案。有趣的是,h.264压缩方案可以使用诸如在l.cheng&al.的“real-time3dgraphicsusingstreamingmpeg-4”或者p.fechteler和p.eisert的“acceleratedvideoencodingusingcontextinformationrender”的文档中描述的那些方法进行增强,它们提供一种方式以直接根据在场景的渲染期间使用的3d场景信息(深度、相机移动或3d部件移动)而不是使用在标准视频编解码器中发现的计算开销大的运动估算搜索算法来计算运动向量。d.pajak,r.herzog等的文档“scalableremoterenderingwithdepthandmotion-flowaugmentedstreaming”提供了一种解决方案以通过考虑渲染图像和深度缓存是高度相关的来在单个视频流中对该渲染图像和深度缓存两者进行编码。有利地,该最后解决方案允许产生包括渲染图像和深度缓存两者的单个流,并且它能够比取决于3d场景在h.264流中独立编码的渲染图像更亮。

要理解的是,需要从服务器发送至客户端(甚至从客户端发送至服务器)的任意数据(光栅图像,深度缓存等等)优选地使用流式传送通道进行发送。举例来说,当在服务器上修改3d场景时(例如,3d场景中的新对象,执行3d场景上的模拟),该修改被流式传送至客户端。在实践中,客户端上的用户与该3d场景交互,使得数据不断地被客户端接收并被呈现至客户端。并且当用户不与3d场景交互时(或者当3d场景中没有什么在运动时),被流式传送的数据的量非常低;应该理解,通道被保持开启。

然后,在步骤s130,第二3d建模对象被与流式传送的至少一个光栅图像合并。该第二3d建模对象是几何3d建模对象,并且该客户端计算机执行该合并。合并意味着定义第二3d建模对象的数据被渲染“至”通过像素流式传送发送的渲染的视图中。如上文之前讨论的,这些数据包括允许建模对象的表示的数据,例如,使用边或线的表示,在某些情况下使用面或表面。因此,步骤s130暗示着此时在第二计算机上的图形渲染能力:由客户端计算第二3d建模对象的图像并且这一图像被与一个或多个光栅图像组合。因此,第二3d建模对象的最新计算的图像和流式传送的光栅图像被联合以形成要在第二(客户端)计算机上被渲染的图像。第二3d建模对象可以被存储在客户端计算机上,或者它能够被从第三计算机发送至客户端计算机。举例来说,并参考图8,第二3d建模对象能够被存储在另一服务器3上,或者被存储在执行该请求的客户端2上,或者甚至被存储在第二客户端4上。

合并的结果是要被渲染的新图像。该合并因此包括将第二3d建模对象的几何结构渲染“至”通过像素流式传送发送的渲染的视图中。通过第二计算机将第二3d建模对象的图像与从光栅图像流式传送接收的当前光栅图像进行组合。在实践中,第二3d建模对象的图像与光栅图像具有相同的尺寸(相同的像素长度、像素宽度、以及像素数量)。

当将第二3d建模对象与光栅图像合并时,选择第二3d建模对象上的视点以计算第二建模对象的图像。该视点的选择可以被默认地执行(例如,第二对象的用户的最后视点),由随机过程执行,使用与针对光栅图像选择的视点相同的视点执行(例如,在由第一建模对象和第二建模对象共享的参考坐标系中提供相机的位置)。

可以通过执行逐像素的比较以确定渲染第二3d建模对象的哪些片段来实现光栅图像和第二3d建模对象的计算的图像的组合。术语片段是指可以在渲染图像上产生像素(绘制或没有绘制)的3d对象的一部分。这一术语在本领域中被广泛使用并且是公知的。每次在第二3d建模对象的片段应该在建模对象的3d组装的渲染图像的像素上进行绘制时,在从第一计算机流式传送的深度缓存中的相应值和与f至相机的距离相关的值之间进行比较。如前面所陈述的,在流式传送的深度缓存中存储的值与从相机至被流式传送的渲染图像中的相应像素的距离相关。因此做出这一逐像素的比较以确定应当被绘制的第二3d建模对象的片段与来自被流式传送的第一3d建模对象的至少一个光栅图像的已经被绘制的像素相比距离相机更远还是更近。这一方法被称为z-选择并且允许通过将第二3d建模对象的几何结构渲染“至”通过像素流式传送发送的渲染的视图中而在第二计算机上显示3d组装的视图。在“像素流”中发送的深度缓存(或深度图)因此被用于解决闭塞,即,确定在3d组装的视图中每个流的哪些元素是可见的或不可见的。

然后,在步骤s140,计算3d组装(s30)的视图上的照明效果以进一步提升3d组装的渲染图像的质量。术语照明效果包括第一3d建模对象在第二3d建模对象的可视方面上显著的光线和阴影,并且反之亦然。因此,计算在像素流的第一3d建模对象和几何流的第二3d建模对象之间的照明的相互作用(投射光和阴影)。

然后,在步骤s150,建模对象的3d组装被渲染并被显示在第二计算机上。这以本领域公知的方式执行。

现在参考图6,讨论了如参考图3的流程图描述的本发明的示例。用户已经请求了(s100)在计算机客户端上显示包括存储在第一服务器上的第一集合s1的两个3d建模对象(立方体和圆锥体)以及存储在第二服务器上的第二集合s2的两个3d建模对象(圆柱体和圆环)的3d组装。作为请求的结果,由第一服务器计算(s102,s104)s1的光栅图像r1和深度图d1(或者深度缓存),并且然后由第一服务器将包括r1和d1的单个像素流发送至客户端,并且由第二服务器将第二集合s2的几何流发送至客户端。可以预期其他配置;举例来说,第一服务器可以发送两个像素流(一个针对r1并且一个针对d1),和/或集合s2可以被存储在客户端计算机上。客户端然后合并这两个流,计算照明效果,并且远程地渲染3d组装r2。

本发明提高了在客户端数量增加的情况下远程渲染的可伸缩性。举例来说,能够提高3d场景中作为被流式传送为像素的部分与被流式传送为几何结构的部分相比的3d对象的数量,当客户端的数量增加时这样做是有利的。因此,本发明允许取决于客户端数量和它们的配置而执行像素流式传送和几何流式传送之间的负载平衡。作为另一示例,如果两个或多个客户端视点足够接近,则一种可行的策略是使用几何流式传送来发送与它们接近的资产(如果可能经由多播在共同流(mutualstream)中)并且使用像素流式传送来发送远距离的对象;实际上,被流式传送的图像具有足够接近的机会,仅在某些资产的位置中由于视差而存在小的位移,这意味着这些图像也可以经由多播在共同流中进行发送。另一“负载平衡”策略是对于客户端更有可能与之交互的对象使用几何流式传送,并且使用像素流式传送来发送远距离的对象。有利地,在网络中断的情况下,客户端将仍然能够与他更可能交互的对象进行交互。客户端将也能够改变它的视点,因为使用像素流式传送发送的部分的失真保持可以接受(与归因于视差的变形有关)。

现在参考图5,现在讨论建模对象的3d组装上的照明效果的计算(s140)的示例。在3d计算机图形学领域中已经开发了许多技术来计算这些照明效果作为后处理。这里,后处理是指在转换至像素的rgb空间后计算照明效果,例如,3d组装的图像被存储在帧缓冲器中并且从那里进行后处理。这包括被称为推迟着色、屏幕空间环境光闭塞、屏幕空间直接闭塞、屏幕空间局部反射、屏幕空间阴影光线追踪等等的技术。这些技术共享针对每个像素它们需要的至少下述各条信息:表面法线方向和材料性质。它们也可能要求与光源相关的信息(位置、颜色、范围等等)。

在步骤s400,服务器接收与第一3d建模对象的至少一个光栅图像相关联的一个或多个第一光源信息以及与第二3d建模对象相关联的一个或多个第二光源信息。在实践中,在与传输光栅图像的相同流中传送第一光源信息。作为选择,它能够使用深度缓存的流进行发送,或者它能够在自己的单个流中进行发送。在几何流中传送第二光源信息;应该理解,它还能够在它自己的单个流中进行发送。每个光源的信息至少包括该光源的位置(例如,在由第一建模对象和第二建模对象共享的参考坐标系中)。它可以进一步包括但不局限于光源的颜色、光谱分布、照明强度的空间分布。

然后,在步骤s410,通过合并第二3d建模对象与所述至少一个光栅图像的第一深度缓存来计算第二深度缓存。按照针对第二3d建模对象与光栅图像的合并相同的方式来执行这一合并。

然后,在步骤s420,根据第二深度缓存来计算法线图(s410)。该法线图针对建模对象的3d组装的每个像素存储表面法线方向。可以通过向第二深度缓存应用卷积滤波器来计算该法线图。法线图的该计算可以按照本领域公知的方式来执行。计算深度的梯度(使用sobelmask作为滤波器的卷积);这一梯度是在屏幕空间中的法线的粗略近似。然后,这一梯度可以不被从2d空间(屏幕空间)“投射”至参考空间。

然后,在步骤s430,推断与至少一个光栅图像合并的第二3d建模对象的每个像素的材料性质。这可以通过例如根据像素颜色或流式传送来执行。作为选择,该材料性质可以直接从包括该第一3d建模对象和第二3d建模对象的服务器获得,例如它与光源信息在同一流中进行发送。

然后,在步骤s440,计算标识缓存。根据3d建模对象的第一集合,客户端仅知道渲染图像和深度缓存。如上文所述,照明技术可能针对每个像素要求深度、表面法线方向、少量材料性质。因此需要额外步骤来恢复这一缺失的信息。这一额外缓存(标识缓存)用于存储针对每个像素的二进制值,该二进制值识别被绘制的像素来自于第一场景的被流式传送的图像还是来自于第二集合的3d部件的渲染。从现在开始,知道了每个像素的起源(它们来自于哪个3d对象集合-第一3d建模对象还是第二3d建模对象),使得像素的照明仅考虑来自于另一集合的像素的信息以及与该另一集合相关联的光源。

需要理解,图5的流程图仅仅是示例并且可以在不改变照明效果计算的情况下修改各步骤的次序。与图7相关地提供另一示例。

客户端计算机现在具有用于作为始于每个像素的表面法线方向和材料性质的后处理的计算照明效果的所有信息。参考图7,讨论如参考图4和图5的流程图所描述的本发明的示例。图7是图3的一种修改的流水线以包括利用后处理技术的照明校正;之前讨论的图3的各步骤仍然有效。用户已经请求了(s100)在计算机客户端上显示包括存储在第一服务器上的第一集合s1的两个3d建模对象(正方体和圆锥体)以及存储在第二服务器上的第二集合s2的两个3d建模对象(圆柱体和圆环)的3d组装。作为该请求的结果,由服务器计算(s102,s104)s1的光栅图像r1和第一深度图d1(或者深度缓存),在根据其已经计算了r1的3d场景中识别第一光源l1(被符号化为灯泡)的信息,并且r1、d1和l1已经被从第一服务器流式传送至第二服务器。相伴地,由第二服务器将第二集合s2连同与s2相关联的第二光源l2(同样被符号化为灯泡)的信息的几何流式传送发送至客户端。客户端然后对这两个流进行合并,也就是说,客户端将光栅图像r1与几何集合s2合并。作为合并的结果,获得3d组装r2。然后,推断r2的对象的材料性质(s430)。例如在识别在像素和几何流内发送的材料性质时或在分析r2的像素的颜色时执行r2的像素的材料性质m的推断。当计算材料性质时,通过将第二集合s2与d1合并来计算第二深度缓存d2(s410),并且然后计算标识缓存i(s430)。根据d2生成法线图n(s420)。现在,客户端包括用于使用要求r2,d2,i,n,m以及来自s1和s2的光源信息作为输入的后处理技术来执行照明校正的数据。根据r2生成新图像r3,其中考虑来自s1的各对象和光源对s2的对象的照明影响(反之亦然)。建模对象的3d组装r3被渲染并显示给用户。

现在参考图9,讨论了当客户端的用户改变渲染的3d组装(例如,图6中的r2和图7中的r3)上的视点时服务器和客户端之间的交互(或通信交换)。客户端和服务器可以是如图8、15所示的客户端2和服务器1。使用至少流式传送通道来连接客户端和服务器。客户端和服务器第二计算机包括耦合至存储器的处理电路。客户端进一步包括允许用户在3d场景上操作的图形用户界面。第一计算机和第二计算机的每个存储器具有记录在其上的用于执行图9所示的交换s600至s660的计算机程序。这意味着服务器存储器上的计算机程序和客户端存储器上的计算机程序允许执行本发明的方法。客户端和服务器两者的存储器上的计算机程序可以相同。

作为选择,服务器存储器上的计算机程序允许创建和/或维护用于对数据进行流式传送的通道,并且它进一步允许执行步骤s620至s640;客户端存储器上的计算机程序允许创建和/或维护用于对数据进行流式传送的通道,并且它进一步允许执行步骤s600至s610以及650至660。在这一选择中,客户端和服务器上的计算机程序不同,但是协作以执行本发明的方法。

在步骤s600,由用户在客户端计算机上选择显示的3d组装上的新视点。这如本领域公知的方式执行。具有3d组装的新选择的视点的坐标的消息被发送至服务器s610。服务器接收该消息以及包含在其中的新坐标s620。对于服务器来说应用该新坐标是非常容易的操作,这是因为,包括第一3d建模对象的服务器上的3d场景以及与第二3d建模对象合并的光栅图像共享相同的坐标系;举例来说,服务器的图形处理单元能够通过直接在3d场景上应用该新视点来获得要被显示的新像素集合。服务器根据该新视点计算第一3d建模对象的新光栅图像(s630),该新光栅图像被从服务器流式传送至客户端(s640);并且最终由客户端接收(s650)。该客户端将第二3d建模对象与该流式传送的新光栅图像合并,并渲染该3d组装的新视图(s660)。如参考图4-7所讨论的那样执行步骤s630-s660。

有趣的是,图9的各步骤仅当用户改变第一集合的3d建模对象的视点时应用。实际上,当用户操纵(例如,移动、旋转等等)第二集合的建模对象时,在从其流式传送第二建模对象的服务器上不需要执行请求,这是因为,客户端计算机具有用于计算第二建模对象的新图像的所有数据-举例来说根据新视点。

返回至图1,在步骤s20,第二计算机将与第二3d建模对象相关的第一数据发送至第一计算机以进行在第一3d建模对象和第二3d建模对象之间的接触计算。术语接触包括由3d建模对象建模的两个物理体之间的冲突或碰撞。冲突或碰撞因此是两个物理体之间的交叉。术语接触还包括咬合,它是指当两个物体接近时被牵引至彼此的效果。它们的表面看起来被磁力粘住,但是刚性体积并不交叉。

在本发明中,使用所谓的混合流式传送将建模对象的3d组装渲染在第二计算机上,其中使用像素流和几何流来构建(在客户端侧)该3d组装。没有计算机(客户端和服务器)知道作为显示在第二客户端(第二计算机)上的3d组装的3d内容的第一3d建模对象和第二3d建模对象两者的真实几何结构。然而,在混合流式传送的这一上下文中,如果服务器(第一计算机)将像素流式传送的真实几何结构发送至客户端(第二计算机)或者如果客户端(第二计算机)将第二3d建模对象的真实几何结构发送至服务器(第一计算机),则损失了混合流式传送在性能方面的益处。

包括与第二3d建模对象相关的第一数据的消息由第一计算机接收并用于执行接触计算。在实践中,该第一数据包括第二3d建模对象的简单表示(也被称为简单碰撞几何结构):实际上,第一计算机已经拥有了第一3d建模对象的真实几何结构。该简单表示是根据第二3d建模对象的真实几何结构推导的。简单表示可以例如是但不局限于3d建模对象的边界框、包围球、凸包(也被称为碰撞外壳、碰撞网格或碰撞几何结构)。

该简单表示包括简单表示的尺寸(边界框的尺寸(高、宽、长))以及该简单表示在3d组装的3d空间中的坐标(例如,第一3d建模对象以及与第二3d建模对象合并的光栅图像共享相同的参考坐标系)。

在实践中,该简单表示(或碰撞几何结构)的坐标和尺寸的精确度至少是在从其观察场景的相机的3d空间中被投射回的渲染的3d组装的像素的大小。

在服务器已经接收到包括该简单表示的消息后,它计算在第一3d建模对象和第二3d建模对象之间的接触(s30)。也就是说,服务器计算第一3d建模对象和第二3d建模对象的简单表示之间的可能接触。在这一步骤s30中,由服务器执行的该计算快速丢弃了3d组装中明显不与包含在该消息中的简单表示碰撞的3d建模对象(例如,第一3d建模对象)。用于该计算的算法取决于接收到的简单表示的性质;举例来说,在o’rourke,joseph(1985),“findingminimalenclosingboxes”,internationaljournalofcomputerandinformationsciences14(3):183-199中讨论的算法可以用于边界框。作为步骤s30的结果,第一计算机意识到已经被渲染在客户端上的一个或多个3d建模对象可能与第二3d建模对象接触。

步骤s30可以被考虑为接触检测的宽阶段并且因此包括在物理实体之间的简单测试以移除明显不碰撞的大多数实体对。这一宽阶段是没有区别的但是需要很快。能够使用的通用算法包括但不局限于空间散列、扫描和裁剪、空间分割方法等等。

然后,在步骤s40,服务器将包括与第一3d建模对象相关的第二数据的新消息发送至客户端,该第一3d建模对象与第二对象接触。在实践中,这一消息包括在步骤s30中没有被丢弃的一个或多个第一3d建模对象的简单表示。

与第一3d建模对象相关的第二数据可以是第一3d建模对象的几何结构。举例来说,第二数据可以是第一对象的简化的几何结构,例如凸包。作为选择,第二数据可以是第一3d建模对象的一个或多个深度图。实际上,本发明旨在计算与渲染的3d组装相关联的屏幕空间中的碰撞性质(碰撞部分的形状、渗透向量等等)。在相同屏幕空间中计算的深度图的集合能够足以表示物理实体的刚性体积的边界。这已经例如在jang,jeong和han的“gpu-basedimage-spaceapproachtocollisiondetectionamongclosedobjects”中进行了讨论。因此,不强制发送几何结构或简化的几何结构,深度图的集合将允许客户端确认第一3d建模对象是否与第二3d建模对象接触。举例来说,深度图的集合可以包括从第一3d建模对象的正视图获得的深度图(也就是,根据当前视点的视图)以及从与当前视点相关的后视图获得的另一深度图。应该理解,深度图的集合可以包括多于两个的深度图,特别是当第一3d建模对象复杂时。

有趣的是,在步骤s20的第一消息中,与第一3d建模对象相关的第二数据能够比与第二3d建模对象相关的第一数据更复杂或精确。然而,这并不增加要传输的数据量,因为期望在这一消息中存在更少的简单表示。

该简单表示的坐标和尺寸的精确度至少是从其观察场景的相机的3d空间中被投射回的渲染的3d组装的像素的大小。该服务器知道客户端的像素大小,例如,客户端已经发送了这一信息连同与第二3d建模对象相关的第一数据。在第二数据是一个或多个深度图的情况下,精确度是渲染的3d组装的像素的大小。在与第一3d建模对象相关的第二数据是所述第一对象的简化几何结构的情况下,则在第一对象的简化几何结构和第一对象的几何结构之间的差异小于第二计算机上的像素的宽度;这有利地确保了将检测到第一3d建模对象和第二3d建模对象之间的可能(或潜在)接触。

有趣的是,包括该简单表示的消息的发送并不是由用于执行客户端上的渲染的交换像素和几何流引起的或者与该交换像素和几何流同步。这有利地允许独立于该3d组装的渲染而触发碰撞检测。因此,服务器仍将光栅图像发送至客户端,即使第一对象的几何结构被发送至客户端;应该理解,可以实现在像素流式传送和简单表示的传输之间的同步。

接下来,在步骤s50,第二计算机计算第二数据和第二3d建模对象之间的可能接触(也被称为潜在接触)。这是接触检测的窄阶段并且它执行在宽阶段之后仍可能碰撞的与第一3d建模对象相关的第二数据和第二3d建模对象之间的测试。这些测试更为精确。通用算法包括但不局限于分离轴理论和gilbert-johnson-keerthi距离算法。作为步骤s50的结果,如果没有检测到与包含在由服务器发送的消息中的第二数据的接触,则丢弃该第二建模对象。

在不存在由第二计算机计算的接触的情况下,不存在3d组装的新渲染。

如果第二计算机计算出第一3d建模对象和第二3d建模对象之间的接触,则根据该接触计算再次执行3d组装的渲染。3d组装的这一新渲染可以包括第二3d建模对象被移动(s60)使得在第一3d建模对象和第二3d建模对象之间没有更多的接触:因此满足了两个对象之间的约束(没有接触)。作为选择,3d组装的新渲染可以包括接触在3d组装上的显示,例如,两个对象之间的接触区使用特定颜色被渲染或者闪烁。此外,可以计算碰撞对象的形状、每对碰撞对象的碰撞副本和渗透向量;举例来说,扩展多变曲线算法(expandingpolytopealgorithm)是与gilbert-johnson-keerthi距离算法相关的通用算法。

需要理解,窄阶段可以由服务器执行。然而,在客户端上执行窄阶段是有利的,这是因为,在客户端和服务器之间需要交换更少消息;尤其是因为,服务器不知道第二3d建模对象的几何数据。

图2示出了与图6的示例相关的参考图1讨论的宽阶段和窄阶段。宽阶段在第一计算机上执行,该第一计算机从第二计算机接收边界框信息,例如,3d建模对象的第二集合s2的圆环和圆柱体的边界框的3d组装r2中的大小和方向。第一计算机计算包括两个第一3d建模对象的第一集合s1的子集s’1。子集s’1包括可能与s2的对象接触的3d建模对象。第一计算机然后将具有s’1的3d建模对象的简单表示的消息发送至第二计算机。需要理解,第一计算机可以发送s1的3d建模对象的完整表示。简单表示优选地是几何数据的近似,使得s’1的3d建模对象的几何数据和它们的简单表示之间的距离小于第二计算机的像素的距离。该距离可以是但不局限于欧氏距离。这确保了与s’1的对象相关的第二数据和第二对象之间的接触(如果存在)的检测。

图3示出了粗糙碰撞检测的示例。在这一示例中,仅发生了宽阶段,它与图2的宽阶段相同。第二计算机通过网络向第一计算机发送消息,并且这一消息包含第二3d建模对象的简单表示。在接收到这一第一表示后,第一计算机执行计算以快速丢弃与包含在该消息中的简单表示明显不接触的一个或多个3d建模对象(例如,第一3d建模对象),并最终解决该碰撞。取决于接触计算的目的(例如,显示碰撞部分(冲突)或移动对象以遵从固体约束),服务器可以进一步计算碰撞的3d建模对象的形状、每一对碰撞的3d建模对象的碰撞副本和渗透向量。然后,服务器将第二消息通过网络发送回第二计算机。这一消息包含先前计算步骤的结果。该消息因此可以包括表示接触的形状的网格(简单的几何表示),或者它可以简单地包括这一形状的渲染图像,或者与第一3d建模对象的实体接触碰撞的第二3d建模对象的每个实体的碰撞副本和渗透向量。最后,如前面参考图4-7所讨论的,客户端计算机可以在渲染的3d组装上显示第二3d建模对象(3d组装因此被重新渲染或再次渲染)。作为选择,客户端能够在产生渲染的3d建模组装之前移动该第二3d建模对象以遵从固体约束。有利地,仅移动第二3d建模对象并不要求新发送第一3d建模对象的光栅图像,这是因为客户端拥有第二3d建模对象的所有数据,这使得使用新位置计算第二3d建模对象更加容易。

虽然已经参考示例性实施例特别示出和描述了本发明,但是本领域技术人员将理解,在不脱离由附加的权利要求包含的本发明范围的情况下,可在其中对形式和细节做出多种改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1