CN103221993B - 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体 - Google Patents

传输和控制包括渲染的几何、纹理和光照数据的流交互媒体 Download PDF

Info

Publication number
CN103221993B
CN103221993B CN201180054647.7A CN201180054647A CN103221993B CN 103221993 B CN103221993 B CN 103221993B CN 201180054647 A CN201180054647 A CN 201180054647A CN 103221993 B CN103221993 B CN 103221993B
Authority
CN
China
Prior art keywords
vision area
polygon
grid
graphical information
summit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201180054647.7A
Other languages
English (en)
Other versions
CN103221993A (zh
Inventor
巴里·林恩·詹金斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from PCT/US2011/042309 external-priority patent/WO2012012161A2/en
Application filed by Individual filed Critical Individual
Priority to CN202010662407.6A priority Critical patent/CN111833424A/zh
Priority to CN201611005881.1A priority patent/CN107093201B/zh
Publication of CN103221993A publication Critical patent/CN103221993A/zh
Application granted granted Critical
Publication of CN103221993B publication Critical patent/CN103221993B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/56Information retrieval; Database structures therefor; File system structures therefor of still image data having vectorial format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/003Navigation within 3D models or images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8146Monomedia components thereof involving graphical data, e.g. 3D object, 2D graphics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

在示例性实施方式中,一种在服务器上执行的方法,用于向客户端设备发送可渲染的图形信息,所述图形信息包括从第一视区看不见而从第二视区可看见的至少一个图形信息集合。该方法包括:确定视点经历从所述第一视区到所述第二视区的移动的可能性。该方法还包括当确定视点经历从所述第一视区到所述第二视区的移动的可能性大于预定阈值时发送所述至少一个图形信息集合,所述移动是根据预定运动路径来确定的。

Description

传输和控制包括渲染的几何、纹理和光照数据的流交互媒体
相关申请的交叉引用
本申请要求于2011年6月29日提交的题为“System and Method of From-RegionVisibility Determination and Delta-PVS Based Content Streaming UsingConservative Linearized Umbral Event Surfaces”、申请号为PCT/US2011/042309的PCT专利申请的在前申请日的权益,该申请又要求于2010年6月30日提交的美国临时申请61/360,283的在前申请日的权益,上述两个申请中的每一个申请的全部内容通过引用合并到本申请中。本申请还要求于2010年9月13日提交的题为“System and Method ofDelivering and Controlling Streaming Interactive Media ComprisingPredetermined Packets of Geometric,Texture,Lighting and Other Data Which areRendered on a Receiving Device”的美国临时申请第61/382,056号的在前申请日的权益,该申请的全部内容通过引用合并到本申请中。本申请还要求于2010年9月19日提交的题为“System and Method of Recording and Using Clickable AdvertisementsDelivered as Streaming Interactive Media”的美国临时申请第61/384,284号的在前申请日的权益,该申请的全部内容通过引用合并到本申请中。本申请还要求于2011年3月14日提交的题为“System and Method of Controlling Visibility-Based Geometry andTexture Streaming for Interactive Content Delivery”的美国临时申请第61/452,330号的在前申请日的权益,该申请的全部内容通过引用合并到本申请中。本申请还要求于2011年4月12日提交的题为“System and Method of protecting game engine dataformats and Visibility Event Codec Formats Employing an ApplicationProgramming Interface Between the Game Engine and the Codec”的美国临时申请第61/474,491号的在前申请日的权益,该申请的全部内容通过引用合并到本申请中。本申请还要求于2011年4月19日提交的题为“System and Method of Delivering Targeted,Clickable,Opt-Out or Opt-in Advertising as a Unique,Visibility Event Streamfor Games and Streaming Interactive Media”的美国临时申请第61/476,819号的在前申请日的权益,该申请的全部内容通过引用合并到本申请中。
背景技术
技术领域
本发明涉及一种用于对包括由接收设备渲染的几何、光照和其它信息的预取分组的流交互内容进行发送与控制的方法及系统。
背景说明
在美国专利6,057,847和6,111,582中描述了对作为在客户端或接收器设备上实时渲染的几何、纹理、光照和其它数据的单帧分组的交互性内容进行传输的方法。在这些方法中,使用原始重投影来实时地生成单帧分组。
在PCT专利申请第PCT/US2011/042309(其全部内容通过引用合并到本申请中)号中描述了对作为几何、纹理和其它信息的预取分组的交互内容进行传输的方法,其中与PVS增量(可见实体集合)对应的预取分组也称为可见性事件信息。在该方法中,上述分组包括代表新近可见的图形元素的信息以及表示新近被遮挡的图形元素的信息。该信息被组织成PVS增量或可见性事件分组,其中每个分组包括用于反映图形元素由于视点从一个视单元移动到另一个视单元而变得潜在地新近可见或新近不可见的信息。在该方法中,不实时地生成分组,而是使用从视单元看去的可见性预计算和对分组进行编码的相关压缩方法对分组进行预计算。在运行时,使用基于导航的推测预取来将分组预取到客户端渲染设备,该基于导航的推测预取由表示模型的可导航区的视单元集合中观察者的当前和预测视点位置来驱动。同时,PCT专利申请第PCT/US2011/042309号的方法包括用于诸如视频游戏的交互内容的流传递的高效编解码器。
PCT专利申请第PCT/US2011/042309号的编解码器还能够传递不是必需为交互性的内容。在该编解码器的使用中,相机位置和方向不是由用户交互地控制的,而是由一个或更多个脚本化的相机运动路径来确定。该方法使得编解码器能够传递脚本化的非交互内容,其当然可以包括动画特征和其它脚本化的动态效果。以此方式来应用,该编解码器对有效地与常规的、非交互动画序列对应的内容进行流处理。按照在PCT专利申请第PCT/US2011/042309中所详述的,该编解码器能够使用较小的带宽来传递用于生成具有非常高的分辨率的对应图像序列的信息,以使用基于图像的编解码器(如MPEG-4或OnLive公司使用的实时图像压缩方法)来直接传输该图像序列。
诸如有线和卫星电视公司的宽带数字服务供应商一直在寻求用于增加能够使用可用宽带传递的内容量的方法。当传递由先前所描述的脚本化的相机运动路径驱动的单向数据流时,PCT专利申请第PCT/US2011/042309号的编解码器能够用于传递与常规高清晰度视频相同的引人入胜的故事、视觉和听觉体验,并且是以比视频的带宽小的带宽传递的。
大多数成人不玩诸如使命召唤-现代战争2(Call of Duty Modern Warfare2)、刺客信条(Assassin’s Creed)、孤岛危机(Crysis)、生化奇兵2(Bioshock2)的现代射击或动作游戏。但是这些类型的游戏经常能够提供引人入胜的故事、视觉和听觉体验,这吸引一大群年长的成年人享受观看。但是在他们的纯游戏形式中,该内容经常需要太多的交互并且玩完游戏或甚至是进入到游戏的下一个“等级”或情节可能变得疲劳。
因此,需要提供以下有效的内容传递方法:该方法提供常规的、非交互性或被动的高清晰度视频体验,同时为观察者提供按照需要在类似视频的被动体验与类似游戏的交互体验之间的切换的选项。
预取是数据传递的一般方法,其通过在客户端单元实际需要数据之前将上述数据预发送到该客户端单元来隐藏延迟或提高命中率。按照在共同未决申请PCT专利申请第PCT/US2011/042309号在可见性事件数据流中指出的,使用特定的预取方法来减小分组到达延迟的概率,这相反会在流处理可视化期间造成显著的可见性错误。
一般地,由于与实际使用的数据相比,不可避免地将更多的数据传递到客户端单元中,因此,无论是什么应用,预取都将增加流处理的数据量。Pei Cao(Cao,P,Application-Controlled File Caching and Prefectching.PhD Dissertation,Princeton University,1996.1,其全部内容通过引用合并到本申请中)给出了用于一般应用中的最佳预取及高速缓存的规则及算法。Cao的主动和保守预取算法提供了用于最小化已知参考序列的历经时间的方法。
Wu等人(Wu,B.,Kshemkalyani,D.,Object-Greedy Algorithms for Long-TermWeb Prefectching,Proceedings of the IEEE Conference on Network Computing andApplications,2004pp.61-68,其全部内容通过引用合并到本申请中)研发了用于提供预取的局部解的算法,其使用由长期通用网页内容的预取引起的增加的带宽消耗成本来对预取的增加的命中率益处进行平衡。
在2003年,Chim等人(Jimmy Chim,Rynson W.H.Lau,Hong Va Leong,and AntonioSi,CyberWalk:A Web-Based Distributed Virtual Walkthrough Environment,iEEETRANSACTIONS ON MULTIMEDIA,VOL.5,NO.4,2003.12,其全部内容通过引用合并到本申请中)描述了在演练应用期间预取图形元素的基本方法。Chim等人的Cyberwalk系统基于观察者与对象的接近程度来预取图形对象。Chim等人描述了在给出过去的当前位置的情况下预测用户未来位置的三种方法。这三种方法基于过去位置的移动平均,包括过去的运动向量的平均值、窗口和指数加权移动平均。这些运动预测方法没有明确地将观察者运动的速度或加速度的限制考虑在内,也没有解决环境内的导航限制。可以采用这两种类型的限制来增加导航的可预测性,从而增加命中率和/或减小基于导航的预取的带宽需求。
Chim等人的预取方法基于观察者与图形对象的接近程度。按照在共同未决的PCT专利申请第PCT/US2011/042309号中示出的,可见性是比接近程度更加有效的基于导航的预取的基础。这是因为离观察者较近的对象实际上可能被该观察者遮挡,并且相反地,远离观察者的对象实际上可能未被遮挡。使用可见性替代接近程度作为预取的基础需要从区域看的可见性预计算的实际和精确方法,在共同待决的PCT专利申请第PCT/US2011/042309号中规定了该方法。
发明内容
在示例性实施方式中,一种在服务器上执行的方法,用于向客户端设备发送可渲染的图形信息,该图形信息包括从第二视区可看见而从第一视区看不见的至少一个图形信息集合。该方法确定视点经历从所述第一视区到所述第二视区的移动的可能性。该方法还包括当确定视点经历从所述第一视区到所述第二视区移动的可能性大于预定阈值时发送所述至少一个图形信息集合,所述移动是根据预定运动路径确定的。
在示例性实施方式中,系统向客户端设备发送可渲染的图形信息,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个图形信息集合。该系统包括具有处理器的服务器,该处理器被配置成确定视点经历从所述第一视区到所述第二视区的移动的可能性。该处理器还被配置成当确定视点经历从所述第一视区到所述第二视区的移动的可能性大于预定阈值时发送所述至少一个图形信息集合,所述移动是根据预定运动路 径确定的。该系统还包括用于显示所述至少一个图形信息集合的所述客户端设备。
在示例性实施方式中,一种其上存储有可执行指令的非瞬态计算机可读存储介质,当通过服务器中的处理器执行上述可执行指令时,使得该处理器执行用于向客户端设备发送可渲染的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个图形信息集合。该方法包括确定视点经历从所述第一视区到所述第二视区的移动的可能性。该方法还包括当确定视点经历从所述第一视区到所述第二视区的移动的可能性大于预定阈值时发送所述至少一个图形信息集合,所述移动是根据预定运动路径确定的。
在示例性实施方式中,一种在服务器上执行的方法,该方法用于向客户端设备发送可渲染的图形信息,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个图形信息集合。该方法包括确定视点经历从所述第一视区到所述第二视区的移动的可能性。该方法还包括当确定视点经历从所述第一视区到所述第二视区的移动的可能性大于预定阈值时发送所述至少一个图形信息集合,所述移动是根据所述客户端设备的用户输入确定的。
在示例性实施方式中,一种向客户端设备发送可渲染的图形信息的系统,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个图形信息集合。该系统包括具有处理器的服务器,所述处理器配置成确定视点经历从所述第一视区到所述第二视区的移动的可能性。该处理器还被配置成当确定视点经历从所述第一视区到所述第二视区的移动的可能性大于预定阈值时发送所述至少一个图形信息集合,所述移动是根据所述客户端设备的用户输入确定的。该系统还包括用于显示所述至少一个图形信息集合的所述客户端设备。
在示例性实施方式中,一种其上存储有可执行指令的非瞬态计算机可读存储介质,当通过服务器中的处理器执行上述可执行指令时,使得所述处理器执行用于向客户端设备发送可渲染的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个图形信息集合。该方法包括确定视点经历从所述第一视区到所述第二视区的移动的可能性。该方法还包括当确定视点经历从所述第一视区到所述第二视区的移动的可能性大于预定阈值时发送所述至少一个图形信息集合,所述移动是根据所述客户端设备的用户输入确定的。
在示例性实施方式中,一种在服务器上执行的用于向客户端设备发送可渲染的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的第一图形信息集合,并且所述图形信息包括从所述第二视区可看见而从所述第一视区看不见的第二图形信息集合,所述第二图形信息集合包括表示广告的图形信息。该方法包括当确定视点从所述第一视区到所述第二视区的移动的可能性大于预定移动阈值时发送所述第一图形信息集合,所述移动是根据预定运动路径确定的。该方法还包括当确定视点从所述第一视区到所述第二视区的移动的可能性大于该预定移动阈值并且当确定所述服务器到所述客户端设备的最大可用传输带宽超过预定带宽阈值时,发送所述第二图形信息集合,所述移动是根据该预定运动路径确定的。
在示例性实施方式中,一种向客户端设备发送可渲染的图形信息的系统,所述图形信息包括从第二视区可看见而从第一视区看不见的第一图形信息集合,并且所述图形信息包括从所述第二视区可看见而从所述第一视区看不见的第二图形信息集合,所述第二图形信息集合包括表示广告的图形信息。该系统包括具有处理器的服务器,所述处理器被配置成当确定视点从所述第一视区移动到所述第二视区的可能性大于预定移动阈值时发送所述第一图形信息集合,所述移动是根据预定运动路径确定的。该处理器还被配置成当确定视点从所述第一视区移动所述第二视区的可能性大于该预定移动阈值并且当确定从所述服务器到所述客户端设备的最大可用传输带宽超过预定带宽阈值时,发送所述第二图形信息集合,所述移动是根据该预定运动路径确定的。该系统还包括被配置成显示所述第一图形信息集合或所述第二图形信息集合的所述客户端设备。
在示例性实施方式中,一种在其上存储有可执行指令的非瞬态计算机可读存储介质,当通过服务器中的处理器执行上述可执行指令时,使得所述处理器执行用于向客户端设备发送可渲染的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的第一图形信息集合,并且所述图形信息包括从所述第二视区可看见而从所述第一视区看不见的第二图形信息集合,所述第二图形信息集合包括表示广告的图形信息。该方法包括当确定视点从所述第一视区移动到所述第二视区的可能性大于预定移动阈值时发送所述第一图形信息集合,所述移动是根据预定运动路径确定的。该方法还包括当确定视点从所述第一视区移动到所述第二视区的可能性大于该预定移动阈值并且当确定从所述服务器到所述客户端设备的最大可用传输带宽超过预定带宽阈值时,发送所述第二图形信息集 合,所述移动是根据该预定运动路径确定的。
在示例性实施方式中,一种在服务器上执行的用于向客户端设备发送表示作为建模环境的实际环境的可渲染的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合。该方法包括接收数据,所述数据包括用于传达所述客户端设备的位置或速度的信息。该方法还包括当确定所述位置从所述第一视区改变到所述第二视区的可能性大于预定移动阈值时发送所述至少一个第一图形信息集合。
在示例性实施方式中,一种向客户端设备发送表示作为建模环境的实际环境的可渲染的图形信息的系统,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合。该系统包括具有被配置成接收数据的处理器的服务器,所述数据包括传达所述客户端设备的位置或速度的信息。该处理器还被配置成当确定所述位置从所述第一视区改变到所述第二视区的可能性大于预定移动阈值时向客户端设备发送所述至少一个第一图形信息集合。该系统还包括被配置成显示所述至少一个第一图形信息集合的所述客户端设备。
在示例性实施方式中,一种其上存储有可执行指令的非瞬态计算机可读存储介质,当通过服务器中的处理器执行上述可执行指令时,使得所述处理器执行用于向客户端设备发送表示作为建模环境的实际环境的可渲染的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合。该方法包括接收数据,所述数据包括用于传达所述客户端设备的位置或速度的信息。该方法还包括当确定所述位置从所述第一视区变化到所述第二视区的可能性大于预定移动阈值时向客户端设备发送所述至少一个第一图形信息集合。
在示例性实施方式中,一种在服务器上执行的用于向客户端设备发送可渲染的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合,和从第四视区可看见而从第三视区看不见的至少一个第二图形信息集合。该方法包括使用从所述客户端设备接收的数据确定视点从所述第一视区变化到所述第二视区的第一概率,所述接收的数据包括所述客户端设备的用户输入,所述用户输入用于控制所述客户端设备的视点位置。该方法还包括使用从所述客户端设备接收的数据确定视点从所述第三视区变化到所述第四视区的第二概率,所述接收的数据包括所述客户端设备的用户输入,所述用户输入用于控制所述 客户端设备的视点位置。该方法还包括以第一速率发送所述至少一个第一图形信息集合,所述第一速率是根据所述第一概率的函数确定的。该方法还包括以第二速率来发送所述至少一个第二图形信息集合,所述第二速率是根据所述第二概率的函数确定的。
在示例性实施方式中,一种向客户端设备发送可渲染的图形信息的系统,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合,和从第四视区可看见而从第三视区看不见的至少一个第二图形信息集合。该系统包括具有处理器的服务器,所述处理器被配置成使用从所述客户端设备接收的数据确定视点位置从第一视区变化到所述第二视区的第一概率,所述接收的数据包括所述客户端设备的用户输入,所述用户输入用于控制所述客户端设备的视点位置。该处理器还被配置成使用从所述客户端设备接收的数据确定视点位置从所述第三视区变化到所述第四视区的第二概率,所述接收的数据包括所述客户端设备的用户输入,所述用户输入用于控制所述客户端设备的视点位置。该处理器还被配置成以第一速率发送所述至少一个第一图形信息集合,所述第一速率是根据所述第一概率的函数确定的。该处理器还被配置成以第二速率发送所述至少一个第二图形信息集合,所述第二速率是根据所述第二概率的函数确定的。该系统还包括被配置成显示所述至少一个第一图形信息集合或所述至少一个第二图形信息集合的所述客户端设备。
一种其上存储有指令的非瞬态计算机可读存储介质,当通过服务器中的处理器执行上述指令时,使得该处理器进行用于向客户端设备发送可渲染的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合、和从第四视区可看见而从第三视区看不见的至少一个第二图形信息集合。该方法包括使用从所述客户端设备接收的数据来确定视点位置从所述第一视区变化到所述第二视区的第一概率,所述接收的数据包括所述客户端设备的用户输入,所述用户输入用于控制所述客户端设备的视点位置。该方法还包括使用从所述客户端设备接收的数据确定视点位置从所述第三视区变化到所述第四视区的第二概率,所述接收的数据包括所述客户端设备的用户输入,所述用户输入用于控制所述客户端设备的视点位置。该方法还包括以第一速率发送所述至少一个第一图形信息集合,根据所述第一概率的函数确定所述第一速率。该方法还包括以第二速率来发送所述至少一个第二图形信息集合,所述第二速率是根据所述第二概率的函数确定的。
在示例性实施方式中,一种在服务器上执行的用于向客户端设备发送表示作为建模环境的实际环境的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合。该方法包括接收包括传达所述客户端设备的位置或速度的信息的数据,所述接收的数据是使用三维地图匹配确定的,使用表示所述实际环境的所述图形信息作为所述建模环境来进行所述三维地图匹配。该方法还包括当确定所述位置从所述第一视区变化到所述第二视区的可能性大于预定移动阈值时向客户端设备发送所述至少一个第一图形信息集合。
在示例性实施方式中,一种向客户端设备发送表示作为建模环境的实际环境的图形信息的系统,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合。该系统包括具有被配置成接收包括传达所述客户端设备的位置或速度的信息的数据的处理器的服务器,使用三维地图匹配来确定所述接收的数据,使用表示实际环境的所述图形信息作为所述建模环境来进行所述三维地图匹配。该处理器还被配置成当确定所述位置从所述第一视区变化到所述第二视区的可能性大于预定移动阈值时向客户端设备发送所述至少一个第一图形信息集合。该系统还包括被配置成显示所述至少一个第一图形信息集合的所述客户端设备。
在示例性实施方式中,一种其上存储有可执行指令的非瞬态计算机可读存储介质,当通过服务器中的处理器执行上述可执行指令时,使得该处理器执行用于向客户端设备发送表示作为建模环境的实际环境的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合。该方法包括接收数据,所述数据包括传达所述客户端设备的位置或速度的信息,使用三维地图匹配来确定所述接收的数据,使用表示所述实际环境的所述图形信息作为所述建模环境来进行所述三维地图匹配。该方法还包括当确定所述位置从所述第一视区变化到所述第二视区的可能性大于预定移动阈值时向客户端设备发送所述至少一个第一图形信息集合。
在示例性实施方式中,一种在服务器上执行的用于对到客户端设备的图形信息的基于导航的预取发送进行控制的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第图形信息集合。该方法包括确定第一时间段,在所述客户端设备被调度为访问所述客户端设备上的所述第一图形信息集合之后,所述第一图形信息集合将要在所述第一时间段期间到达。该方法还包括向在所述第一时间段期间所述客户端设备发送用于防止导航到所述第二视区中的指令。
在示例性实施方式中,一种对到客户端设备的图形信息的基于导航的预取发送进行控制的系统,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合。该系统包括具有处理器的服务器,所述处理器被配置成用于确定第一时间段,在所述客户端设备被调度为访问所述客户端设备上的所述第一图形信息集合之后,所述第一图形信息集合将要在所述第一时间段期间到达。该处理器还被配置成向所述客户端设备发送用于防止在所述第一时间段期间导航到所述第二视区中的指令。该系统还包括用于接收所述指令的所述客户端设备。
在示例性实施方式中,一种其上存储有可执行指令的非瞬态计算机可读存储介质,当通过服务器中的处理器执行上述可执行指令时,使得该处理器进行用于对到客户端设备的图形信息的基于导航的预取发送进行控制的方法,所述图形信息包括从第二视区可看见而从第一视区看不可见的至少一个第一图形信息集合。该方法包括确定第一时间段,在所述客户端设备被调度为访问所述客户端设备上的所述第一图形信息集合之后,所述第一图形信息集合将要在所述第一时间段期间到达。该方法还包括向所述客户端设备发送用于防止在所述第一时间段期间导航到所述第二视区中的指令。
在示例性实施方式中,一种在服务器上执行的用于对到客户端设备的图形信息的基于导航的预取发送进行控制的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的第一图形信息集合,并且所述图形信息包括从第二视区可看见而从第一视区看不见的第二图形信息集合,所述第二图形信息集合的细节层次低于所述第一图形信息集合的细节层次。该方法包括确定第一时间段,在所述客户端设备被调度为访问所述客户端设备上的所述第一图形信息集合之后,所述第一图形信息集合将要在所述第一时间段期间到达。该方法还包括在所述第一时间段发送所述第二图形信息集合。该方法还包括在所述第一时间段期间向所述客户端设备发送指令,所述指令包括用于引起包括所述第二图形信息集合的投影的视口区中的至少一个模糊对象的渲染的指令。
在示例性实施方式中,一种对到客户端设备的图形信息的基于导航的预取发送进行控制的系统,所述图形信息包括从第二视区可看见而从第一视区看不见的第一图形信息集合,并且所述图形信息包括从所述第二视区可看见而从所述第一视区看不见的第二图形信息集合,所述第二图形信息 集合的细节层次低于所述第一图形信息集合的细节层次。该系统还包括具有处理器的服务器,所述处理器被配置成确定第一时间段,在所述客户端设备被调度为访问所述客户端设备上的所述第一图形信息集合之后,所述第一图形信息集合将要在所述第一时间段期间到达。该处理器还被配置成在所述第一时间段期间发送所述第二图形信息集合。该处理器还被配置成在所述第一时间段期间向所述客户端设备发送指令,所述指令包括用于引起对包括所述第二图形信息集合的投影的视口区中的至少一个模糊对象的渲染的指令。该系统还包括被配置成显示所述第二图形信息集合并接收所述指令的所述客户端设备。
在示例性实施方式中,一种其上存储有可执行指令的非瞬态计算机可读存储介质,当通过服务器中的处理器执行上述可执行指令时,使得该处理器执行用于对到客户端设备的图形信息的基于导航的预取发送进行控制的方法,所述图形信息包括从第二视区可看见而从第一视区不可见的第一图形信息集合,并且所述图形信息包括从第二视区可看见而从第一视区不可见的第二图形信息集合,所述第二图形信息集合的细节层次低于所述第一图形信息集合的细节层次。该方法包括确定第一时间段,在所述客户端设备被调度为访问所述客户端设备上的所述第一图形信息集合之后,所述第一图形信息集合将要在所述第一时间段期间到达。该方法还包括在所述第一时间段期间发送所述第二图形信息集合。该方法还包括在所述第一时间段期间向所述客户端设备发送指令,所述指令包括用于引起对包括所述第二图形信息集合的投影的视口区中的至少一个模糊对象的渲染的指令。
在示例性实施方式中,一种在服务器上执行的用于向客户端设备发送可渲染的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区不可见的至少第一图形信息集合、和从第三视区可见而从第一视区不可见的至少一个第二图形信息集合。该方法包括使用从所述客户端设备接收的数据来确定视点位置从所述第一视区变化到所述第二视区的第一概率,所述接收的数据包括用于控制视点位置的用户输入。该方法还包括使用从所述客户端设备接收的数据来确定视点位置从所述第一视区变化到所述第三视区的第二概率,所述接收的数据包括用于控制视点位置的用户输入。该方法还包括根据所述第二视区到限定的导航路径的距离的函数来增加所述第一概率。该方法还包括根据所述第三视区到限定的导航路径的距离的函数来增加所述第二概率。该方法还包括以第一速率发送所述至少一个第一图形信息集合,所述第一速率是根据所述第一概率的函数确定 的。该方法还包括以第二速率发送所述至少第二图形信息集合,所述第二速率是根据所述第二概率的函数确定的。
在示例性实施方式中,一种向客户端设备发送可渲染的图形信息的系统,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合、和从第三视区可看见而从第一视区看不见的至少一个第二图形信息集合。该系统包括具有处理器的服务器,所述处理器被配置成使用从所述客户端设备接收的数据来确定视点位置从所述第一视区变化到所述第二视区的第一概率,所述接收的数据包括用于控制视点位置的用户输入。该处理器还被配置成使用从所述客户端设备接收的数据来确定视点位置从所述第一视区变化到所述第三视区的第二概率,所述接收的数据包括用于控制视点位置的用户输入。该处理还被配置成根据所述第二视区到限定的导航路径的距离的函数来增加所述第一概率。该处理器还被配置成根据所述第三视区到限定的导航路径的距离的函数来增加所述第二概率。该处理器还被配置成以第一速率发送所述至少一个第一图形信息集合,所述第一速率是根据所述第一概率的函数确定的。该处理器还被配置成以第二速率发送所述至少一个第二图形信息集合,所述第二速率是根据所述第二概率的函数确定的。该系统还包括被配置成显示所述至少一个第一图形信息集合和所述至少一个第二图形信息集合的所述客户端设备。
在示例性实施方式中,一种其上存储有可执行指令的非瞬态计算机可读存储介质,当通过服务器中的处理器执行上述可执行指令时,使得该处理器执行用于向客户端设备发送可渲染的图形信息的方法,所述图形信息包括从第二视区可看见而从第一视区看不见的至少一个第一图形信息集合、和从第三视区可看见而从所述第一视区看不见的至少一个第二图形信息集合。该方法包括使用从所述客户端设备接收的数据确定视点位置从所述第一视区变化到所述第二视区的第一概率,所述接收的数据包括用于控制视点位置的用户输入。该方法还包括使用从所述客户端设备接收的数据确定视点位置从所述第一视区变化到所述第三视区的第二概率,所述接收的数据包括用于控制视点位置的用户输入。该方法还包括根据所述第二视区到限定的导航路径的距离的函数来增加所述第一概率。该方法还包括根据所述第三视区到限定的导航路径的距离的函数来增加所述第二概率。该方法还包括以第一速率发送所述至少一个第一图形信息集合,所述第一速率是根据所述第一概率的函数确定的。该方法还包括以第二速率发送所述至少一个第二图形信息集合,所述第二速率是根据所述第二概率的函数确定的。
附图说明
图1是示出了使用枢转和扫描方法通过多边形网格对象和凸状视单元形成的一阶楔形的一般组织构造的示例性流程图。
图2是示出了视单元和两个简单的多边形网格A和B以及从视单元看的两个一阶轮廓边(边A1和边B1(其被分割成段B10和段B1V))的示例性立体图。
图3是示出了用于识别从区看(在该情况下从视单元看)的一阶轮廓边的方法的示例性流程图。图3示出了图1中的步骤110的细节。
图4A是示出了用于构造入射在网格轮廓边上的SV-ME支撑多边形的方法的示例性流程图。图4A给出了在图1的步骤116中示出的处理的附加细节。
图4B示出了网格对象M1、视单元和具有它们各自的枢转角的两个候选支撑多边形。
图4C示出了用于确定形成在一阶轮廓边和视单元顶点之间的多边形是否为支撑多边形的测试的示例性流程图。
图4D1是示出了具有一致的顶点排序的两个网格多边形的示例性图。
图4D2是示出了具有不一致的顶点排序的两个网格多边形的示例性图。
图5A是示出了用于构造入射在内部角网格轮廓顶点上的SE-MV扫描三角形的方法的示例性流程图。
图5B是图6A的继续。
图5C是示出了用于确定形成在内部角一阶轮廓顶点和视单元边之间的多边形是否为支撑多边形的测试的示例性流程图。
图6A是示出了用于根据对应的SV-ME和SE-ME支撑多边形来构造SV-ME和SE-ME楔形的方法的示例性流程图。
图6B是示出了用于根据对应的SE-MV支撑多边形构造SE-MV楔形的方法的示例性流程图。
图7A是示出了凸状视单元和非凸状多边形网格的示例性图,其中,网格的从视单元看的一阶轮廓边以粗实线示出,本图是沿着从视单元朝向 多边形网格的总体方向来看的透视图。
图7B1是示出了与图7B中的对象相同的对象的示例性图,但是其为沿着从多边形网格朝向视单元的总体方向来看的透视图。
图7B2示出了与图7B1所示的多边形网格不同的多边形网格,并且示出了网格的不是一阶轮廓边的内部角边。
图7C1是示出了一阶轮廓边A和B的支撑多边形的示例性图,其为沿着从视单元朝向网格对象的总体方向来看的透视图。
图7C2是示出了一阶轮廓边A和B的支撑多边形以及对应的源-顶点网格边(SV-ME)楔形的示例性图,其为沿着从视单元朝向网格对象的总体方向来看的透视图。
图7C3是仅示出了根据对应的支撑多边形的边的延伸来形成的SV-ME楔形的示例性图。
图7D1是示出了与图7C相同的对象的示例性图,但是本图是沿着从网格对象朝向视单元的总体方向来看的透视图。
图7D2是示出了与图7C1相同的对象的示例性图,但是本图是沿着从网格对象朝向视单元的总体方向来看的透视图。
图7D3是示出了与图7C2相同的对象的示例性图,但是本图是沿着从网格对象朝向视单元的总体方向来看的透视图。
图7D4是示出了与图7D3相同的多边形网格和视单元并且示出了在一阶轮廓周线的外部角顶点处相交的两个枢转楔形的隐藏图。
图7D5是示出了与图7D4相同的多边形网格和视单元以及限制的枢转楔形的隐藏图,但是是以不同的视角。
图8A1是示出了由标记为A和B的一阶轮廓边共有的内部角顶点上的扫描三角形(SE-MV支撑多边形)的示例性图。本图是是沿着从视单元朝向多边形网格对象的总体方向来看的透视图。
图8A2是示出了由标记为A和B的一阶轮廓边共有的内部角顶点上的扫描三角形(SE-MV支撑多边形)和对应的SE-MV楔形的示例性图。本图是沿着从视单元朝向多边形网格对象的总体方向来看的透视图。
图8A3是示出了由标记为A和B的一阶轮廓边共有的内部角顶点以及对应的SE-MV楔形的示例性图。本图是沿着从视单元到多边形网格对 象的总体方向来看的透视图。
图8A4是示出了入射在轮廓边A和B上的一阶楔形(包括两个SV-ME楔形和单个SE-MV楔形)的示例性图,所有楔形在标记为ICSV的内部角轮廓顶点处相交。本图是沿着从视单元到多边形网格对象的总体方向来看的透视图。
图8B1是示出了与图8A1相同的对象的示例性图,但其是沿着从网格对象朝向视单元的总体方向来看的透视图。
图8B2是示出了与图8A2相同的对象的示例性图,但其是沿着从网格对象朝向视单元的总体方向来看的透视图。
图8B3是示出了与图8A3相同的对象的示例性图,但其是沿着从网格对象朝向视单元的总体方向来看的透视图。图8B4是示出了与图8A4所示的对象相同的对象的图,但是来自沿着从网格朝向视单元的总体方向看去的透视图
图8A4示出了入射在轮廓边A和B上的一阶楔形(包括两个SV-ME楔形和单个SE-MV楔形)的示例性图,所有这些楔形在标记为ICSV的内部角轮廓顶点处相交。本图是沿着从多边形网格朝向视单元的总体方向来看的透视图。
图8C是示出了入射在轮廓边A和B上的一阶阴影边界的示例性图,其是沿着从视单元朝向网格对象的总体方向来看的透视图。
图9A是示出了由现有技术的Teller(1992)方法构造的入射在轮廓边A和B上的一阶阴影边界的示例性图,其是沿着从视单元朝向网格对象的总体方向来看的透视图。
图9B是示出了与图9A相同的对象的示例性图,其是沿着从网格对象朝向视单元的总体方向来看的透视图。
图9C是示出了由本方法产生的比通过现有技术的Teller方法产生的阴影边界更加完全阴影边界的示例性图,本图是沿着从视单元朝向网格对象的总体方向来看的透视图。
图9D是示出了与图9C相同的对象的示例性图,但是其是沿着从网格对象朝向视单元的总体方向来看的透视图。
图10A是示出了由对于若干相邻的一阶轮廓边的UBP的相交形成的阴影边界面的一些附加UBP的示例性图,本图是沿着从视单元朝向网格对象的总体方向来看的透视图。
图10B是与图10A相同的多边形网格和视单元的视图,但是示出了 形成PAU的UBP集合。
图11A是示出了在复合轮廓周线的情况下由本枢转与扫描方法生成的一阶可见性事件表面(楔形)的示例性图。
图11B是与图11A所示的结构相同的结构的不同视图。
图12A是示出了用于识别可见性图中具有高有效静态遮挡(ESO)的从视单元看被遮挡的区域的方法以及保守地简化被遮挡的边界和对应的网格轮廓边两者的处理的示例性流程图。
图12B是图12A的继续。
图12C是图12B的继续。
图12D是示出了视单元和两个多边形网格的3D隐藏线图。
图12E是示出了与图12D的立体图相同的立体图并且包括遮挡区和对应的遮挡边界的3D隐藏线图。
图13A示出了标记轮廓边方法所采用的示例性数据结构。
图13B是图13A的继续。
图13C是图13B的继续。
图13D是图13B的继续。
图14A示出了示例性简单遮挡物。
图14B示出了当从连接的视单元A和视单元B看时由(图14A的)简单遮挡物形成的示例性遮挡增量区(DR)。
图15示出了除了以下所述之外与图14B所示的统一从区域看的可见性图相同的统一从区域看的可见性图:“遮挡区视单元A”的位于“遮挡区视单元B”外部的部分被标记为DROBA(从B到A的遮挡的增量区)和DREAB(从A到B的暴露的增量区)。
图16A是示出了使用标记轮廓周线的数据结构来识别轮廓周线的边和顶点的方法的示例性流程图。
图16B是图16A的继续。
图17A是示出了用于对从视单元A到视单元B的过渡的可见性差增量区进行识别的方法的示例性流程图。
图17B是图17A的示例性继续。
图16A是示出了使用标记轮廓周线的数据结构来识别轮廓周线的边和顶点的方法的示例性流程图。
图16B是图16A的继续。
图17A是示出了用于对从视单元A到视单元B的过渡的可见性差增量区进行识别的方法的示例性流程图。
图17B是图17A的示例性继续。
图17C是图17B的示例性继续。
图17D是图17C的示例性继续。
图18A是示出了使用单个周线的标记轮廓周线信息来快速地在运行时构造可见性图遮挡边界段的方法的示例性流程图。
图18B是图18A的继续。
图19A是示出了构造从标记轮廓周线的单个轮廓边导出的可见性图遮挡边界段的方法的示例性流程图。
图19B是图19A的继续。
图20是示出了对使用根据预存储的标记轮廓周线构造的ROI边界来构造可见性图ROI的运行时处理进行控制的处理的示例性流程图,其中ROI边界限定划界遍历ROI的简化的、暗示的、运行时3D网格遍历处理。
图21是使用简化的、暗示的、运行时3D网格遍历处理来根据预存储的标记轮廓周线信息和ROI的连接组件的种子三角形列表来构造ROI的主处理。
图22是示出了将与特定视单元过渡的新近露出的网格元素对应的增量G+子网格附接至对应的标记轮廓周线的起始边界的方法的示例性流程图。
图23是示出了露出时间对人类主体分辨空间细节的能力的影响的示例性图。
图24A是示出了对包括可渲染的数据的可见性事件数据分组的内容流进行控制的方法的示例性流程图。
图24B是示出了使用客户端单元与服务器单元之间的双向通信来控制可见性事件数据流的方法的进一步的细节的示例性框图/流程图。
图25A是示出了包括摩托和广告牌两个建筑物的建模环境的俯视正投影图的示例性图,其为隐藏线图。
图25B是示出了与图25A所示相同的建模环境的示例性图,但是为透视图。
图26A是示出了与图25A和图25B所示相同的建模环境的俯视正投影图并且包括视单元阵列的示例性图。
图26B是示出了与图26A相同的建模环境的示例性图,但是为透视图。
图26C是示出了与图26A相同的建模环境的俯视正投影图并且包括两个示例性相机/视点运动路径的示例性图,其中在客户端用户的交互控制之下将一个脚本化的相机/视点运动路径变化到相机/视点运动路径。
图26D是示出了与图26C相同的建模环境的透视图并且包括两个示例性相机/视点运动路径的示例性图,其中在客户端用户的交互控制之下将一个脚本化的相机/视点运动路径变化到相机/视点运动路径。
图26E是示出了与图26D相同的建模环境的相同透视图并且包括三个示例性相机/视点运动路径的示例性图,其中在客户端用户的交互控制之下将一个脚本化的相机/视点运动路径变化到相机/视点运动路径,并且第三相机/视点运动路径实现从交互运动路径到预脚本运动路径的再同步。
图27A是示出了用于传递为未编码数据的交互内容并且对客户端单元进行可见性事件编码的方法的示例性框图/流程图。
图27B1是示出了包括用于要由客户端单元完成的可见性事件预计算工作的工作指令的数据结构的示例性实施方式的图。
图27B2是示出了包括用于由客户端单元完成并且发送至服务器单元的可见性事件预计算的完成工作数据的数据结构的示例性实施方式的图。
图27B3是示出了包括对与由客户端单元完成的可见性事件预计算的具体完成的工作分组对应的工作证明令牌进行描述的信息的数据结构的示例性实施方式的图。
图28A是示出了在作为服务器与客户端单元之间的可用传输带宽的函数的相对的细节层次上对可见性事件分组进行编码的方法的示例性流程图。
图28B是示出了在作为客户端单元的渲染性能的函数的相对的细节层次上对可见性事件分组进行编码的方法的示例性流程图。
图28C是示出了取决于服务器与客户端单元之间的可用传输带宽对作为直接几何表示或参数表示的可见性事件分组进行编码的的方法的示例性流程图。
图29是示出了对所高速缓存的可见性事件和可以存储在客户端单元上的PVS数据的量进行控制的方法的示例性流程图。
图30是示出了对包括几何信息、纹理信息或生成几何或纹理信息的指令的可见性事件分组进行流处理的方法的示例性流程图,其中可见性事件信息表示在广播流处理交互媒体数据流的低带宽请求时间段期间的广告和目标广告。
图31是示出了对包括几何信息、纹理信息或生成几何或纹理信息的指令的可见性事件分组进行流处理的方法的示例性流程图,其中可见性事件信息表示完全交互可见性事件数据流的低带宽请求时间段期间的广告和目标广告。
图32A是示出了对几何或纹理信息或生成几何或纹理信息的指令进行流处理的方法,其中上述信息或指令表示在对交互媒体数据流进行流处理的低带宽请求时间段期间广告和目标广告,并且示出了进出单独的网站服务器的广告/高速缓存仓库信息信息的示例性双向传输的示例性框图/流程图。
图32B是图32A的继续。
图33A是对几何或纹理信息或生成几何或纹理信息的指令进行流处理的方法的示例性框图/流程图,其中上述信息或指令表示在使用基于由处于客户端用户的交互控制下的视点运动驱动的可见性事件数据的基于导航的预取来对可见性事件数据进行流处理的低带宽请求时间段期间的广告或目标广告。
图33B是图33A的继续。
图34是示出了集成到游戏引擎软件模块的可见性事件编解码器的一种实施方式的示例性框图/流程图。
图35A是示出了可见性事件内容服务器和单独的可见性事件广告或将广播SIM内容和唯一目标广告或高速缓存仓库对象传递到多个客户端 单元的示例性框图/流程图。
图35B是示出了图35A所示的相同可见性事件内容服务器的示例性框图/流程图,但是是以不同的操作状态,其中选择了客户端单元之一来接收完全交互内容流并且仍然接收目标广告对象或高速缓存仓库对象。
图35C是示出了针对从可见性事件解码器-服务器接收唯一完全交互性交互性可见性事件内容流来对可见性事件客户端[1]的用户进行收费的方法并且化示出了针对传递高速缓存仓库对象来对客户端用户收取附加费用的方法的示例性框图/流程图。
图36A是示出了在给定当前视点位置以及速度和加速度向量的当前状态的情况下确定要穿透视单元的概率的技术的示例性流程图。
图36B是表示对于相对视点速度向量的有限集合的视单元的相邻面连接的视单元的穿透概率的查找表的示例性子表。
图37是示出了在可能的延迟到达期间自适应地施加导航限制的方法的示例性流程图。
图38是示出了当实际视点位于车行道或其它路径上或附近时通过优选地预取与位于上述路径上的视单元/导航单元对应的VE分组来减小可见性事件(VE)分组流处理的带宽需求的替代方法的示例性流程图。
图39A是示出了施加导航限制以防止延迟分组到达的示例性流程图,其中,所施加的导航限制伴随有隐形损失的虚拟表示并且导航限制是由该隐形损失而导致的。
图39B1是相应地示出了给客户端用户延迟可见性事件分组到达的概率表示的隐形仪表的示例性图。
图39B2是示出了给客户端用户延迟可见性事件分组到达的概率表示的使用连贯性仪表的示例性图。
图40A是示出了与第一当前相机/视点位置的所高速缓存的可见性事件分组对应的视单元的示例性建模环境俯视正投影图。
图40B是示出了与第二当前相机/视点位置的所高速缓存的可见性事件分组对应的视单元的示例性建模环境俯视正投影图。
图40C是示出了图40A的相同对象的示例性立体图。
图40D是示出了图40B的相同对象的示例性立体图。
图40E是图40D所示的相同立体图,并且包括表示减小了的可导航性的阴影线地面区。
图40F是图40E所示的相同的建模环境的相同立体图,但是没有图40E所示的阻碍可航性的区并且示出了不同的可见性事件高速缓存仓库。
图41是示出了使用DeltaGplussubmesh示例性数据结构来存储可见性事件子分组的数据结构的示例性图。
图42A是示出了将每个可见性事件分组分成子分组的该方法的变型的示例性流程图,其中每个子分组包括在对应的视单元过渡期间变得可见的图形元素(例如,多边形和纹理元素)的特定子集。
图42B是示出了通过将所有可用的可见性事件流与处理资源用于在最短的可能时间内完成当前视单元的PVS的方法的示例性流程图。
图43是示出了在预测延迟分组到达当前情况下发送降低了的细节层次的可见性事件信息的服务器处理和使用模糊滤波器或模糊对象来渲染该降低了的细节层次的图形信息的客户端处理的示例性框图/流程图。
图44是示出了可见性事件服务器在预取模式下发送与父-父视单元过渡对应并且包括标记轮廓周线(或所存储的遮挡边界信息)的由客户端处理使用的可见性事件分组以生成子PVS数据;以及相同的可见性事件服务器在需求模式下使用标记轮廓周线信息(或遮挡边界信息)来生成较小的子PVS或PVS增量分组并且传输上述较小分组的示例性框图/流程图。
图45A是示出了在图44中示出的解码器-服务器处理的附加细节的示例性框图/流程图。
图45B是示出了在图44中示出解码器-客户端处理的附加细节的示例性框图/流程图。
图46是示出了可见性事件数据的基于导航的预取方法的示例性框图/流程图,其中预取是由真实环境中的客户端单元位置来驱动的,该位置由GPS(或其它定位形式)确定或由3D地图匹配方法来计算。
图47是示出了即使当与主服务器的通信链接丢失时通过其来维护可见性事件数据流的处理的示例性流程图。
图48是示出了前向部署的侦察资产车辆在实际环境中获取3D数据,将该数据传输至可见性事件编码器以及基于攻击资产在实际环境中的移动来将所编码的可见性事件数据流处理至交战或攻击资产的示例性框图/ 流程图。
图49A是示出了获取实际环境的三维表示并且将该表示作为可见性事件数据发送至编码器以进行编码的两个侦察资产的示例性立体图。
图49B是示出了接收表示实际环境的可见性事件数据流并且在用于自治导航的高效3D地图匹配SLAM解决方案中使用该可见性事件数据的自治导航/攻击资产的示例性立体图。
图50示出了示例性处理器图。
具体实施方式
本说明书公开了对包括PVS增量或可见性事件数据分组(包含几何、纹理和其它可渲染图形信息)的内容流进行控制及利用的方法。该可见性事件数据由解码器-服务器处理来传递并且由解码器-客户端接收并将其处理为精度控制的PVS(可见实体集合)。所得到的PVS数据由与客户端单元相关联的渲染处理来有效地渲染。在本说明书的环境中,可渲染的图形信息包括3D图形基元,其包括多边形和其它面,渲染处理根据这些多边形和其它面生成图像信息。
在一些实施方式中,使用如在以下文献中所公开的保守线性化阴影事件表面:题为“System and Method of From-Region Visibility Determination and Delta-PVSBased Content Streaming Using Conservative Linearized Umbral Event Surfaces”的PCT专利申请第PCT/US2011/042309号(其全部内容通过应用合并到本申请中),在从区域看的可见性预计算的方法的编码处理中生成所采用的可见性事件分组。
在示例性实施方式中,术语视单元或视区指可以表示为多边形网格的多面体,其描述了限制视点的区域。除非另外指出,否则在本说明书中假设视单元和视区为凸状。可以将视单元限制为平行六面体,而没有必要对视区进行如此限制。
在示例性实施方式中,术语PVS(可见实体集合)是指从视单元可看见的多边形或多边形的分段的集合。一般地,将PVS计算为保守的,包括可看见的全部多边形或多边形分段以及一些不可见的多边形或多边形分段。
在示例性实施方式中,术语楔形(还参见CLUES)是指由视单元的 特征(顶点或边)和网格多边形的顶点或边来形成的可见性事件表面。一般地,楔形限定从视单元的特征看的可见性,并且穿过网格多边形的顶点或边。
不连续性网格化的现有技术所采用的楔形是精确的。这些边可以是平面或二次曲面。不连续性网格文献中所描述的平面楔形具有两种类型,重名如下:
1)SV-ME楔形—由视单元(或“源”)的顶点和网格的边构成。也称为枢转楔形或支撑顶点楔形。
2)SE-MV楔形—由视单元的边和多边形网格的顶点构成。也称为扫描楔形或支撑边楔形。
3)SE-MV楔形—在网格轮廓边与支撑视单元轮廓边平行的特定情况下形成。
这些定义假设正投影(即,使用视单元作为光源)。在背投影方法中,使用轮廓边或轮廓边的段作为“源”,并且源边与视单元之间的轴中的各轮廓边支撑背投影事件表面。除此之外,上述定义对于背投影情况是相同的。
由于在不连续性网格化中采用的楔形通常用于识别源半影的组件,因而它们构造在被称为从视单元看的轮廓边的相对大量的多边形网格边上。
由于在不连续性网格化中使用的平面楔形是精确的事件表面,因而在从楔形的多边形网格特征看去楔形的视单元特征(顶点或边)被遮挡的区域上没有限定它们。楔形的该限定在平面事件表面中产生了“间隙”,使得表面不连续。在完全不连续性网格化方法中,使用可以为二次曲面楔形的高阶可见性事件表面来填充上述间隙。利用这些高阶事件表面填充上述间隙,从而获得通常连续的可见性事件表面。
实施方式还采用平面从特征看(planar from-feature)的事件表面及保守线性化阴影事件表面(CLUES),CLUES与在不连续性网格化中采用的平面楔形类似但是在重要的方面与这些楔形不同。
在不连续性网格化中使用的平面楔形与CLUES(在本说明书中也称为一阶楔形,或简单地称为楔形)之间的一个差别是:本方法所采用的楔形仅是可以形成从视单元看的阴影事件表面的那些楔形,在从视单元看的可见性中不考虑半影事件本身。本方法的楔形构造在较少的多边形网格边(称为一阶轮廓边)上,并且使用仅生成潜在的阴影事件楔形的枢转和扫 描技术来构造这些楔形。这意味着在本方法中构造的楔形的数量远远少于在不连续网格化中生成的楔形的数量。
不连续性网格化楔形与本方法的楔形之间的另一差别是:仅使用楔形的视单元特征和楔形的多边形网格特征来限定和构造本发明的楔形。省略这两个特征之间的任何居间几何图形。
该楔形构造方法基于确保构造保守、连续阴影边界的多面体环境中的可见性传播的一阶模型。
实际上,居间几何图形可能引起如下区域:对于该区域,视单元特征从多边形网格特征看被遮挡。这些区域是以下楔形区域:其中,不限定对应的不连续性网格楔形(从而,在通常由高阶楔形或二次曲面填充的事件表面中产生间隙或不连续性)。通过省略该居间几何图形,本方法构造用于限定没有间隙的连续事件表面的楔形。由于本方法的楔形是通过省略该类型的高阶遮挡来构造的,所以它们保守地表示实际的从特征看的阴影事件表面。对于其中没有居间几何图形的楔形区域,由本方法构造的楔形是精确的。
在楔形不精确的区域中,可选地,该楔形可以由使用改进的楔形构造方法构造的其它楔形来取代,其解决了由居间几何图形引起的高阶遮挡。
本方法包括三种类型的(一阶)楔形:
1)SV-ME楔形—通过延伸对应的枢转支撑多边形的边来形成。对应的枢转支撑多边形通过从多边形网格的一阶轮廓边至视单元的枢转过程由视单元的支撑顶点(SVV)和边形网格的一阶轮廓边形成。枢转支撑多边形也称为SV-ME支撑多边形或顶点支撑多边形。该类型的可见性事件表面反映了在视单元上的点处的封闭物且被网格的(轮廓)边遮挡。也称为枢转楔形。枢转处理(pivoting process)被描述成以下处理:对一阶轮廓边与视单元之间的支撑平面进行识别。虽然该过程在人来看起来是围绕轮廓边对平面的实际持续枢转直到其接触到视单元为止,但是实际上,实施方式可以对由每个候选支撑平面(由对应的视单元顶点形成)和另一多边形形成的具体的离散角进行测量。与这些角测量相比,在一种实施方式中能够从大量的候选支撑多边形中确定实际的支撑多边形。
2)SE-MV楔形—通过延伸对应的扫描支撑多边形(也简称为扫描多边形或边支撑多边形)的边来形成,扫描支撑多边形是通过沿着支撑相邻SV-ME楔形的SVV之间的支撑视单元轮廓周线(SVSC)的扫描处理由 视单元的支撑边和内部角网格轮廓顶点形成的支撑多边形。该类型的可见性事件表面反映限制在(内部角)网格轮廓顶点处的视单元的(边界)边上的封闭物。SE-MV楔形也称为扫描楔形。
3)SE-MV楔形—仅在支撑视单元边与所支撑的网格轮廓边平行的特殊情况下形成。通过延伸形成于平行的支撑视单元边与所支撑的网格轮廓边之间的对应的SE-ME支撑多边形的边来形成。不同于其它类型的平面楔形,对SE-ME楔形的楔形上可见性的确定是一个从区域看而不是从点看的可见性问题。该类型的可见性事件表面反映视单元的(边界)边处的封闭物和网格的(轮廓)边的遮挡。
在现有技术的不连续性网格化中使用的楔形与在本发明中使用的楔形之间的另一重要差别是:在本方法中,使用将楔形上的轮廓顶点限制为出现在从视单元看的一阶轮廓边上的保守方法,来确定楔形上的可见性。这确保了每个楔形上的轮廓顶点是复合轮廓顶点(CSV),两个楔形(一个对应于当前楔形)的交点。相反,在现有技术的不连续性网格化方法中,通常使用如Weiler-Atherton算法的从点看的实体空间可见性方法来精确地确定楔形上的可见性。
在示例性实施方式中,术语枢转楔形是指通过延伸枢转支撑多边形的边来形成的SV-ME楔形。
在示例性实施方式中,术语CLUES(保守线性化阴影事件表面)(参见楔形)是指使用本发明的枢转和扫描方法来构造的一阶阴影楔形的另一名称。可以重新定义这些楔形以使用本发明的背投影方法来反映高阶可见性交互。
在示例性实施方式中,术语阴影边界多边形(UBP)是指作为从视单元看的阴影体积的一部分的多边形。在本方法中,可以使用根据对应的(一阶)楔形导出的保守的UBP来构造从视单元看的阴影体积(称为多面体聚合阴影,或PAU)。
本方法所采用的楔形是从视单元特征看的阴影事件表面,其保证是仅位于支撑该楔形的网格轮廓边的紧附近中的从视单元看的阴影事件表面(从整个视单元看)。这是因为该楔形可以以将从视单元看的阴影边界限制在楔形上的方式来与超出支撑轮廓边的另一楔形相交。换言之,从所支撑的视单元特征看成切线地可看见的楔形自身可以变得从该视单元的其它部分可看见。
可以根据对应的高阶楔形来构造高阶UBP。
在示例性实施方式中,术语多边形网格是指连接的顶点、边以及由顶点和边形成的面(也称为多边形)的有限集。如果网格的两个多边形相交,则相交部的边或顶点必然是该网格的组件。不允许面互相穿透。也称为多边形网格对象、三角形网格或简称为网格。如果网格的每个边由至多两个多边形共有,则该网格是流形多边形网格。如果每个边恰好由两个面共有,则该网格是遮挡流形多边形网格。除非另外指出,在本说明书中,假设多边形网格为遮挡流形网格。
在示例性实施方式中,术语从区域看的轮廓边(通常也称为从区域看的轮廓边)是相对于诸如用作光源的视单元(或背投影情况下的多边形网格边)的区域来定义的。如果该位置是视单元,则从区域看的轮廓边可以被称为从视单元看的轮廓边。如果该区域是边,则从区域看的轮廓边可以被称为从边看的轮廓边。在本说明书中,可以将任何类型(从点看、从视单元看、从边看)的轮廓边简称为轮廓边,其中轮廓边的类型由上下文来暗示。
从视单元看的一般轮廓边是多边形网格的、作为对于视单元(或面光源)上的任何点的从点看的轮廓边的任何边。这是Nierenstein等人2005年以及Drettakis等人1994年的完全不连续性网格化方法中采用从视单元看的轮廓边的定义。
一般而言,这样的边支撑从区域看的半影事件表面,但是子集实际上支撑通常为二次曲面的从区域看的阴影事件表面。
当考虑边三元组的高阶可见性交互时,可以精确地限定从区域看的轮廓边。可替代地,如在本方法中,可以通过仅考虑由于边配对之间的交互而产生的可见性事件表面来保守地限定从区域看的轮廓边;如在可见性传播的一阶可见性模型中。
在示例性实施方式中,术语一阶轮廓边是指从视单元看的一阶轮廓边(也可以简称为一阶轮廓边),其是如下多边形网格的边:该多边形网格具有背面面对整个视单元的一个构成多边形以及正面面对该视单元的至少一个顶点的其它构成多边形,其中构成多边形相对于彼此背面面对。
该定义基于多面体环境中称为一阶可见性的可见性传播的简单保守模型,其仅考虑由于边配对之间的交互而引起的可见性事件表面。
本发明的一种实施方式采用作为流形三角形网格的多边形网格。在流 形三角形网格中,每个边恰好完全由两个三角形共有。通过使用流形三角形网格来简化一阶轮廓边的说明。
多边形网格的相对于视单元的一阶轮廓边是多边形网格的相对于视单元的局部支撑边。如果在支撑测试中仅考虑视单元和共有局部支撑边的两个构成多边形(三角形),则该边支撑该视单元与该边之间的多边形(参见支撑测试的定义)。
一般地,一阶从区域看的轮廓边是任何多边形网格的从区域看的轮廓边的精确小子集。
在本说明书中,可以将任何类型(从视单元看、从边看)的一阶轮廓边简称为一阶轮廓边,或简称为轮廓边,而轮廓边的类型则通过上下文来暗示。
在示例性实施方式中,术语一阶可见性(也称为可见性传播的一阶模型)是指从区域看的可见性传播的模型,在该模型中,从区域看的阴影事件表面入射在(一阶)可见的一阶轮廓边上并且(使用枢转和扫描方法)构造从区域看的阴影事件表面,其假设整个视区(例如,视单元)从该一阶轮廓边可看见。
可见性传播的一阶模型基于对以下保守假设的简化:如果轮廓边从视单元可看见,则该轮廓边从该视单元的所有部分可看见。该假设引出一阶轮廓边的简化定义,将其定义为以下边:对于这些边而言,一个构成三角形背面面对视单元上的所有点,并且其它构成三角形正面面对该视单元上的至少一个点,另外这些构成三角形彼此不面对。该定义实际上与从点看的轮廓边的定义相同并且反映了以下事实:一阶模型在某些重要方面实际上将视单元视为视点。
在示例性实施方式中,术语支撑多边形是指由两个结构“支撑”的支撑多边形。在本方法中,在一种情况下,多边形网格的一阶轮廓边与视单元之间的支撑多边形是由一阶轮廓边和视单元的顶点形成(SV-ME支撑多边形)。视单元的支撑该多边形的顶点被称为支撑视单元顶点(SVV)。可以通过枢转轮廓边的背面面对构成多边形的平面来识别支撑视单元顶点,其中围绕该轮廓边沿着该边的背面面对构成多边形的法线方向朝向视单元枢转直到支撑多边形的平面与视单元相交为止。一般情况下,该相交会出现在支撑视单元顶点处,支撑视单元顶点与一阶轮廓边一起形成三角形的支撑多边形。如果支撑视单元顶点是视单元的、与网格的轮廓边平行 的边的顶点,则枢转平面会与视单元的该边相交而不仅是与单个顶点相交,并且支撑多边形将为由网格轮廓边和相交的视单元边形成的四边形。该第二类型的支撑多边形称为SE-ME支撑多边形。
在本方法的另一情况下,在一阶轮廓边的内部角顶点与视单元的边之间形成不同类型的支撑多边形(SE-MV支撑多边形,也称为支撑三角形)。
在本发明的上下文中,将支撑多边形保守地限定为由一阶轮廓边(也称为局部支撑边)、或其顶点以及对应的视单元来支撑,忽略一阶轮廓边与视单元之间的任何遮挡或干扰。按照本发明所限定的,如果支撑多边形与一阶边和视单元之间的几何图形相交,则按照现有技术中的定义(如果这样的干扰存在,则其一般不允许定义支撑多边形),该支撑多边形不是支撑多边形。
按照现有技术中的定义,如果多边形由一个结构的顶点或边以及另一结构的顶点或边支撑而不与任何结构相交,则该多边形会通过两个结构之间的“支撑测试”(即,是支撑多边形)。该支撑测试还要求被支撑多边形在远离第一被支撑对象(例如,视单元)的方向上的延伸(例如,该延伸是“楔形”)也不以如下方式与该另一被支撑结构(例如,多边形网格)相交:该延伸位于另一被支撑结构的“内侧”(例如,位于流形网格的拓扑“内侧”上)。该支撑测试有效地要求支撑边为结构(例如,多边形网格)的“外侧”边,与诸如多边形网格的结构的、不与该结构成切线地支撑支撑多边形的“内侧”边或反射边相反,该结构的“外侧”边将与该结构成切线地支撑支撑多边形。
在本方法中,通过在确定网格的由多边形共有的边是否支撑视单元与网格之间的保守支撑多边形(即,该边是否是“局部支撑”边或一阶轮廓边,参见一阶轮廓边和局部支撑边的定义)时仅将共有该边的多边形包括在内来以更加受限的方式来使用该支撑测试。
在强调支撑多边形的本保守定义区分与支撑多边形的现有技术定义之间的差别的情况下,可以将按照本发明定义的支撑多边形称为保守支撑多边形。否则,将在本发明中定义的保守支撑多边形简称为支撑多边形。
按照在本发明中的定义,根据(保守)支撑多边形导出的楔形总是形成能够与网格多边形相交的连续保守线性化阴影事件表面,以保守地确定从视单元可看见的网格多边形(或其片段)的集合,而不需要通常主导精确解(和使精确解复杂化)的二次曲面。
在示例性实施方式中,关于术语保守支撑多边形,参见上述术语支撑多边形。
在示例性实施方式中,术语支撑测试是指:如果多边形由一个多边形结构的顶点或边和另一多边形结构的顶点或边支撑而不与任何其它结构相交,则该多边形会通过这两个结构之间的“支撑测试”(即,是支撑多边形)。支撑测试还要求支撑多边形在远离第一被支撑对象(例如,视单元)的方向上的延伸(例如,该延伸是“楔形”)也不以如下方式与另一个被支撑结构(例如,多边形网格)相交:该延伸位于另一被支撑结构的“内侧”(例如,位于流形网格的拓扑“内侧”上)。该支撑测试有效地要求支撑边为结构(例如,多边形网格)的“外侧”边,与诸如多边形网格的结构的、不与该结构成切线地支撑支撑多边形的“内侧”边或反射边相反,该结构的“外侧”边将与该结构成切线地支撑支撑多边形。
在本方法中,通过在确定网格的由多边形共有的边是否支撑视单元与网格之间的保守支撑多边形(即,该边是否是“局部支撑”边或一阶轮廓边,参见一阶轮廓边和局部支撑边的定义)时仅将共有该边的多边形包括在内来以更加受限的方式来使用该支撑测试。
在强调支撑多边形的本保守定义区分与支撑多边形的现有技术定义之间的差别的情况下,可以将按照本发明定义的支撑多边形称为保守支撑多边形。否则,将在本发明中定义的保守支撑多边形简称为支撑多边形。
在示例性实施方式中,术语支撑视单元轮廓周线(SVSC)是指从网格轮廓边的内部角顶点看的、视单元轮廓周线的产生最极端阴影边界的部分。SVSC是从视单元轮廓透过内部角网格轮廓顶点看时视单元轮廓周线的产生最少遮挡的部分。SVSC还是当经受扫描操作时产生SE_MV楔形的周线,SE_MV楔形与所连接的SV-ME楔形具有一致取向并且形成连续表面。支撑视单元轮廓周线在与产生内部角顶点的网格轮廓边对应的两个SVV之间延伸。
SE-MV楔形是借助视单元面上的包含(containment)来反映网格轮廓顶点处的可见性限制的定向可见性事件表面。
相反,SV-ME楔形是借助于由网格多边形在轮廓边处引起的(从视单元看)遮挡来反映网格轮廓边处的可见性限制的取向可见性事件表面。
SVSC是产生具有与相邻SV-ME楔形的取向一致的取向的对应SE-MV楔形的(从网格轮廓边看的)视单元轮廓边的集合;从而在网格 轮廓顶点处产生连续保守一致取向的阴影事件表面。
对于术语扫描三角形,参见扫描多边形。
在示例性实施方式中,术语扫描多边形(也称为扫描支撑多边形或扫描三角形)是指位于多边形网格的一阶轮廓边的非凸出角(或“内侧”)处的可见性事件边界,其不仅通过延伸由构成内部角的轮廓边支撑的那些支撑多边形来形成,而且还可以由作为不同类型的支撑多边形的一个或更多个扫描多边形形成,其中,这些支撑多边形形成在网格轮廓边的内部角顶点与视单元的作为从网格对象的内部角轮廓顶点的视角来看为从点看去的轮廓边的某些边之间。视单元的这些从点看去的轮廓边在与网格对象的内部角边对应的SVV之间形成周线链(极端或支撑视单元轮廓周线)。针对该链的每个边“扫描”多边形(三角形),从而形成扫描多边形。对这些扫描多边形的边进行延伸以形成SE-MV或扫描楔形,SE-MV或扫描楔形还促成网格轮廓周线的内部角处的一阶可见性事件表面。
在示例性实施方式中,术语扫描楔形是指通过延伸扫描支撑多边形的边形成的SE-MV楔形。
在示例性实施方式中,术语简单轮廓周线是指由属于单个网格对象的共有顶点连接的轮廓边链。也称为简单周线。
在示例性实施方式中,术语复合轮廓周线是指包括由共有顶点连接的或由如下顶点连接的轮廓边的轮廓边链:这些顶点由来自一个周线的楔形/UBP与非相邻的轮廓边的相交形成。在对平滑流形的研究中,将这种相交称为t接头(参见Durand、Fredo在格勒诺布尔大学的博士毕业论文)。
在示例性实施方式中,也将术语T接头称为复合轮廓顶点(CSV),参见复合轮廓周线。
在示例性实施方式中,术语CSV(复合轮廓顶点)是指楔形与轮廓边的交点。针对一阶实施,楔形是一阶楔形并且轮廓边是一阶轮廓边。从拓扑方面来讲,CSV与从区域看的复合轮廓周线的保守限定的t顶点对应。通常,复合轮廓周线的内部角出现在CSV处。
在示例性实施方式中,术语ESO(有效静态遮挡)是指与位于可见性图的被遮挡区域内的多边形(原始网格)的数量和/或这些网格多边形的表面积成一定正比的度量。ESO还与在围绕该被遮挡区域的可见区域中所引入的新多边形的数量成一定反比,该新的多边形是由于遮挡边界边引起的重新三角化而导致的。在对VM或统一VM的保守简化中使用该 度量。
在示例性实施方式中,术语EDO(有效动态遮挡)是指与遮挡增量区域(DR)中被遮挡的多边形的数量和/或这些多边形的表面积成一定正比的度量,其中DR表示在特定的视单元过渡期间所产生的遮挡区域。ESO还与在围绕DR的可见区域中引入的新多边形的数量成一定反比,该新的多边形是由于遮挡边界的边引起的重新三角化而导致的。
在示例性实施方式中,术语EDV(有效动态可见性)是指统一的可见性图的增量区域(DR)的有效性的测量。如果DR是针对特定视单元过渡的DRO(遮挡的增量区域),则EDV对应于DR的EDO。
如果DR是DRE(露出的增量区域),则通过检查围绕遮挡的区域的ESO来确定EDV。通过简化围绕OR以及将DRE的多边形延伸到OR或DRO中来进行DRE的简化。
在示例性实施方式中,术语统一可见性图是指包括根据两个视单元(例如,A和B)生成的、从视单元看去的遮挡边界的可见性图,其中上述视单元以下面两种方式之一相关:1)一个视单元完全被包含在另一视单元中,或2)上述视单元完全共有公共面。统一可见性图是VM区的布置,以使得针对从视单元A到视单元B的过渡,一些区域包括新近被遮挡的网格三角形/片段而其它区域包括新近露出的网格三角形/片段。使用统一可见性图来构造用于直接存储的PVS数据增量。可替代地,统一可见性图可以用于识别明显遮挡或明显轮廓周线,其能够被标记并且随后用于生成G增量/PVS增量数据。
在一些实施方式中,术语可见性事件分组是指在一些实施方式中包括如下项的数据分组:PVS数据增量、被标记的明显遮挡轮廓周线信息、所存储的遮挡边界信息和/或PVS数据。
在一些实施方式中,可见性事件分组包括其它可见性事件信息。在一些实施方式中,可见性事件分组包括可见性事件信息。在本说明书中,可见性事件信息也称为可见性事件数据。
在一些实施方式中,术语移动阈值是指实际或预测的相机/视点位置从一个视区变化到另一视区的概率的特定预定阈值。例如,当视点从第一视点变化到第二视点的概率(即,可能性)超过移动阈值时,可以向客户端设备发送附加信息。
在一些实施方式中,术语带宽阈值是指服务器与客户端单元之间的可 用传输带宽的预定阈值。例如,当可用带宽小于带宽阈值时,可以向客户端设备发送较低细节层次的信息。
图2示出了可见性传播的一阶模型的基本方面。在本说明书的具体实施方式部分给出了后续的细节。
图2是示出了视单元和两个简单多边形网格A和B的图。
图2还示出了两个从视单元看去的一阶轮廓边:边A1和边B1(其被细分成段B10和B1V)。
现在对入射在这些一阶轮廓边上的保守线性化阴影事件表面(CLUES)的构造进行描述。在下面的讨论中,从限定从视单元的单个特征(一般为支撑视单元顶点或边)看去的可见性的意义上来讲,所构造的阴影事件表面与不连续性网格楔形类似。在本说明书的后续部分中,示出了可以使用这些楔形来构造保守线性化从视单元看去的可见性图(VM),其中,根据VM能够导出PVS。
图2示出了视单元以及网格对象A和网格对象B。在一些实施方式中,视单元是具有八个顶点的三维(3D)立方体。例如,图2中的视单元是具有顶点V1-V8的立方体。在其它实施方式中,视单元是任何期望的凸多面体。网格A的边被标记为具有顶点A1_0和顶点A1_1的A1。网格B的边被标记为两个段:B1O和B1V。相对于一阶轮廓边A1,由于B1V位于事件表面“楔形1”的未遮挡侧,因而段B1V从支撑视单元顶点SVV1可看见,其中,楔形1形成在边A1与对应于视单元V8的对应支撑视单元顶点SVV1之间。关于这一点,由于入射在一阶轮廓边A1上的背面平面沿着顺时针方向朝向视单元V8枢转以确定对应的支撑视单元顶点,因而B1V位于“楔形1”的未遮挡侧上。从而,在一些实施方式中,入射在一阶轮廓边上的背面平面朝向视单元顶点枢转的方向指示由视单元顶点支撑的事件表面的未遮挡侧。背面平面枢转的相反方向指示由视单元顶点支撑的事件表面的遮挡侧。
相对于一阶轮廓边A1,由于B1O位于事件表面“楔形1”的被遮挡侧上,因而段B1O从支撑视单元顶点SVV1看去被遮挡,其中,楔形1形成在边A1与对应的支撑视单元顶点SVV1之间。
标记为“楔形1”的一阶可见性事件表面位于边A1与视单元之间的支撑平面中。边A1与视单元之间的支撑多边形SP1是由边A1的顶点A1_0和顶点A1_1以及标记为SVV1的视单元顶点形成的三角形(标记为SP1)。
根据一些实施方式,如下形成入射在边A1上的一阶可见性事件表面“楔形1”:对于对应支撑多边形(SP1)的、入射在边A1的顶点A1_0和顶点A1_1上的两条边进行延伸。该延伸以A1的顶点A1_0和顶点A1_1为起点,沿着远离视单元的方向半无限地进行。两条延伸的射线被连接至边A1的顶点A1_0和顶点A1_1以形成标记为“楔形1”的半无限的阴影可见性事件表面。由于“楔形1”实际上远离视单元半无限地延伸,因而在图2中仅示出了“楔形1”的一部分。在一些实施方式中,事件表面的平面由诸如ax+by+cz.=0的3D平面等式表示。
因此,在一些实施方式中,为了形成入射在一阶轮廓边和视单元顶点上的(从视单元看去的)一阶可见性事件表面,首先构造轮廓边与视单元之间的支撑多边形。该构造与对轮廓边进行的如下枢转操作类似:该枢转操作沿着远离背面面对构成多边形并且朝向视单元的方向进行,直至碰到支撑视单元特征(边或顶点)为止。在一些实施方式中,通过远离视单元延伸该支撑多边形的非轮廓边来形成楔形。
如在图2中示出的,事件表面“楔形1”与边B1相交,将B1分成两段B1V和B1O,B1V相对于一阶轮廓边A1从视单元特征(视单元顶点SVV1)看去一阶可见,B1O相对于一阶轮廓边A1从SVV1看去一阶不可见。“楔形1”与一阶轮廓边B1(由段B1O和B1V组成)在标记为CSV的点处相交。该点为复合轮廓顶点。
出于说明的目的,现假设段B1V位于由网格A的边和“视单元”的特征所形成的所有一阶可见性事件表面的未被遮挡侧。在这种情况下,B1V位于由一阶楔形与网格多边形以及彼此之间的相交部形成的一阶多面体聚合阴影(PAU)的外部(在未被遮挡侧)。在这些条件下,段B1V从视单元看去为一阶可见。
如果段B1V从视单元看去为一阶可见,则在一阶可见性模型的保守假设下,假定段B1V从视单元的任何部分看去可见。因此,通过前述的枢转操作构造入射在段B1V上的一阶可见性事件表面,该枢转操作在段B1V与标记为SVV2的支撑视单元顶点之间生成支撑多边形(SP2)。如在图2中示出的,支撑多边形SP2由段B1V的顶点和视单元顶点V3(SVV2)限定。再次采用前述的延伸支撑多边形的方法。所得到的入射在BV1上的一阶可见性事件表面被标记为“楔形2”。
因为在这种情况下对应的支撑视单元顶点SVV1实际上从被支撑的一阶轮廓边A1可看见,因此“楔形1”是入射在边A1上的完全可见性 事件表面。
“楔形2”不是通过B1V的完全可见性平面,这是因为以非常特殊的方式违反了一阶可见性模型的保守假设:对应的支撑视单元顶点SVV2从所支撑的一阶轮廓边B1V看去实际上是不可见的,当从该边观察时,SVV2被遮挡。
使用对支撑视单元顶点的从轮廓边看去的可见性进行测试的2D可见性测试,可以确定入射在该轮廓边上的任何一阶可见性事件表面(例如,楔形)的精确度(exactness)。在一些实施方式中,如果支撑视单元特征是顶点,则这是从点看去的可见性测试,其与对一阶轮廓边的从对应的支撑视单元顶点(SVV)看去的可见性进行的测试等同。根据一些实施方式,一阶轮廓边的从对应的SVV看去可见的段支撑完全可见性事件表面,并且一阶轮廓边的从对应的SVV看去被遮挡的段支撑不完全/保守的可见性事件表面。
在轮廓边平行于支撑视单元边的特殊情况下,需要特殊的从边看去的可见性测试。
实施方式还包括用于增加不完全可见性事件表面的精度的方法。在该方法中,对于支撑不完全楔形的一阶轮廓边的每个段,将视单元的面上的点识别为对于该段的可见支撑视单元顶点(VSVV)。VSVV实际上从对应的轮廓边看去可见并且与该段形成支撑多边形。这些方法采用一阶模型的高阶自适应渐进细化,其在在PCT专利申请第PCT/US2011/042309号中进行了描述。
现参考附图,其中贯穿若干视图,类似的附图标记指代相同或对应的部分。
图1至图6详细描述:采用使用枢转和扫描方法构造的保守线性化阴影事件表面的第一实施方式。
一种实施方式包括基于多面体环境中的可见性传播的简化的一阶模型来构造保守线性化可见性图的方法。如前面在实施方式中所描述的,一阶可见性模型基于以下保守的假设:如果多边形网格的轮廓边从视单元的任意部分看去可见,则该轮廓边从视单元的所有部分看去可见。根据该模型的实施方式,轮廓边(称为一阶轮廓边)限于如下三角形网格边:这些三角形网格边具有背面面对视单元的所有顶点的一个构成多边形以及正面面对视单元的至少一个顶点的另一构成多边形。此外,作为一阶轮廓边, 构成多边形彼此背面面对面对。
该模型还导致以下方法:通过从(一阶)轮廓边到视单元的顶点的枢转(从枢转的支撑多边形导出SV-ME楔形)或通过从(一阶)内部角轮廓顶点遍及视单元轮廓边进行扫描(从扫描的支撑三角形导出SE-MV楔形),来形成一阶保守的线性化阴影事件表面(称为CLUES,或称为一阶楔形或简称为楔形)。该方法还使用在被支撑的轮廓边与支撑视单元边平行的特殊情况下生成的SE-ME楔形。该一阶实施方式总是产生保守的阴影边界,并且在一些情况下,其是完全阴影边界。
其它实施方式基于多面体环境中可见性传播的高阶模型。高阶模型没有假设如果轮廓边从视单元的任何部分看去可见则其从视单元的所有部分看去可见。更确切地,该模型解释了视单元的从轮廓边看去被遮挡的部分。高阶模型构成替代实施方式的基础,其可以在一阶方法不精确的情况下可以产生对完全阴影边界更加精确的近似。在PCT专利申请第PCT/US2011/042309号中公开了该高阶细化方法。
图1:一阶楔形的构造
图1示出公开了使用枢转和扫描方法由多边形网格对象和凸状视单元形成的一阶楔形的构造的总体组织的流程图。根据一些实施方式,处理流程从步骤110开始,其中针对一阶轮廓边分别检查多边形网格对象的多边形。在图3中详细公开了识别一阶轮廓边的方法。在PCT专利申请第PCT/US2011/042309号的图20中示出了公开了检查多边形的次序的实施方式,其示出了实施严格的从前到后的次序的算法。
处理流程行进至步骤112以确定在步骤110中碰到的一阶轮廓边是否与支撑视单元边平行。
如果在判决步骤112中确定一阶轮廓边不与支撑视单元顶点平行,则处理流程行进至步骤114,以构造轮廓边与视单元之间的支撑多边形。图4A示出了该构造的细节。
处理流程行进至步骤116,以通过对对应枢转支撑多边形的、入射在一阶轮廓边的顶点上的特定边进行延伸,来构造入射在一阶轮廓边上的SV-ME楔形。在图6A中公开了步骤120的额外细节。
如果一阶轮廓边与支撑轮廓平行,则处理流程从步骤112行进至步骤118。
在步骤118中,如前所述,通过从视单元边到视单元的枢转来构造被 称为SE-ME四边形(源边-网格边)的支撑四边形。
处理流程行进至步骤120,以通过对由SE-ME支撑四边形的对角线顶点形成的线段进行延伸来构造与SE-ME支撑四边形对应的SE-ME楔形。SE-ME楔形的边由被支撑的轮廓边以及通过远离视单元延伸连通轮廓边顶点的对角线线段所形成的两条线组成。
处理流程从步骤116或步骤120行进至判决步骤125,以确定相邻的轮廓边是否形成一阶轮廓周线的外部角。在一些实施方式中,使用针对相邻轮廓边的相对方向的简单测试来做出该确定。位于多边形网格的边界上的每个边具有以下自然方向:该边的一条法线正面面对多面体外侧(外向法线)并且相对的法线正面面对多面体内部。如果相邻轮廓边的两个外向法线彼此转向别处,则共有的轮廓顶点是该轮廓周线的内部角。否则,共有的轮廓顶点形成外部角。
如果在步骤125中确定相邻轮廓边形成了轮廓周线的外部角,则处理流程行进至步骤140,使得入射在相邻轮廓边上的楔形彼此相交。在一些实施方式中,如果相邻的SV-ME楔形是通过枢转至相同的支撑视单元顶点(SVV)来生成的,则它们在公共边处完全相交。否则,相邻的SV-ME楔形在它们的多边形内部彼此相交并且做出明确的多边形-多边形相交部确定。在任一种情况下,相交的SV-ME楔形产生跨越由两个被支撑的轮廓边形成的一阶轮廓周线的一部分的连续的阴影事件表面。在一些实施方式中,相邻的SV-ME楔形不相交。在这些实施方式中,步骤140是可选的。不与相邻的SV-ME楔形相交的SV-ME楔形仍然可以与网格多边形相交,并且对所得到的楔形-网格多边形相交部进行测试以确定其是否是从视单元看去的遮挡边界。结合图7D4和图7D5给出了相交的相邻SV-ME楔形的另外讨论。
如果在判决步骤125中确定相邻的轮廓边不形成轮廓周线的外部角,则处理流程从步骤125行进至步骤130。这种情况与一阶轮廓周线的内部角对应。
在一些实施方式中,这样的由通过顶点连接的两个轮廓边形成的内部角是简单的轮廓顶点。使用可见性传播的一阶模型,也可以在组件轮廓边不共有原始流形网格中的顶点的复合轮廓周线上形成内部角。这些顶点被称为复合轮廓顶点(CSV),它们对应于流形的从区域看的t顶点,并且在本说明书的随后部分对其进行详细讨论。
在步骤130中,在内部角网格轮廓顶点与视单元的特定边之间形成一个或多个支撑扫描三角形,该特定边相对于内部角网格轮廓顶点为从点看去的轮廓边。在图5A和图5B中公开了该处理的额外细节。
处理流程行进至步骤135,通过穿过内部角网格轮廓顶点延伸扫描三角形的边,来根据扫描三角形生成对应的SE-MV楔形。在图6B中公开了该处理的详细细节。
使用不同方法构造一阶楔形的集合的替代实施方式也是可以的。例如,在一种替代实施方式中,可以构造视单元与多边形网格对象之间的整个保守支撑包(conservativesupporting hull),并且将一阶楔形选为保守支撑包多边形的子集。
图3示出了图1中的步骤110的细节,一阶轮廓边的识别。根据一些实施方式,在图1的步骤110处进入图3所示的处理。在一些实施方式中,识别一阶轮廓边的处理开始于步骤310,以识别该边的构成多边形。在一些实施方式中,通过将多边形网格存储为诸如翼边数据结构的链式数据结构来便于该处理,在上述数据结构中存储有针对每个边的构成多边形的参考。在其它实施方式中,使用任何期望的数据结构来表示多边形网格。在一种实施中,多边形网格是遮挡的流形,其中每个边完全由两个构成多边形共有。
处理流程行进至判决步骤315,对被称为多边形B或PB的一个构成多边形进行测试,以确定该构成多边形是否背面面对视单元的所有顶点。在这种情况下,视单元的所有顶点将位于包括该构成多边形的平面的背面侧上。
如果在判决步骤315中确定PB不是背面面对所有视单元顶点,则处理从步骤315行进至步骤320,以对被称为PA的另一构成多边形进行测试,如在步骤315中所描述的。
如果在判决步骤320中确定PA背面面对视单元的所有顶点,则处理流程行进至步骤325,以确定构成三角形PB是否正面面对至少一个视单元顶点。
如果在判决步骤325中确定PB正面面对至少一个视单元顶点,则处理行进至判决步骤330对PA和PB进行测试以确定它们是否彼此背面面对。
如果在判决步骤330中确定PA和PB相对于彼此背面面对,则处理 流程行进至步骤335,其中正在测试的边为一阶轮廓边。
如果在判决步骤330中确定PA和PB不是相对于彼此背面面对,则处理流程行进至步骤355,其返回正在测试的边不是一阶轮廓边的结果。
如果在步骤315中确定PB背面面对视单元的所有顶点,则处理流程行进至步骤340以确定PA是否正面面对至少一个视单元顶点。如果PA正面面对至少一个视单元顶点,则处理流程行进至步骤345以确定PA和PB是否彼此背面面对,如在步骤330中功能上所描述的。
如果PA和PB彼此背面面对,则处理流程行进至步骤350,其返回正在测试的边是一阶轮廓边的结果。如果PA和PB不是彼此背面面对,则处理流程从步骤345行进至步骤355。如果PA不是正面面对至少一个视单元顶点,则处理流程行从步骤340行进至355。如果步骤320、325、330、340、或345中的任何测试失败,则该网格边不是一阶轮廓边,如在步骤355中所指示的。
图4A:SV-ME和SE-ME支撑多边形的构造方法
图4A是示出了用于构造入射在(一阶)网格轮廓边上的SV-ME支撑多边形的方法的流程图。图4A给出了在步骤116中示出的处理的额外细节。根据一些实施方式,从图1的步骤116进入图4A所示的处理。
在一些实施方式中,当碰到多边形网格的轮廓边时,在步骤410开始用于构造支撑多边形的处理。尽管其它实施方式可能潜在地使用高阶轮廓边,但是在本实施方式中其为一阶轮廓边。
处理流程行进至步骤415以将一阶轮廓边与视单元之间的“支撑_角”设置为“最大(MAX)”值(例如,180度)。根据一些实施方式,将如下形成的角定义为支撑角:从背面面对构成多边形的平面开始枢转通过一阶轮廓边的平面并朝向视单元枢转(沿着背面面对构成多边形的法线的总体方向)直至碰到视单元的第一顶点或边时所形成的角。枢转平面与视单元接触的位置是轮廓边与视单元之间的支撑多边形的平面。在该枢转期间所经过的角被称为支撑角或枢转角,并且在支撑平面与轮廓边的背面面对构成多边形的平面之间对该角进行测量。引起最小枢转角的视单元顶点或边(如果支撑多边形是SE-ME类型)是支撑顶点或支撑边。
图4A的剩余部分示出了用于识别支撑视单元顶点和构造支撑多边形的处理。处理流程行进至步骤420以将“VERTEX”设置为视单元的第一顶点。在实施方式中,“VERTEX”是用于测试的候选顶点,用于确定该 候选顶点是否为支撑顶点。处理流程行进至步骤425以构造网格轮廓边“边”与“VERTEX”之间的三角形。处理流程行进至步骤430以使用用于在平面的交线处测量平面之间的角的标准方法来测量“三角形”的平面和该轮廓边的背面面对构成多边形的平面的可见侧之间的角。处理流程行进至步骤435以将该“角”与“支撑_角”的当前值进行比较。如果该“角”小于“支撑_角”的当前值,则处理流程行进至步骤440以将“支撑_角”设置为“角”。处理流程行进至步骤445以将“支撑_顶点”设置为当前的“VERTEX”。
处理流程行进至步骤450,其中支撑多边形被设置为由轮廓边和支撑顶点形成的三角形。
处理流程行进至步骤455以确定是否剩余有未处理的视单元顶点。如果在判决步骤455确定没有剩余未处理的视单元顶点,则处理流程行进至步骤460,其中输出支撑多边形。
如果在判决步骤455确定剩余有未处理视单元顶点,则处理流程行进至步骤475,其中选择要处理的下一个视单元顶点。
如果在判决步骤435中确定所测量的“角”(枢转角)不小于当前的“支撑_角”,则处理流程行进至步骤465以确定枢转角(“角”)是否等于“支撑_角”的当前值。如果该条件成立,则视单元的两个顶点与对应于与SE-ME支撑多边形的轮廓边形成相同的枢转角,并且处理流程行进至步骤470以在两个视单元顶点与视单元边之间设置四边形(SE-ME支撑多边形)。
仅在轮廓边与两个视单元顶点之间的支撑角相等的特殊情况下才在步骤470中构造四边形支撑多边形。对于在本实施方式中假定的凸状视单元,这仅出现在当两个支撑视单元顶点位于视单元的与网格轮廓边平行的边上时。在这种情况下,从视单元看去的“跨越”轮廓边的可见性不是由通常的从点看去的可见性三角形来确定而是替代地由从段看去的可见性四边形来确定。
不同地处理该特殊情况的其它实施方式也是可以的,例如,通过构造入射在平行的支撑视单元边上的两个支撑三角形和扫描三角形。使用该方法,所得到的对应的相邻UBP不只在边处相交,而是替代地,它们会在它们的平面上重叠,从而导致包围的多面体阴影体积的局部退化。识别四边形支撑多边形的本方法避免了随后步骤中的这种退化。
不管候选支撑多边形是三角形还是四边形,处理流程都从步骤470行进至步骤455,以如上所述确定是否剩余任何未处理的顶点。如果剩余视单元顶点,则处理流程返回至步骤475,其中选择下一个视单元顶点。接下来,处理遵循前述步骤。
在最终步骤460处,处理输出支撑多边形,其是由网格轮廓边和视单元的顶点形成的三角形,或是形成在网格轮廓边和视单元边之间的四边形。
用于构造SV-ME支撑多边形的方法可以有替代实施方式。在一种替代实施方式中,与一个一阶轮廓边对应的“支撑_顶点”限于直接与对于相邻的一阶轮廓边的“支撑_顶点”相连的那些视单元顶点,其中相邻的边形成网格的外部角(凸特征)。该方法与在3D中构造凸包的分治方法的经典的现有技术方法中使用的方法类似。在本申请中,视单元是非常简单的多面体并且该方法所负担得起的加速是非常有限的。
图4B示出了网格对象M1和视单元。视单元和多边形网格M1与图7A和图7B1示出的对象相同。在图4B中,视点位于图7A和图7B1的视点之间。标记为B的一阶轮廓边也出现在这三幅图中。图4B的观察方向非常接近于与边B平行。因此,边B侧向(edge-on)几乎被看做点。在图4B和图7B1中,将多边形网格M1的顶点视为顶点V3。
将两个候选支撑多边形示为“候选SP1”和“候选SP2”。通过构造由边B和视单元的顶点形成的三角形来针对一阶轮廓边B识别候选支撑多边形。对该支撑多边形的平面与共有边B的背面面对构成多边形的平面形成的角进行测量。该角对应于在图4A的步骤425中确定并且在同一图中的步骤435和步骤465中使用的变量“支撑_角”。在图4B所示的示例中,一阶轮廓边B的背面面对构成多边形是由边B和顶点V3形成的三角形。
在该示例中,由“候选SP1”形成的角(对应于视单元顶点V4)用标记为“角-1”的虚线弧来表示。
在该示例中,由“候选SP2”形成的角(对应于视单元顶点V8)用标记为“角-2”的虚线弧来表示。
从这两个弧明显看出,“角-1”小于“角-2”。根据图4A的示例性流程图,将候选SP1保持为一阶轮廓上的实际支撑多边形的候选。如果通过图4A中的示例性流程图示出的处理对“视单元”的所有顶点进行测试, 将会发现顶点V4产生给出最小支撑角的支撑多边形(“候选SP1”)。在图7C1中将“候选SP1”示为实际的支撑多边形SPB。
可以采用标准的角测量,来确定包括背面多边形的平面的法线向量与候选支撑多边形之间的叉积的角。
图4C是示出了用于确定形成在一阶轮廓边与视单元顶点之间的多边形是否是支撑多边形的测试的流程图。
可以有以下替代实施方式:通过考虑候选支撑多边形的“侧性(sidedness)取向”(相对于多边形网格的内部)和候选支撑多边形的相对于视单元顶点的取向两者来识别SV-ME支撑多边形。
在一种实施方式中,网格多边形都被假定成具有以下法线向量的“外部”多边形:法线向量局部地被定向成远离多边形网格所包括的区域的“内部”。在这样的实施方式中,多边形网格的所有网格多边形一致地具有该相同的“侧性”取向。
多边形是平面结构,其可以具有对应于包括该多边形的平面的两边的两条边。示例性实施方式包括为流形或遮挡的多边形网格。流形网格将其所嵌入的空间体积分成内部和外部。在计算图形学中,使用以下流形网格是非常有用的:该网格中的每个多边形的法线向量被局部地定向成正面面对远离该封闭体积的内部。这可以被称为多边形的“外部”侧。相反侧可以被称为多边形的“内部”侧。如果在网格中所有的多边形都具有该一致的侧性取向,则多边形的内部侧从外侧不可见。
在示例性实施方式中,能够通过检查相邻多边形(即共有边的多边形)的顶点次序来确立网格的多边形具有相同的侧性取向。(参见Schneider(2003)Schneider,Philip J.,Eberely,David H.,“Geometric Tools for Computer Graphics”MorganKaufmann2003pp.342-345,其全部内容通过引用合并到本申请中)。设F0和F1是共有由两个顶点V1和V3组成的边的两个相邻多边形。对于多边形F0,如果顶点V1和V3是以V3接着V1的排序来出现,则它们在多边形F1中必须以V1接着V3的排序来出现。共有的边具有该排序的相邻多边形被可以称为具有一致的顶点排序。具有一致的顶点排序的多边形具有相同的侧性取向。顶点排序反映了针对每个三角形存储顶点的次序。对于三角形以该相同的次序访问的顶点定义了其叉积是平面等式的系数A、B、C的向量(三角形边)或该三角形的法线向量。在一些实施方式中,所有的网格三角形具有一致的顶点排 序并且所有的网格三角形会具有指向远离网格的内部的方向的法线向量,即,它们都是正面面对外部的三角形。实施方式可以在处理之前采用已知的算法来识别和修复多边形网格中的不一致的顶点排序(参见MakeConsistent procedure of Schneider(2003),pp345)。
图4D1是示出了两个相邻多边形F0和F1的示例性图,其中,这两个多边形具有一致的顶点排序。注意,对于多边形F0,以V1至V3的次序来访问共有边,而对于相邻的多边形F1,以V3至V1的次序来访问该相同的共有边,因此满足一致排序的定义。采用右手规则传统,两个多边形的法线指向图像平面的外部。
图4D2是示出了两个相邻多边形F0和F1的示例性图,其中这两个多边形不具有一致的顶点排序。
在一种实施方式中,对于一阶轮廓边的候选SV-ME支撑多边形形成在视单元顶点和一阶轮廓边之间。给出了具有与共有一阶轮廓边的背面网格多边形的侧性取向相同的侧性取向的候选支撑多边形。(使用该一致的侧性取向,例如,穿越背面网格多边形的“外部”面上的一阶轮廓边行走的人会碰到候选支撑多边形的“外部”面)。然后,相对于视单元顶点对每个候选支撑多边形的平面的取向进行检查。如果候选支撑多边形的平面相对于每个视单元顶点不是正面面对,则形成候选支撑多边形的视单元顶点是支撑视单元顶点,并且候选支撑多边形是支撑多边形。
根据一些实施方式,所采用的相对于视单元顶点正面面对的定义排除了位于候选支撑多边形的平面中的视单元顶点(即,承认支撑视单元顶点为非正面面对)。替代的实施方式可以采用背面面对和正面面对的定义的变型,以确定候选支撑多边形相对于每个视单元顶点不是正面面对。在至少一种示例性实施方式中,该测试包括确认候选支撑多边形相对于每个视单元顶点背面面对,其中相对于顶点背面面对的平面的定义包括位于该平面中的顶点(即,承认支撑视单元顶点相对于支撑多边形背面面对)。
根据一些实施方式,从步骤480中进入图4C所示的处理。在步骤408中,在一阶轮廓边与视单元顶点(V)之间形成候选支撑多边形。
处理流程行进至步骤485以将在步骤480中形成的候选支撑多边形的侧性取向设置成与共有一阶轮廓边的背面面对构成多边形的侧性取向相同。
处理流程行进至步骤487以确定候选支撑多边形相对于视单元顶点 中的每个顶点是否正面面对。如果在判决步骤487中确定候选支撑多边形相对于每个视单元顶点不是正面面对,则处理流程行进至步骤491以将视单元顶点(V)识别为支撑视单元顶点并且将候选支撑多边形识别为支撑多边形。
如果在判决步骤487中确定候选支撑多边形相对于任何视单元顶点正面面对,则处理流程行进至步骤489以将视单元顶点(V)识别为不是支撑视单元顶点并且将该候选支撑多边形识别为不是支撑多边形。
由图4C的示例性流程图示出的测试还能够用于识别SE-ME型支撑多边形。
图5A和图5B:示出了用于构造SE-MV支撑(扫描)三角形的方法的流程图
图5A和图5B包括示出了用于构造入射在内部角网格轮廓顶点上的SE-MV支撑扫描三角形的方法的流程图。这是图1的步骤130的附加细节。根据一些实施方式,从图1中的步骤130进入图5A和图5B所示的处理。
在一些实施方式中,当碰到多边形网格的一阶轮廓周线的内部角时,在步骤510处开始用于构造SE-MV支撑扫描三角形的处理。该内部角可以由两个一阶轮廓边共有顶点的简单的一阶轮廓周线形成。如果形成该相交部的轮廓边的法线(假定法线方向正面面对构成多边形的内部方向远离)彼此面对,则该相交部是内部角顶点。
可替代地,内部角顶点可以是由楔形与一阶轮廓边的相交形成的复合轮廓周线的顶点。在后一种情况下,将内部角轮廓网格轮廓顶点称为复合轮廓顶点(CSV)。
处理流程行进至步骤515以使用例如图4A所公开的处理来识别针对形成顶点的轮廓边之一的支撑视单元顶点(SVV)。将该顶点的标识存储为变量“SVV_START”。处理流程行进至步骤520,其中针对内部角的另一条边重复步骤515的处理并且将结果存储为变量“SVV_END”。
如果内部角的任一支撑多边形是四边形(在图4A的步骤470中生成),则支撑多边形具有两个SVV。在这种特殊情况下,必须在步骤515和520中小心选择该链中的起始视单元顶点(“SVV_START”)或终止视单元顶点(SVV_END),这是因为该顶点是从该链的另一端最远移除的。
处理流程行进至步骤525,其中变量“CURRENT_POLYGON”被 设置为识别视单元顶点“SVV_START”与多边形网格的对应的被支撑边之间的支撑多边形。
处理流程行进至步骤530,其中将对于最终发生在视单元顶点“SVV_START”与“SVV_END”之间的视单元轮廓周线扫描的起始点设置成视单元顶点“SVV_START”并且存储为变量CVV,其保存了扫描的当前顶点。
处理流程行进至判决步骤535对CVV与“SVV_END”进行比较以确定是否应该终止扫描。
如果在判决步骤535中确定正在处理的当前视单元顶点(CVV)与扫描中的最后一个顶点(“SVV_END”)相同,则处理流程行进至步骤540并且终止。如果内部角的两个边在视单元上具有相同的点,则对应的SV-ME楔形沿着公共边相交并且不存在与内部角顶点对应的扫描三角形。在步骤535的初始执行中会识别这种情况并且会终止扫描而不产生扫描三角形。
如果在判决步骤535中确定CVV不是“SVV_END”,则处理流程行进至步骤545,以将变量“CURRENT_ANGLE”设置成最大值。
处理流程行进至步骤550,其中选择共有视单元顶点CVV的第一视单元边并且用变量“EDGE”来标记。
处理流程行进至判决步骤555,以确定边“EDGE”是否是相对于内部角网格轮廓顶点MV的(从点看去的)轮廓边。
如果在判决步骤555中确定“EDGE”是从MV看去的轮廓边,则处理流程行进至步骤560以在点MV与边“EDGE”之间形成三角形。该三角形是MV与视单元之间的候选扫描三角形,但是必须将其与共有相同视单元边的其它扫描三角形候选相比。
处理流程行进至565,其中开始比较这些其它扫描三角形候选。对此,对入射在MV上的当前扫描三角形候选“三角形”与“CURRENT_POLYGON”(支撑多边形)之间的角进行测量。将该值存储在变量“ANGLE”中。因为“三角形”和“CURRENT_POLYGON”共有公共边,所以采用该角为每个多边形的被遮挡边之间的角的惯例来可以在该边处测量该角。支撑多边形的被遮挡边是在轮廓边处连接至网格多边形的内部的边。候选扫描三角形的被遮挡边是在顶点MV处连接至网格多边形的内部的边。将该角存储在变量“ANGLE”中。
可以有以下替代实施方式:对扫描三角形和对应的SE-MV楔形的相对于相邻楔形形的取向进行检查。所有的楔形都是具有“可见”侧和“不可见”侧的定向面。对于SE-MV楔形,可见侧是未被遮挡侧(由于不被超出对应的一阶轮廓边的网格多边形遮挡,所以在该侧是可见的)。对于SV-ME楔形,可见侧是“被包含”侧(由于当穿过和超出对应的内部角一阶轮廓顶点观察时被包含在视单元中,所以是可见的)。
在一种实施方式中,根据MV视单元边来构造“SWEPT_TRIANGLE”,MV视单元边产生具有与相邻的SV-ME楔形的遮挡方向一致并且与相邻SV-ME楔形的包含方向一致的包含方向的“SWEPT_TRIANGLE”。不具有该一致方向的SV-ME楔形不促成连续的、保守的线性化阴影事件表面。
SV-ME楔形的取向与对应的SV-ME支撑多边形的取向相反。该相反的发生是因为SV-ME支撑多边形的边有效地投影穿过内部角一阶轮廓顶点而形成对应的SV-ME楔形。(例如,具有视单元与沿着负Y方向“低于”特定的SE-MV支撑多边形的内部角一阶轮廓顶点之间的包含轴的该SE-MV支撑多边形会产生具有其沿着正Y方向的“被包含”或可见侧的对应的SE-MV楔形)。
处理流程行进至判决步骤570,以确定该角(“ANGLE”)是否小于“CURRENT_ANGLE”的当前值。
如果在判决步骤570确定“ANGLE”的当前值小于“CURRENT_ANGLE”的值,则“TRIANGLE”是候选扫描三角形并且处理流程行进至处理5-1,其在图5B中的步骤580处开始。
在步骤580中,将变量“CURRENT_ANGLE”设置为“ANGLE”的值。
处理流程行进至步骤585以将变量“SWEPT_EDGE”设置成指代边“EDGE”。
处理流程行进至步骤590以将变量“SWEPT_TRIANGLE”设置成指代三角形“TRIANGLE”。
处理流程行进至判决步骤591以确定是否还有任何其它共有当前视单元顶点CVV的边未被处理。
如果在判决步骤591中确定剩余未处理的共有视单元顶点的边,则处理流程行进至处理5-3,其将处理流程返回步骤575(图5A),其中变量 “EDGE”被设置成指代共有顶点CVV的下一视单元边。然后,处理流程行进至步骤555以生成下一个候选扫描三角形并且对其进行测试。
如果在判决步骤591中确定没有其它未处理的共有顶点视单元的边,则处理流程行进至步骤592,其中将“CURRENT_POLYGON”变量设置为指代三角形“SWEPT_TRIANGLE”。
处理流程行进至步骤593以输出扫描三角形“SWEPT_TRIANGLE”。
处理流程行进至步骤594以根据扫描三角形构造SE-MV楔形。在图6B中公开了该步骤的另外细节。
然后,处理流程行进至处理5-4,其在步骤594(图5A)开始前进至下一个连接的视单元顶点。然后处理流程返回步骤535。
如果在判决步骤555中确定视单元边不是从点MV的从点看去的轮廓边,则处理流程行进至处理5-2,其从步骤591(图5B)开始选择要处理的剩余视单元边。
图5C是示出了用于确定形成在内部角一阶轮廓顶点与视单元边之间的多边形是否是支撑多边形的测试的流程图。
可以有以下替代实施方式:通过考虑候选支撑多边形的“侧性取向”(相对于多边形网格的内部)和候选支撑多边形的相对于视单元顶点的取向两者来识别SE-MV支撑多边形。
在一种实施方式中,将网格多边形都假定为“外部”多边形,其具有局部地定向成远离多边形网格所包含的区域的“内部”的法线向量。在这样的实施方式中,多边形网格的所有网格多边形一致地具有该相同的“侧性”取向。
如前所述,多边形是平面结构,其可以具有对应于包括该多边形的平面的两边的两条边。示例性实施方式包括为流形或遮挡的多边形网格。流形网格将其所嵌入的空间体积分成内部和外部。在计算图形学中,使用以下流形网格是非常有用的:该网格中的每个多边形的法线向量被局部地定向成正面面对远离该封闭体积的内部。这可以被称为多边形的“外部”侧。相反侧可以被称为多边形的“内部”侧。如果在网格中所有的多边形都具有该一致的侧性取向,则多边形的内部侧从外侧不可见。
在示例性实施方式中,能够通过检查相邻多边形(即共有边的多边形)的顶点次序来确立网格的多边形具有相同的侧性取向。(参见Schneider, Philip J.,Eberely,DavidH.,“Geometric Tools for Computer Graphics”Morgan Kaufmann2003pp.342-345,其全部内容通过引用合并到本申请中)。设F0和F1是共有由两个顶点V1和V2组成的边的两个相邻多边形。对于多边形F0,如果顶点V1和V2是以V2接着V1的排序来出现,则它们在多边形F1中必须以V1接着V2的排序来出现。共有的边具有该排序的相邻多边形被可以称为具有一致的顶点排序。具有一致的顶点排序的多边形具有相同的侧性取向。
在一种实施方式中,对于内部角一阶轮廓顶点的候选SV-ME支撑多边形形成在视单元形和内部角一阶轮廓顶点之间。给出候选支撑多边形与共有内部角一阶轮廓顶点的一阶轮廓边的背面面对网格多边形的侧性取向相同的侧性取向。(使用该一致的侧性取向,例如,穿过背面网格多边形的“外部”面上的一阶轮廓边行走的人会碰到候选支撑多边形的“外部”面)。然后相对于视单元顶点对每个候选支撑多边形的平面的取向进行检查。如果候选支撑多边形的平面相对于每个视单元顶点不是正面面对,则形成候选支撑多边形的视单元边是支撑视单元边并且该候选支撑多边形是支撑多边形。
根据一些实施方式,从步骤595进入到图5C所示的处理中。在步骤595中,在内部角一阶轮廓顶点与视单元边(E)之间形成候选支撑多边形。处理流程行进至步骤596以将在步骤595中形成的候选支撑多边形的侧性取向设置成与共有内部角一阶轮廓顶点的一阶轮廓边的背面面对构成多边形的侧性取向相同。在示例性实施方式中,可以将SE-MV支撑多边形的侧性取向设置成与先前确定的相邻SV-ME或SE-MV支撑多边形的侧性取向一致。因为SE-MV支撑多边形与这些相邻的多边形共有边,所以可以通过确保相邻的多边形具有一致的顶点排序来设置侧性取向。
处理流程行进至步骤597以确定候选支撑多边形相对于视单元顶点中的每个顶点是否正面面对。如果在判决步骤597确定候选支撑多边形相对于每个视单元顶点不是正面面对,则处理流程行进至步骤599以将视单元边(E)识别为支撑视单元边并且将该候选支撑多边形识别为支撑多边形。
如果在判决步骤597确定候选支撑多边形相对于任意视单元顶点正面面对,则处理流程行进至步骤598以将视单元边(E)识别为不是支撑视单元边并且将候选支撑多边形识别为不是支撑多边形。
图6A:示出了用于根据对应的SV-ME和SE-ME支撑多边形构造 SV-ME和SE-ME楔形的方法的流程图
图6A是示出了用于根据对应的支撑多边形构造SV-ME楔形的处理的流程图。这提供了关于图1中的步骤116的附加细节。根据一些实施方式,从图1的步骤116进入图6A所示的处理。
在一些实施方式中,在步骤610开始用于根据对应的SV-ME和SE-ME支撑多边形构造SV-ME和SE-ME楔形的处理,其中将支撑多边形的连接边识别为一个顶点为视单元的顶点、另一顶点为多边形网格的顶点的那些边。
处理流程行进至步骤615,通过以半无限的方式从所支撑的轮廓边的对应顶点起远离视单元延伸连接边,来构造自连接边起的射线。如果支撑多边形是三角形,则延伸连接视单元和轮廓边的两条边。如果支撑多边形是四边形(根据图4A的步骤470),则可以延伸连接视单元边和轮廓边的对角线。延伸对角线产生较大的楔形,其实际上反映了穿过视单元边从视单元边看去的可见性。
处理流程行进至步骤620以将延伸的边连接至对应的(所支撑的)多边形网格轮廓边,从而形成半无限的SV-ME(或SE-ME)楔形。
图6B:示出了用于根据对应的SE-MV支撑多边形构造SE-MV楔形的方法的流程图
图6B是示出了用于根据对应的扫描三角形构造SE-MV楔形的处理的流程图。这提供了图1中的步骤135的额外细节。根据一些实施方式,从图1中的步骤135进入图6B所示的处理。
在一些实施方式中,在步骤630开始用于根据对应的扫描三角形构造SE-MV楔形的处理,其中将扫描三角形的连接边识别为一个顶点为视单元顶点、另一顶点为多边形网格的顶点的那些边。
处理流程行进至步骤635,以通过将这些边以半无限的方式从对应的网格轮廓顶点起远离视单元延伸,来构造自连接边起的射线。
处理流程行进至步骤640以将延伸的边连接至对应的多边形网格内部角轮廓顶点来形成半无限楔形。
图6A和图6B的处理描述了以下一阶楔形的构造:该一阶楔形仅限于它们与轮廓周线上的相邻楔形的相交部。可以将这些楔形称为初始楔形。
根据一些实施方式,在后续处理中,例如在一阶可见性图的构造中,这些初始楔形随后可以与网格多边形以及其它楔形相交。初始楔形还可以明确地与其它楔形相交以形成阴影边界多边形(UBP),其包围保守的从视单元看去的多面体聚合阴影体积,多面体聚合阴影体积包括(保守地)被遮挡区域。
图7-图11:对第一实施方式的输出的详细描述
图7A是示出了具有顶点V1至V8的凸状视单元和非凸多边形网格M1的图。用粗线示出网格的从视单元看去的一阶轮廓边。将一阶轮廓边中的两个边标记为A和B。这是沿着从视单元朝向多边形网格的总体方向看的透视图。
一阶轮廓边A具有正面面对至少一个视单元顶点的一个构成多边形。该构成多边形是由边A和标记为MV1的网格顶点形成的三角形。边A的另一构成多边形是由边A和图7B1示出的网格顶点MV2形成的三角形。该构成多边形背面面对视单元的所有顶点V1至V8。注意,共有边A的这两个构成多边形彼此背面面对,使得边A是多边形网格M1的局部支撑边和一阶轮廓边。可以如下确定共有边A的两个构成多边形背面面对:选择第一构成多边形(例如,由边A和顶点MV2形成的三角形),并且确定另一构成多边形的不是共有边的一部分的顶点(例如,在该情况下是顶点MV1)位于包括第一多边形的平面的正面侧还是后侧。如果不共有的顶点位于另一构成多边形的平面的后侧,则两个构成多边形背面面对,如在这种情况下。可以使用如在从词汇表中提供的“背面面对”的定义中描述的平面方程来做出该确定。在一些实施方式中,针对多边形网格M1中包括的每个边重复图3所示的处理,以识别多边形网格M1的每个一阶轮廓边。
图7B1是示出了与图7A所述的多边形网格对象M1相同的多边形网格对象的图,但是为沿着从多边形网格朝向视单元的总体方向来看的透视图。根据该图,边B具有背面面对视单元的所有顶点V1至V8的一个构成三角形(由边B和网格顶点M3形成)。如图7A所示,边B具有由边B和网格顶点MV1形成的另一构成三角形,该构成三角形正面面对至少一个视单元顶点。此外,共有边B的这两个构成多边形彼此背面面对,使得边B是多边形网格M1的局部支撑边和一阶轮廓边。
图7B2示出了与在图7B1中绘出的多边形网格不同的多边形网格。将该多边形网格标记为M3。多边形网格M3的一条边用粗线示出并被标 记为I。该边具有作为被标记为T1的三角形的一个构成多边形和作为被标记为T2的三角形的另一构成多边形。
构成多边形T1背面面对标记为“视单元”的视单元的所有顶点,这是因为所有的视单元顶点位于包括三角形T1的平面的背面侧上。
构成三角形T2具有位于包括三角形T2的平面的正面侧上的至少一个视单元顶点,即T2正面面对至少一个视单元顶点。
因此,构成三角形T1和T2满足使得它们所共有的边为相对于视单元的一阶轮廓边所需的准则中的两个准则。
然而,由于这两个构成三角形不是彼此背面面对,所以共有的边I不是一阶轮廓边。这可以通过选择三角形T1并识别另一构成三角形(T2)的不是共有边的顶点的顶点来确定。在这种情况下该顶点是P2。顶点P2位于包括另一构成三角形T1的平面的正面侧上。可以使用如在针对“背面面对”的词汇表描述中所描述的三角形T1的平面方程式来确立这一事实。
因为T1和T2彼此不背面面对,所以在一种实施方式中,未能通过图3的示例性流程图的步骤345或330处示出的判决测试。
图7C1是示出了针对一阶轮廓边A和B的支撑多边形的图。针对一阶轮廓边A的支撑多边形被标记为SPA,并且针对一阶轮廓边B的支撑多边形被标记为SPB。对应的支撑视单元顶点(SVV)被分别标记为SVVA和SVVB,其分别对应于视单元顶点V4和V8。这是沿着从视单元朝向网格对象的总体方向看去的透视图。
图7C2是分别示出了针对一阶轮廓边A和B的支撑多边形SPA和SPB以及对应的源顶点-网格边(SV-ME)楔形的图。针对一阶轮廓边A的支撑多边形被标记为SPA,并且针对一阶轮廓边B的支撑多边形被标记为SPB。对应的支撑视单元顶点(SVV)分别被标记为SVVA和SVVB。通过延伸支撑多边形SPA形成的SV-ME楔形被标记为SV-ME WA。通过延伸支撑多边形SPB形成的SV-ME楔形被标记为SV-ME WB。根据一些实施方式,根据图1、图4和图6A所示的处理来构造SV-ME楔形WA和WB。这是沿着从视单元朝向网格对象的总体方向看去的透视图。
图7C3是仅示出了通过延伸对应的支撑多边形的边来形成的SV-ME楔形的图。通过延伸支撑多边形SPA形成的SV-ME楔形被标记为SV-ME WA。通过延伸支撑多边形SPB形成的SV-ME楔形被标记为SV-ME WB。 对应的支撑视单元顶点(SVV)分别被标记为SVVA和SVVB。这是沿着从视单元朝向网格对象的总体方向看去的透视图。
尽管图7C1-图7C3示出了入射在一阶轮廓边A和B上的楔形,另外的实施方式根据图1、图3至图6B所示的处理来构造针对网格M1中所包括的一阶轮廓周线所包含的每个一阶轮廓边的楔形。
图7D1是示出了与图7C1所示对象相同的对象的图,但是为沿着从网格对象M1朝向视单元的总体方向看去的透视图。
图7D2是示出了与图7C2所示对象相同的对象的图,但是为沿着从网格对象M1朝向视单元的总体方向看去的透视图。
图7D3是示出了与图7C2所示对象相同的对象的图,但是为沿着从网格对象M1朝向视单元的总体方向看去的透视图。
图7D4以相同的视角示出了与图7D3所示的多边形网格和视单元相同的多边形网格和视单元。图7D4示出了在一阶轮廓周线的外部角顶点处相交的两个枢转楔形。
枢转楔形之一被标记为SV-ME WA,其也可以在图7D3中看到。在图7D4中示出了另外的枢转楔形SV-ME WC。该楔形由标记为C的一阶轮廓边和标记为SVVC的支撑视单元顶点来支撑。
两个枢转楔形SV-ME WA和SV-ME WC共有一阶轮廓边的外部角顶点。该顶点被标记为OCV。如在图1的示例性流程图的步骤125和140中所规定的,在一种实施方式中,共有外部角顶点的枢转多边形彼此相交。
共有外部角轮廓顶点并且枢转至相同支撑视单元顶点的枢转多边形在共有边处彼此完全相交。在这种情况下,共有边是从所共有的顶点延伸的射线且位于由支撑视单元顶点和所共有的外部角顶点形成的线上。在这种特殊情况下,这两个枢转楔形在所共有的边上彼此限制。
(共有内部角轮廓顶点并且枢转至相同支撑视单元顶点的枢转多边形还在所共有的边处彼此完全相交。在该情况下,不存在扫描支撑多边形并且不生成对应的扫描楔形。)
在一般情况下,共有外部角顶点的枢转楔形可以枢转至不同的支撑视单元顶点。在图7D4中,楔形SV-ME WA由视单元顶点V4支撑,而SV-ME WC由SVVC支撑。在该情况下,楔形SV-ME WA与楔形SV-ME WC的相交部是被标记为I的线段。线段I将楔形SV-ME WC分成两部分。 所细分的楔形SV-ME WC的近端部分被线段I和标记为VE的顶点界定。该近端部分的一部分在该图中被遮挡。
楔形SV-ME WC的该近端部分在图7D5完全可见,其以不同的视角示出了与图7D4的对象相同的对象。该近端部分在图7D5中被标记为SV-ME WCR。
一般地,共有外部角顶点并且枢转至不同的支撑视单元顶点的两个枢转楔形的相交会导致上述楔形之一被限制成近端部分(例如,SV-ME WCR(指示所限制的楔形C))和远端部分。只有这种局部地受限的楔形近端部分实际上是从视单元看去的阴影事件表面。(只有该近端部分是对应的多面体聚合阴影(PAU)的多边形)。由于该超出限制并且沿着远离视单元的方向的远端部分全部位于相邻楔形的未被遮挡侧,因而该远端部分不表示从视单元看去的阴影事件表面。在图7D4和图7D5中示出的示例中,位于SV-ME WC的远端部分的未被遮挡侧和被遮挡侧两者上的网格多边形实际上从视单元顶点SVVA看去未被遮挡,因此,从视单元看去未被遮挡。
由共有外部角轮廓顶点的相邻枢转楔形导致的枢转楔形的局部限制在某些情形下产生充分小的楔形。因为该较小的、局部受限的楔形具有限制处理的附加的封闭边界,所以当该楔形被提交以进行关于楔形的可见性的确定时,该楔形可能需要充分少的处理(例如,在使用图15的示例性流程图所示的2D网格遍历处理的一种实施方式中的步骤1515处)。
因此,局部限制处理能够加速关于楔形的可见性的确定。也可以采用不使用该局部限制处理的替代实施方式。没有被其它楔形限制的任何楔形仍然与网格多边形相交以产生不连续的网格段。然后,使用在图25的示例性流程图中所描述的修改的多面体的点包容性测试,来做出关于该不连续的段实际上是否为从视单元看去的阴影边界的确定。该测试适合局部受限和不受限的楔形两者。
前面的讨论假设所采用的楔形都是一阶楔形。高阶楔形经受如在一种实施方式中所描述的楔形-楔形相交(受其它楔形限制),例如,在示出了用于确定DM_SEG是否是实际的从视单元看去的遮挡边界段的方法的示例性流程图的步骤2155中。
图8A1是示出了位于由网格对象M1的标记为A和B的一阶网格轮廓边共有的内部角顶点上的扫描三角形(SE-MV支撑三角形)的图。该 扫描三角形被标记为ST_AB。在一些实施方式中,使用图5A和图5B所示的扫描处理来生成扫描三角形ST_AB,扫描被锚定在被标记为ICSV并且从SVVA(V4)至SVVB(V8)来发生。在这种情况下,内部角网格轮廓顶点是一阶轮廓周线(即,由网格对象M1的所有一阶轮廓边形成的周线)的、形成在两个共有顶点的一阶轮廓边处的简单的内部角。这是沿着从视单元朝向网格对象的总体方向来看的透视图,其与图7A和图7C1所示的图相似。
图8A2是示出了由被标记为A和B的一阶轮廓边共有的内部角顶点上的扫描三角形(SE-MV支撑多边形)的图。扫描三角形被标记为ST_AB,根据一些实施方式,使用在图5A和图5B中示出的扫描处理来生成扫描三角形ST_AB,该扫描被锚定在标记为ICSV的内部角轮廓顶点处并且从SVVA(V4)至SVVB(V8)进行。在这种情况下,内部角网格轮廓顶点是一阶轮廓周线的、形成在共有顶点的两个一阶轮廓边处的简单的内部角。通过延伸扫描三角形形成的对应的SE-MV楔形被标记为SE-MV WAB。根据一些实施方式,根据图6B所示的处理来形成SE-MV楔形WAB。对此,穿过内部角顶点而延伸多边形ST_AB的边以形成SE-MV WAB。这是沿着视单元朝向网格对象的总体方向来看的透视图,其与图7A和图7C2所示的图类似。
图8A3是示出了被标记为ICSV的内部角轮廓顶点的图。通过延伸扫描三角形形成的对应的SE-MV楔形被标记为SE-MV WAB。这是沿着从视单元朝向网格对象的总体方向来看的透视图,其与图7A和图7C3所示的图相似。
图8A4是示出了入射在轮廓边A和B上的一阶保守线性化阴影事件表面(CLUES)的图。如在图8A4中所示的,连续的阴影事件表面包括两个SV-ME楔形(被标记为SV-ME WA和SV-ME WB),并且在这种情况下包括单个SE-MV楔形(标记为SE_MV WAB)。对应的支撑视单元顶点被标记为SVVA和SVVB,内部角一阶轮廓顶点被标记为ICSV。这是沿着视单元朝向网格对象的总体方向看去的透视图。如在图8A4中示出的,由SV-ME WA、SE-MV WAB和SV-ME WB组成的CLUES形成遮挡边界,其中该边界的未被遮挡侧沿着箭头U1的方向,并且被遮挡侧沿着箭头O1的方向。
图8B1是示出了与图8A1所示的对象相同的对象的图,但是来自沿着从网格对象M1朝向视单元的总体方向看去的透视图。
图8B2是示出了与图8A2所示的对象相同的对象的图,但是来自沿着从网格对象M1朝向视单元的总体方向看去的透视图。
图8B3是示出了与图8A3所示的对象相同的对象的图,但是来自沿着从网格对象M1朝向视单元的总体方向看去的透视图。
图8B4是示出了与图8A4所示的对象相同的对象的图,但是来自沿着从网格对象M1朝向视单元的总体方向看去的透视图。
与图8A4相同,图8C是示出了入射在轮廓边A和B上的一阶保守线性化阴影事件表面(CLUES)的图。该连续的阴影事件表面包括两个SV-ME楔形(标记为SV-ME WA和SV-MEWB),并且在这种情况下包括单个SE-MV楔形(被标记为SE-MV WAB)。这是沿着视单元朝向网格对象的总体方向看去的透视图。
图9A是示出了通过Teller(1992)描述的线性化非半影现有技术方法来构造的、入射在轮廓边A和B上的阴影事件表面的图。在仅用于入口序列可见性的有限问题的该现有技术方法中,完全根据支撑多边形的平面来构造阴影事件表面。入射在轮廓边A和B上的这些支撑平面的部分被示出并标记为“WPLANE_A”和“WPLANE_B”。这些平面在线L1处相交以形成入射在轮廓边A和B上的连续的可见性事件表面。
在Teller的线性化非半影现有技术方法中,Teller(1992),通过仅将入射在入口边和由源视点支撑的支撑多边形的平面相交来近似可见性事件表面,其中源是入口序列中的在前入口。这些支撑多边形对应于SV-ME支撑多边形(使用本实施方式的命名法)。Teller的方法在阴影事件表面的构造中不采用对应的SE-MV支撑多边形,而是采用这些多边形的平面。
相反,按照本实施方式所构造的SV-ME楔形是通过支撑多边形的为射线的半无限延伸横向地限制的半无限多边形。SV-ME楔形还被限制在对应的一阶轮廓边上。Teller“楔形”实际上是没有横向限制的平面。构造“Teller楔形”的本实施方式是延伸在内部角处的相邻SV-ME楔形的平面直至上述平面相交。
在下面的分析中,示出了:与使用Teller的仅一种类型的支撑多边形的平面相交的方法相比,通过使用根据SV-ME和SE-MV支撑多边形两者构造的可见性事件表面,本方法能够提供明显地更加精确的从区域看的可见性方案。
必须强调,Teller(1992在加利福尼亚伯克利分校的博士毕业论文) 的方法被仅被设计成提供穿过多边形入口序列的有限可见性问题的方案。因为在Teller的方法中,支撑可见性事件表面的边限于入口的边,所以Teller的方法不识别在其上构造可见性事件表面的轮廓边。因为Teller的方法不应用相交平面方法来构造一般多边形网格的轮廓边上的可见性事件表面;下面的分析相当于Teller的相交平面方法(假设将其应用于多面体环境中的从区域看的可见性的一般问题)与枢转和扫描可见性事件表面构造的本方法(其实际上用于更一般的可见性问题)的理论比较。
图9B是示出了与图9A的对象相同的对象的图,但是从沿着网格对象朝向视单元的视角。
图9C和图9D是示出了与要由现有技术的相交支撑平面方法产生的阴影事件表面相比的、由本方法产生的更加精确的阴影事件表面的图。在图9C和图9D中,由本方法的楔形枢转和扫描构造形成的阴影事件表面被示出为叠加在由现有技术方法的相交支撑平面形成的阴影事件表面上。根据图9D的透视图,沿着从视单元朝向网格对象的总体方向看去,可以看出相比现有技术方法,本方法产生了较大的、更加精确的阴影体积。相比仅使用支撑平面的相交部,增加根据扫描三角形(SE-MV支撑多边形)生成的SE-MV楔形产生了较大的保守阴影体积(因此是更加精确的可见实体集合)。不同于相交平面的现有技术方法,扫描视单元轮廓周线的本方法能够解释视单元表面上的关于内部角轮廓顶点处的可见性的包含效果。从而,对于相邻支撑多边形枢转至视单元的不同顶点的具有内部角顶点的任何轮廓周线,本方法会产生比相交平面方法更加精确的结果。
图9D还示出了:由本枢转和扫描方法产生的阴影事件表面与由现有技术的相交平面方法产生的阴影事件表面之间的偏差倾向于随着距被支撑的轮廓边和顶点的距离增加而增加。因此,对于大多数内部角轮廓顶点,本方法的精度能够远高于使用相交平面的现有技术方法的精度。
图9D是示出了与图9C所示的对象相同的对象的图,但是沿着从网格对象朝向视单元的总体方向看去的视角。
用于识别保守支撑多边形以及构造对应的楔形的图像序列视图(flipbook)
当以特定的顺序来观察时,图7至图9的子集提供了用于识别保守支撑多边形以及构造对应的楔形的方法的图像序列视图。下面列举这些顺序:
枢转支撑多边形&楔形:总体上从视单元后面来观察:7A、7C、7C1、7C2。
枢转支撑多边形&楔形:总体上从视单元前面来观察:7B、7D、7D1、7D2。
扫描支撑多边形&楔形:总体上从视单元后面来观察:7A、8A、8A1、8A2、(示出了枢转楔形和扫描楔形的组合的8A3)。
扫描支撑多边形&楔形:总体上从视单元的前面来观察:7B、8B、8B1、8B2、(示出了枢转楔形和扫描楔形的组合的8B3)。
图10A是示出了与图9A和图9B所示的网格多边形和视单元相同的网格多边形和视单元的图,但是以沿着从网格多边形的下方观察的总体方向的透视图。图10A示出了与图9C所示的一阶可见性事件表面(楔形)相同的一阶可见性事件表面。具体地,示出了入射在一阶轮廓边A上的SV-ME WA、入射在一阶轮廓边B上的SV-ME WB、和SE-MV WAB。
还示出了两个另外的一阶SV-ME楔形W4和W5。楔形W4和W5的支撑视单元顶点是V3。示出了这些楔形的相交部。楔形彼此相交并且楔形与其它网格多边形相交,以形成阴影边界多边形(UBP)。这些UBP形成一阶聚合阴影(PAU)面。由PAU围住的空间体积从对应的视单元看去为一阶被遮挡。在图10A中没有明确地示出对应于楔形的相交部的UBP,但是其可以从示出交线的推断出。忽略楔形中的形成完整的PAU的一些楔形,使得能够看见一阶PAU的部分的内部结构(例如,楔形W4、W5、SV-ME WA、SE-MV WAB和SV-ME WB的相交部)。
图10B是与图10A所示的多边形网格(M1)相同的多边形网格(M1)的视图。在图10B中,网格M1和视单元是从与图8C的视角类似的视角来观察的,总体上在网格M1的包括内部角网格边的“顶部”侧处观察。该视图与在图10A中给出的M1和视单元的视图有很大的不同。注意,在这两幅图中,M1的相同边被标记为E并且位于网格M1的“底部”。在这两幅图中还标记了边A和边B。
在图10A中示出了楔形的被遮挡侧。
在图10B中示出了对应UPB的未被遮挡侧。
图10B示出了通过使对应的楔形与其它楔形相交而形成的五个UBP。
UBP-A由对应的楔形(SV-ME WA)与楔形W5(在图10A中示出) 的相交部形成。UBP-A还受SV-ME WA与在图10A中示出的楔形W4的相交部的限制。在图10B中完全隐藏了W4,但是在图10B中将W4与SV-ME WA的相交部示出为标记成F的边。边F是UBP-A的边。另外地,UBP-A与UBP-AB共有公共边(其根据在图10A中示出的SE-MV WAB来导出)。
UBP-AB是由SE-MV WAB与楔形W4以及与UBP-D的楔形的相交部形成。由于对应的楔形SE-ME WAB的扫描构造,所以UBP-AB与UBP-A和UBP-B两者共有公共边。UBP-AB还受到其与对应于UBP-D的枢转楔形(由网格边D支撑)的相交部的限制。
UBP-5是由对应的枢转楔形(在图10A中示出的W5,其具有对应的支撑视单元顶点V3)与W4以及与SV-ME WA的相交部形成。
UPB-D是由入射在一阶轮廓边D的楔形(未示出楔形,但是具有支撑视单元顶点V8)与楔形SV-ME B、SE-MV AB和W4以及由边E支撑的楔形(未示出楔形)的相交部形成。
UBP形成针对M1的PAU的边界。不是所有的形成M1的PAU的UBP都能在图10B中给出的视图中看见。
图10B示出了被其它楔形完全限制的楔形。使用完全受限的楔形(例如,图26的示例性流程图中的PAU的输出敏感构造)的实施方式是可能的。另外地,使用部分受限的楔形(例如,在外部角一阶轮廓边处彼此相交的SV-ME楔形)的实施方式例如可以可选地用在PCT专利申请第PCT/US2011/042309号的图20的示例性流程图中示出的可见性图的输出敏感构造中,该输出敏感构造使用了可以可选地受在图1中示出的示例性流程图的步骤140中所描述的相交相邻的SV-ME楔形限制的SV-ME楔形。另外地,因为所描述的确定楔形与网格多边形的相交部实际上是否为遮挡边界的方法(采用修改的多面体的点包容性测试)在做出该确定之前不需要楔形与其它楔形的先验的局部或全局限制,所以可以在没有这样的局部楔形-楔形限制的情况下使用这些楔形。
图11A是示出了在复合轮廓周线的情况下通过本方法生成的一阶可见性事件表面(楔形)的图。在该情况下,SV-ME楔形(“楔形1”)入射在一阶轮廓边A1上(受一阶轮廓边A1支撑)。“楔形1”与标记为B1的一阶轮廓边相交。如在图2中所讨论的,“楔形1”将一阶轮廓边B1分成被遮挡侧(B1O)和未被遮挡侧(B1V)。该图与图2的图相同。
一阶楔形“楔形1”与一阶轮廓边的相交部是标记为CSV的复合轮廓顶点。复合轮廓顶点对应于复合轮廓周线的内部角。使用突变论的术语,CSV对应于所得到的流形的t顶点。突变论包括对流形面(例如,流形网格)上的点奇异性(例如,CSV或T顶点)以及周线奇异性(例如,一阶轮廓边)的研究。
“楔形2”是一阶可见性事件表面(SV-ME楔形),其由为一阶轮廓边B1的可见部分的段B1V支撑或入射在段B1V上。
因此,“楔形1”和“楔形2”是在点CSV处相交的两个SV-ME楔形。因为“楔形1”和“楔形2”是通过使用不同的支撑视单元顶点(分别是SVV1和SVV2)利用枢转和扫描方法的枢转处理(图4A和图6A)来构造的,所以这两个楔形没有在边上接合以形成连续的阴影可见性事件表面。
本枢转和扫描方法的扫描处理(图5A和图5B以及图6B)用于构造将“楔形1”和“楔形2”接合成连续的阴影可见性事件表面的SE-MV楔形(SE-MV WA和SE-MV WB)。楔形SE-MVWA是根据生成于CSV、SVV1和支撑视单元轮廓周线(SVSC)上的居间顶点IVV1之间的支撑SE-MV三角形来形成的。该支撑三角形的两条边穿过点CSV的延伸形成了半无限楔形SE-MV WA。类似地,楔形SE-MV WB根据形成于CSV、SVV2和支持视单元轮廓周线(SVSC)上的居间顶点IVV1之间的支撑SE-MV(扫描)三角形来形成的。该支撑三角形的两条边穿过点CSV的延伸形成了半无限楔形SE-MV WB。
SE-MV WA和SE-MV WB在公共边处连接。SE-MV WA与“楔形1”共有公共边。SE-MV WB与“楔形2”共有公共边。这四个连接的楔形构成入射在轮廓边A1和B1V上的连续的一阶阴影可见性事件表面的一部分。图11A的视图示出了“楔形1”的被遮挡侧(箭头O1)和“楔形2”的(从视单元看去、一阶可见)未被遮挡侧(箭头U1和U2)。图11A的视图示出了SE-MV WA和SE-MV WB的“被包含”(从视单元看去、一阶可见)侧。如在图11A中示出的,楔形“楔形1”、SE-MVWA、SE-MV WB和“楔形2”的相交部形成了连续的事件表面,箭头U1和箭头U2表示该事件表面的未被遮挡侧。图11B是与图11A所示的结构相同的不同视图。在图11B中,该视图是向上朝向“楔形1”的被遮挡侧和“楔形2”的未被遮挡侧看去。图11B还示出了SE-MV WA和SE-MV WB的“被包含”(从视单元看去、一阶可见)侧。
这总结了第一实施方式的描述。在本说明书中,提出了用于生成一阶可见性事件面的处理。另外的实施方式指定了处理网格的多边形和边以生成一阶可见性事件表面的次序。再另外的实施方式精确地详述了如何使用可见性事件表面来确定被遮挡的多边形和多边形片段。在下面的替代实施方式的详细描述中,公开了以下网格遍历算法:在倾向于具有输出敏感性能的从前到后的可见性图构造算法中,有效地交错一阶楔形构造和从视单元看去的可见性确定。
图11A示出了被标记为“楔形2”的入射在B1V上的一阶枢转楔形。图11A示出了由都在复合轮廓顶点(CSV)处相交的一阶枢转楔形和扫描楔形构成的连续阴影事件表面。
图12A至图12C是示出了用于识别可见性图中的具有高效静态遮挡(ESO)的从视单元看去被遮挡的区域方法以及用于对被遮挡的区域边界和对应的网格轮廓周线进行保守简化的处理的示例性流程图。
在一些实施方式中,使用现有技术的不连续性网格化方法或在PCT专利申请第PCT/US2011/042309号的图20和有关的图中描述的输出敏感性构造方法,采用利用示例性图1到图6的方法构造的一阶保守线性化阴影事件表面来生成保守的从区域看的可见性图。
一般地,由于识别和移除了更多的被遮挡的多边形面积,因此从以高精度计算的可见性图中导出的PVS导致运行时间渲染期间较小的透支。
但是,遮挡图的每个OB段还产生了附加的被添加至可见性图/PVS的多边形,这是因为与该OB段相交的原始三角形的重新三角化。(对于一种重新三角化方法,参见M.deBerg,M.van Dreveld et.al in “Computational Geometry Algorithms andApplications,Springer c.1997,第45页,其全部内容通过引用合并到本申请中)。该附加的几何图形易于简单地通过增加提交至图形流水线的初始几何图形阶段的基元数量来减慢运行时间渲染。
为了减少运行时间渲染的总体成本,实施方式包括用于对由被遮挡的区域产生的栅格化减少的成本与因为被遮挡区域引入的附加几何图形引起的几何图形处理的增加的成本进行平衡的方法。
该方法采用被称为有效静态遮挡(ESO)的启发法来消除与小面积的被遮挡区域对应的被遮挡的区域,尤其是它们引入了较大量的附加三角形的情况。
在有关的方法中,ESO还用于指导遮挡边界的保守简化,同时尝试最大化被遮挡区的表面积。
在一些实施方式中,将图12A至图12C的处理作为离线可见性预计算来进行。该结果是最佳化的从区域看的可见性图及有关的PVS。结合图13、图34和有关的图提出了:通过将网格多边形的特定边周线标记为与具有高效遮挡的被遮挡区相关联的轮廓边来有效地存储可见性图的结构的有关方法。在该方法中,能够使用预标记的轮廓边在运行时间根据相邻(包含)视单元的可见性图/PVS来有效地计算对于视单元的可见性图/PVS。图12A至图12C的方法包括不仅简化可见性图的遮挡边界而且将该信息存储为原始网格对象的对应的简化了的轮廓周线的步骤。作为预计算来进行该处理以使用图20及有关图的运行时间方法准备可见性图/PVS数据的实际增量构造。
在一些实施方式中,当碰到可见性图的被遮挡区(OR)时,处理流程从步骤1205处开始。
处理流程行进至步骤1207,以确定在该OR中完全被遮挡的原始网格三角形的数量。在替代的实施方式中,确定部分被遮挡的原始网格三角形的数量。也是在步骤1207中,使用位于对其构造可见性图的视单元内的视点,来对该OR中部分被遮挡的原始网格三角形和完全被遮挡的原始网格三角形的图像-空间面积进行估计。
处理流程行进至步骤1210以确定由OR边界处的原始网格三角形的重新三角化产生的附加三角形(位于毗连当前OR的未被遮挡区)的数量。
处理流程行进至步骤1213,其中采用在步骤1207和1210中确定的测量值来确定针对整个OR的被称为有效静态遮挡(ESO)的启发式变量。
在一些实施方式中,ESO是被确定为与OR中被遮挡的三角形/三角形片段的图像空间面积(ISA)成一定比例的变量。在另外的实施方式中,ESO启发还包括反映栅格化的运行时间成本的该项的系数。
根据一些实施方式,ESO被确定为与由于OR边界处的重新三角化而在网格中产生的附加的未被遮挡的三角形的数量成一定反比。在另外的实施方式中,ESO启发还包括反映几何处理的运行时间成本的项的系数以及反映附加三角形的存储和传输成本的其它系数。尽管使用了图20及有关图的增量运行时间PVS构造方法,但是可以通过在运行时间进行重新三角化来消除这些附加的三角形的存储/传输成本。
根据一些实施方式,通过以下公式来表示ESO:ESO=F(被遮挡多边形的数量,被遮挡多边形的图像空间面积,1/在遮挡边界处添加的新可见多边形的数量)。在另外的实施方式中,可以用任何期望的函数来表示ESO。
本方法的其它实施方式是可能的:其包括特定OR的在生成实际上产生提升了的运行时间渲染性能的遮挡的“有效性”确定中的附加变量。
处理流程从1213行进至判决步骤1215以确定ESO是否大于或等于指定值“值1”。如果在判决步骤3015中确定ESO不大于或等于值“值1”,则处理流程行进至步骤1217,其中从VM中移除整个OR并且存储多边形网格的原始的、未重新三角化的三角形。对此,在实施方式中,如果与OR相关联的ESO不大于或等于“值1”,则OR不是有效的遮挡边界。例如,ESO值随着由重新三角化处理创建的新三角形的数量增加而减小,表示可能没有有效地保持OR,这引起重新三角化处理。处理流程在1217处终止。
以下替代实施方式是可能的:仅重新存储部分被遮挡的那些原始的网格三角形而保持OR。部分被遮挡的三角形是通过OR边界(OB)处的重新三角化来产生附加三角形的那些三角形。通过仅存储这些三角形,减少了VM中的三角形数量而且仍然从VM/PVS中移除了完全被遮挡的三角形。
另一方面,如果在判决步骤1215中确定ESO大于或等于值“值1”,则处理流程行进至步骤1219,以确定在毗连当前OR的被遮挡区中被构造为OR边界的三角形的附加数量是否超过“值2”。
如果在判决步骤1219中确定所构造的三角形的附加数量不大于或等于“值2”,则处理流程行进至步骤1218,其中当前OR(和通过当前OR的边界上的重新三角化产生的三角形)保持不修改。对此,如果附加三角形的数量很小,则可以更加有效地保持OR。
另一方面,如果在步骤1219中确定所构造的三角形的附加数量大于或等于“值2”,则处理流程行进至步骤1220。
步骤1220至1226实施以下方法:尝试通过保守地移除OR和VM的与OR的遮挡边界相交的相邻露出区中的三角形,来减少在相邻的未被遮挡的区域上引起的附加三角形的数量。使用该方法,现在认为相邻的未被遮挡区中的、先前被限制在OR遮挡边界处的三角形完全未被遮挡,并且 使用原始的网格三角形来取代这些受限的三角形。这通过消除遮挡边界处的重新三角化而保守地增加了从对应视单元看去未被遮挡的面积并且减少了三角形的数量。
处理流程行进至步骤1220,其中将“边界_三角形(BOUNDARY_TRIANGLES)”识别为与VM遮挡区的遮挡边界相交/毗连的那些三角形。
处理流程行进至步骤1221,其中将“边界_三角形”从OR中移除并且将对应的(重新三角化的)边界三角形从VM的相邻露出区移除,并且使用原始的、较大的未重新三角化的网格三角形来取代。这些较大的三角形包括原始地仅被包括在被遮挡区中的一些表面积,但是在未重新三角化步骤1221后,认为较大的原始三角形完全被遮挡,即使只有上述三角形的部分可能位于被遮挡区中。
处理流程行进至步骤1222,其中将OR与相邻的露出区之间的新边界设置成由OR的与在步骤1221中识别的原始的网格三角形相邻的三角形形成的多边形边界。该步骤保守地将OR的边界重新限定为位于原始计算的OR内。通过保守地重新限定OR边界还潜在地减小了边界的复杂度并且减少了OR中的三角形的数量。
后续的判决步骤1223与判决步骤1215类似,并且在该情况下确定如在步骤1220至1222中确定的、沿着原始网格三角形的边的遮挡边界的保守的重新限定是否产生了遮挡足够数量的三角形和/或遮挡具有足够的图像空间面积的三角形的遮挡区。
如果在判决步骤1223中确定被遮挡的三角形的数量和/或图像空间面积超过了预定值(例如,“值44(VALUE44)”),则处理流程行进至步骤1224,其中将遮挡区和相邻的露出区保持在它们的当前状态。
另一方面,如果确定OR中三角形的数量或ISA(图像空间表面积)没有超过预定值,则处理流程行进至处理5-1,其从确定OR中的三角形细分水平是否超过了特定值(例如,“值4(VALUE4)”)的判决步骤1225(图12B)开始。
如果在判决步骤1225中确定OR中的三角形细分水平没有超过预定值,则处理流程行进至步骤1226,其中对OR的三角形进行进一步的细分(例如,使用中点-边细分来根据1个三角形创建4个三角形)。伴随1225的测试的该过程使得OR中的还延伸至相邻的露出区的极大的三角形被 逐渐细分成较小的三角形,直到被遮挡区中的三角形的数量和/或三角形的ISA超过“值44”(步骤1223)或直到细分的水平超过“值4”为止。处理流程从1226行进至处理12-2,其将处理流程返回至步骤1220(图12A)。
如果在判决步骤1225中确定OR中的三角形的细分水平超过了预定值,则处理流程行进至步骤1227以保守地简化OR遮挡边界。执行这些简化以增加OR的ESO。
在步骤1227中,将形成轮廓周线(根据其来构造包括当前OR的边界的遮挡边界(OB)段)的轮廓边的按次序的列表存储为数组“SIL_LIST”。对于任何内部角轮廓顶点(无论简单或复合),VSVSC的相关联的视单元轮廓边也被存储在“SIL_LIST”中,这是因为它们也具有用于OR边界的对应楔形。
处理流程行进至步骤1228以将数组的初始段存储在变量SIL中。
处理流程行进至步骤1229以将“SIL_LIST”中的下一个段存储在变量“NEXT_SIL”中。
处理流程行进至判决步骤1231以确定SIL和“NEXT_SIL”是否形成轮廓周线的外部角(凸角)。
如果在判决步骤1231中确定SIL和“NEXT_SIL”形成轮廓周线(和对应的OR边界)的外部角(凸角),则处理流程行进至处理12-4,其从步骤1240处开始,以在连接SIL和“NEXT_SIL”的非共有顶点的线段上构造SV-ME楔形。使用先前指定的VM图构造方法,将楔形与网格多边形相交以形成DM_SEG,针对从视单元看去的可见性对上述DM_SEG进行测试以确定上述DM_SEG是否是VM的有效OB_SEG。这些新的保守的OB_SEG可以与网格三角形相交并且其它的OB_SEG不与原始的OR边界相交。
处理流程行进至步骤1242,确定新的OB与原始的OB之间的区域的ESO并且将其存储在变量D_ESO(表示新旧OB之间的差区域的ESO)中。该ESO对刚通过OB的保守换位已经被移除了的遮挡区的“有效性”进行估计。
处理流程行进至步骤1250以确定D_ESO是否小于预定值“值3(VALUE3)”。
如果在判决步骤1250中确定D_ESO小于预定的“值3”,则处理流 程行进至步骤1260。如果差区域的D_ESO很低,则在差区域中被遮挡的三角形的数量很小和/或它们具有相对小的表面积。此外,低的D_ESO值可以指示在差区域中存在通过重新三角化会引起附加的几何图形的许多部分地被遮挡的网格三角形。
在步骤1260中,因为差区域具有相对低的D_ESO值,所以将OR的在步骤1240中重新计算的保守边界存储为对于该图的区的新OR边界。
处理流程行进至步骤1270,其中可选地,可选地存储通过新OR边界引入的重新三角化的三角形。再一次可以将部分被遮挡的网格三角形保守地认为是未被遮挡,从而减少了会通过重新三角化产生的新几何图形的量。
处理流程行进至步骤1280,其中将对于已经被有效地折叠(collapse)成单条保守的轮廓边的两条轮廓边SIL和“NEXT_SIL”的数据从表示网格对象的被标记的从视单元看去的轮廓周线的链式列表中移除。如结合图13及实施方式的有关图所详细讨论的,将被标记的轮廓数据存储为与简单的轮廓顶点和CSV对应的数据结构的链式列表。在步骤1280中,对链式列表的单个节点(“CONTOUR_NODE”)进行修改以反映边的折叠。
如果在判决步骤1250中确定差区域的D_ESO不小于预定值,则处理流程行进至步骤1284,其中保持原始的OB,这是因为:由于OR边界处的重新三角化,差区域易于有效地遮挡相对大数量的网格三角形或网格三角形的具有相对大表面积的部分,而不引入太多附加三角形。
处理流程行进至步骤1290,其中将SIL设置成“NEXT_SIL”并且处理流程行进至处理12-5,其将处理流程返回至步骤1229,其中通过将“NEXT_SIL”设置成“SIL_LIST”中的下一个未处理的边来有效地增大“SIL_LIST”。
如果在判决步骤1231中确定SIL和“NEXT_LIST”形成与OR的边界对应的轮廓周线的内部角,则处理流程行进至处理12-3,其从步骤1235开始(图12C),确定与“SIL_LIST”对应的、正在处理的当前周线是被遮挡区(OR)的外周线还是该区的内周线。
如果在判决步骤1235中确定当前周线是外周线,则处理流程行进至步骤1237以将变量“最佳侧(BESTSIDE)”设置成值“内侧(INSIDE)”。
如果在判决步骤1235中确定当前周线不是外周线,则当前周线是内周线并且处理流程行进至步骤1239,以将变量“最佳侧”设置成“外侧 (OUTSIDE)”。
处理流程行进至步骤1245,其中识别位于SIL或“SIL_NEXT”的两侧的两个轮廓边,使得上述边尽可能近地位于周线上(在周线数组“SIL_LIST”)以及使得上述边的对应楔形平面相交以形成在周线的“最佳侧”上相交的线;其中,对于外周线,“最佳侧”是周线的“内侧”,而对于内周线,“最佳侧”是周线的“外侧”。这确保了内部角轮廓顶点(简单或复合)的区域中的周线的保守简化。该处理可以以由变量N指定跨度一次“折叠”不止一个边。
处理流程行进至步骤1255,其中确定新OB与原始OB之间的区域的ESO并且存储在变量D_ESO(表示旧OB与新OB之间的差区域的ESO)中。该ESO对已经通过对OB的保守换位移除了的遮挡区的“有效性”进行估计。
处理流程行进至判决步骤1265以确定D_ESO是否小于预定值“值3(VALUE3)”。
如果在判决步骤1265中确定D_ESO是否小于预定的“值3”,则处理流程行进至步骤1275。如果差区域中的D_ESO很低,则差区域中被遮挡的三角形的数量很小和/或它们具有相对小的表面积。此外,低的D_ESO值可以表示在差区域中有许多部分被遮挡的网格三角形,其会通过重新三角化引起附加的几何图形。
在步骤1275中,因为差区域具有相对低的D_ESO值,所以将OR的在步骤1245中重新计算的保守边界作为对于图的区域的新OR边界来存储并且由新的OR边界引入的重新三角化的三角形还可选地被存储。再次,可以将部分被遮挡的网格三角形认为是未被遮挡,从而减少了将会通过重新三角化产生的新几何图形的量。
处理流程行进至步骤1289,将被有效地折叠成了包括延伸的轮廓边的保守宽度的、针对N个轮廓边的数据从表示网格对象的标记的从视单元看去的轮廓周线的链式列表中移除以及从“SIL_LIST”中移除。如结合图13及有关图的讨论中,将所标记的轮廓边存储为与简单的轮廓顶点和CSV对应的数据结构链表。随后在处理流程中,在步骤1280中,可以对链式列表的节点(“CONTOUR_NODE”)进行修改以表示折叠的边。
如果在判决步骤1265中确定差区域的D_ESO不小于预定值,则处理流程行进至步骤1291,其中由于差区域往往实际上遮挡相对大数量的 网格三角形或网格三角形的具有相对大的表面积的部分,而不会因OB边界处的重新三角形化引入太多附加的三角形,因而保持原始的OB。
处理流程行进至步骤1295,其中将SIL设置成“NEXT_SIL+N”,N表示由步骤1245的保守简化处理取代或折叠的边的跨度。处理流程行进至处理12-5,其将处理流程返回至步骤1229,其中实通过将“NEXT_SIL”设置成“SIL_LIST”中下一个未处理的边来有效地增加“SIL_LIST”。
图12的方法适用于简单轮廓周线和复合轮廓周线两者。对于复合轮廓周线,内部角轮廓顶点可以是CSV。将该方法作为后处理应用至已完成的可见性图。从而,对与OB_SEG对应的轮廓边进行标记。如前面所描述的,在从视单元看去的可见性图的构造期间,最终可以将三角形网格上的单个一阶轮廓边细分成多个可见的子分段。另外,这些分段的每一个分段可以支撑与另一轮廓边相交以生成与SE-MV扫描楔形相关联的CSV的SV-ME楔形。在本方法中,“SIL_LIST”由反映简单或复合的轮廓周线的可见复杂度的各个子分段组成。
图12D是示出了视单元和标记为“网格F”和“网格G”的两个多边形网格的3D隐藏线图。该图是网格对象总体上布置在观察者与视单元之间的透视图。
“网格F”是表示具有六个边的盒状对象的三角形网格。“网格F”的每个矩形面被建模为两个三角形。在“网格F”中存在12个三角形,仅示出了6个,其它6个被遮挡从而未示出。“网格F”的一个三角形由标记为V1、V2和V3的顶点来形成。
“网格G”是具有21个多边形的多边形网格,这些多边形中的一些用三角形来表示,而其它多边形则用矩形来表示。在视图中,这些多边形的中的一些多边形被遮挡。
图12E是示出了与图12D的透视图相同的透视图的3D隐藏线图。在图12E中,示出了使用视单元作为作源的、从视单元看去的可见性图的一部分。构造在“网格G”的一阶轮廓边上的楔形与“网格F”相交以产生标记为OR-G的遮挡区。在此不示出上述楔形。遮挡区OR-G被由7个遮挡边界分段组成的遮挡边界包围。OR-G完全位于由顶点V1、V2和V3形成的原始网格三角形内。
在一种实施方式中,根据图20及有关的图的3D网格遍历处理来构 造包围OR-F的遮挡边界分段的构造。具体地,在图20所示的示例性流程图中的步骤2068中将这些遮挡边界分段添加至相交的多边形。
在如图20的示例性流程图的步骤2083中所描绘的3D网格遍历处理的另一步骤中,将与遮挡边界分段相交或包含遮挡边界分段的三角形重新三角化成被遮挡区和未被遮挡区。图12E示出了使用OR-G的遮挡边界分段对原始的网格三角形V1-V2-V3进行该示例性重新三角化的结果。在该重新三角化期间,原始的三角形V1-V2-V3被重新划分成10个新的三角形,其中7个与OR-G的7个遮挡边界边一一对应,3个另外的三角形是因为OR-G进一步将三角形V1-V2-V3细分成由OR-G的顶点限定的3个区域而产生的。
因为遮挡区OR-G完全位于“网格F”的单个原始三角形(V1-V2-V3)内,所以它不包含完全的三角形。即,引入“网格F”上的OR-G的遮挡边界的多边形网格(“网格G”)不完全遮挡甚至是将“视单元”作为源的“网格F”的单个网格多边形。因此,被OR-G完全遮挡的网格三角形的数量为0。
三角形V1-V2-V3部分地由“网格G”遮挡。该部分遮挡的区域是OR-G区域。在该示例中,OR-G的表面积相对于包含三角形V1-V2-V3的表面积很小。
在该示例中,OR-G没有完全遮挡任何网格多边形,并且遮挡仅单个多边形的相对地小的表面积。因为遮挡区的有效静态遮挡(ESO)与被遮挡区完全遮挡的多边形的数量和完全或部分地被遮挡的多边形的表面积成一定正比,所有通过这些因子不充分地增加OR-G的ESO。
遮挡区的ESO与由在对应的遮挡边界处的重新三角化创建的新多边形的数量成一定正比地变化。在OR-G的示例中,遮挡边界处的重新三角化产生了被划分成10个新三角形的单个原始三角形。
因此,在该示例中,ESO的正比因子(被完全遮挡的多边形的数量和被遮挡的多边形的表面积)以及反比因子(例如,由遮挡边界处的重新三角化生成的新多边形的数量)两者往往会产生对于OR-G的ESO相对小的值。
如在图12A至图12C的示例性流程图中所描述的,在一种实施方式中,可以将具有低ESO的OR-G完全从可见性图中移除(步骤1217)。可替代地,根据图12A至图12C的示例性流程图可以简化OR-G的遮挡 边界并且重新确定对于简化了的遮挡边界的ESO。在一种简化方法中,通过将遮挡边界等同于遮挡区内的完全被遮挡的原始网格三角形的连接集的边界来使得遮挡边界较小(步骤1220至步骤1222)。这导致对如露出的任何部分地被遮挡的多边形进行重新限定。在该情况下,从从视单元看去的可见性图和显影的PVS消除仅完全地被遮挡的多边形。在另一种简化实施方式中,保守地简化遮挡区的实际遮挡边界(步骤1223至1295)。
根据在所描述的一种实施方式中的用于确定ESO的方法采用测量遮挡的因子。在一种实施方式中,ESO的确定还包括反映通过在对应的遮挡边界处的重划分生成的新多边形的数量的因子。该方法适合以下实施方式:可以基于复合每个因子权重的系数来调节各个因子的相对重要性。
操作原理:使用标记的轮廓边的PVS增量信息的有效存储以及可见性图/PVS的增量运行时间构造。
PVS数据,尤其如果从高精度可见性图推导出的PVS数据可以具有高的存储成本。如前所述,PVS增量是通过仅存储相邻视单元的PVS之间的差来减少PVS数据的存储成本的现有技术方法。在Chhugani等人(2005)的PVS增量方法中,PVS增量是针对每个视单元边界存储的多边形基元ID(称为增量I)的列表。使用行程编码来存储由两个组件:增量G+(新近可见的基元)和增量G-(新近被遮挡的基元)组成的增量I。即使使用该压缩,但是,PVS数据增量很大。对于具有1300万个三角形和500,000个视单元的动力模型,需要7GB来存储PVS增量对象ID。
实施方式包括使用隐式方案来有效地存储PVS增量的方法,其中通过比较对应的可见性图来对模型的产生几何图形的针对具体的视单元-视单元过渡的明显露出或明显遮挡的轮廓边进行识别。在离线可见性预处理中识别并且表姐这些动态地遮挡或动态地露出的轮廓周线。该标记采用利用一阶轮廓边的定义来实现明显的算法压缩的有效的行程编码。结合图13及有关的图详细地给出了该行程标记方法。
在运行时间,通过以下处理根据相邻视单元的可见性图/PVS来构造用于视单元的可见性图/PVS:
1)进行相邻视单元的可见性图的修改的3D网格遍历。该快速遍历使用标记的明显地遮挡或明显地露出的轮廓周线来迅速地构造新近构造的可见性图上新的遮挡边界。结合图20、图21、图22和有关的图给出细节。
使用这些新的遮挡边界,在运行时间遍历处理期间不对新近被遮挡的三角形进行遍历。因为在新的PVS中仅表示出了遍历的三角形,所以该方法实际上使得能够生成移除了新近被遮挡的三角形的PVS。结合图19、图20及有关的图给出了细节。通过消除了在大多数情况下对明确地存储增量G-信息(例如,新近被遮挡的三角形的大的列表)的需要来减少了增量数据存储和传输的成本。
2)将新近露出的几何图形作为可以包括与具体的视单元过渡相关联的ID和/或实际的几何图形的增量G+分组来添加,其中新近露出的几何图形“附接”至与VM的与新露出相关联的边界。因为可以以视单元-三角形-分段精度来计算从区域看的可见性图,所以新近可见的三角形中的许多三角形可以是原始网格三角形的分段。根据相邻VM的VM增量构造的本方法适合在运行时间遍历/VM构造期间对三角形进行重新三角化的技术,其避免了必须将三角形分段存储在增量G+分组中。
在一些实施方式中,本方法使用层次地布置的视单元。相对大的父视单元包含较小的子视单元。使用先前描述的增量构造方法根据对于相邻的大的视单元和另外的增量G+数据来构造用于大的视单元的VM/PVS。因为对于大的视单元之间的视单元过渡之间的增量G+数据往往很大,所以自然地聚集上述数据,从而减小了加载增量G+所需的磁盘访问次数。
通过在运行时间进行修改的3D网格遍历来根据父(包含)视单元的VM/PVS导出对于子(被包含的)视单元的VM/PVS。因为子视单元的VM/PVS是父视单元的VM/PVS的子集,所以用于根据父VM构造子VM的运行时间3D网格遍历方法仅使用标记的动态地遮挡的轮廓周线来构造遮挡边界,其绕过在从父到子的过渡中被遮挡的几何图形。这使得在不需要附加的增量G+数据的情况下构造用于运行时间显示的更加精确的VM/PVS。
视单元的层次组织还有利于PVS数据增量的有效流处理。在一些实施方式中,仅需要传输与相对大的父视单元之间的过渡对应的增量G+数据分组。仅使用增量G-信息(在运行时间根据标记的轮廓信息来生成)来根据父视单元的VM/PVS来构造对应的子视单元的VM/PVS。因为通常寻找、访问和传输数据单元所需的总体时间随着分组的大小的增加而减小,所以仅处理父增量G+信息是更加有效的。
使用所体现的标记的轮廓信息和相关联的PVS数据增量分组,根据相邻(同胞)视单元的VM/PVS来有效地构造精度受控的VM/PVS(使 用增量G+分组和运行时间3D网格遍历来绕过新近被遮挡的三角形)。对于父视单元至子视单元过渡,因为使用绕过新近被被遮挡的三角形的标记的轮廓边暗示信息通过对父视单元的VM的重新遍历可导出对于子视单元的整个VMS/PVS,所以不需要增量G+分组。
根据一些实施方式,将运行时间处理作为预取操作来进行。在交互性漫游中,将当前视点的位置用于基于视单元(其还是模型的导航单元)的连接性以及当视点速度和其它因子来预测可能的未来视单元位置。使用该知情推测预取,增量地构造并且维持在当前视单元(即,包含当前实际的或预测的视点的视单元)可到达附近处的父视单元的VM/PVS。在指定的时间段内从当前视单元可到达的视单元的集合可以是包括观察者的移动的固有导航约束的受约束因子,包括如最大实际或预测的视点速度和加速度以及调节速度和加速度等因子。建模环境的包括障碍物和其它冲突限制的局部结构还能够影响可以访问视点的可到达附近处的相邻视单元的速度,这是因为构造一般不需要对增量G+数据进行流处理。
本方法实现了用于经由本地或远端服务器的交互性内容的流传输的有效的基于可见性的编解码器。该编解码器利用交互性漫游的固有的动态或临时的可见连贯性来最小化所请求的流处理所需的带宽。
不同于基于图像的流处理方法,对可见性事件几何图形和纹理信息进行流处理所需的带宽相对地独立于显示器分辨率。实际上本方法倾向于以高分辨率来增加运行时间渲染性能,这是因为以在运行时间增量地构造VM的相对地小的CPU成本,维持提升几何图形和栅格化CPU性能两者的非常精确的PVS。此外,因为该编解码器可以实施为推测预取;所以它不同于基于图像的流处理方法,它的性能相对地独立于客户端-服务器连接延迟。
图13A、图13B和图13C示出了标记轮廓边的方法所采用的数据结构
如在前面的章节中所描述的,实施方式包括以下方法:识别动态地遮挡或动态地露出的网格轮廓边并且在离线的后处理中对它们进行标记;随后使用标记轮廓边来在运行时间实现增量的VM/PVS。
如结合图12所描述的,还可以基于VM中对应的遮挡边界分段的有效静态遮挡来对从区域看的轮廓周线进行简化。如在图12中示出的,可以将简化了VM边界存储为简化了标记轮廓周线(随后会根据其在运行 时间构造简化的VM边界)。
图13A包括用于标记简单和复合轮廓周线的数据结构。
在一些实施方式中,三角形流形网格的简单的轮廓周线是包括多边形的边的连接序列。多边形可以或不可以形成循环。
假设简单的轮廓周线未被遮挡,则仅使用从视单元看去的轮廓边的一阶定义;可以通过标记周线的单条边来有效地标记整个简单的轮廓周线。给定单个标记的开始边(或指向该边的数据结构),可以通过简单地寻找连接边以及确定哪条连接边是一阶轮廓边来识别整个连接的一阶轮廓周线。在本方法中采用该事实以通过在运行时间识别大多数轮廓周线边来减少存储标记轮廓周线的成本。
从视单元看去的轮廓周线可以是复合轮廓周线。如果从区域看的可见性事件表面(例如,UBP)与(不同的)轮廓边相交,则产生复合的轮廓周线。该相交部是复合轮廓顶点或CSV。
周线的每个内部角顶点,不管是简单的还是复合的,都可以因扫描处理而导致不止一个的从区域看的SE-MV阴影事件表面(楔形/UBP)。从而,可以有比周线中的边或顶点的数量更多的入射在周线上的事件表面。
在一些实施方式中,将用于标记轮廓周线的数据结构组织为与入射在实际的轮廓边和顶点的实际事件表面对应的数据结构数组。因为在运行时间能够迅速地识别相邻轮廓边以及在运行时间能够生成UBP(和可见性图的对应的OB_SEG),所以实际上不需要存储数组元素中的许多元素。
通过在运行时间识别/生成周线元素来实现固有的算法压缩而产生的减少了的存储成本能够相对于直接使用所讨论的图13A的周线节点信息生成该信息的运行时间成本被平衡。该信息用于在运行时间加速生成未存储的数据。图13A和图13B示出了用于标记轮廓周线的数据结构的实施方式。
在一些实施方式中,针对每条周线来存储数据结构“Contour”。该数据结构包括分别指特定的网格对象、网格的边和边的顶点的三个字段。在存储形式中,所有的参考是对于特定的元素数组的整型索引,尽管这些引用可能变成指针。结构“Contour”还包含字段intnode_array,其是对类型Contour_Node的具体的数据结构数组的索引。“struct Contour”还包含给出了对于周线的node_array的长度的整型字段num_nodes。
数据结构“Contour”还包含整型字段VMinfo,其是对于类型 VM_Info的数据结构数组中的特定元素的索引。VM_info(在本说明书的随后部分对其进行详细的描述)包含提供特定网格的信息并且与UBP相交的网格三角形与Contour_Node相关联。通过预计算该信息并且将其与跨度的初始轮廓元素存储在一起,如果相关联的UBP与相同的三角形网格相交,则能够在运行时间迅速地构造与由Contour_Node编码的轮廓元素的整个跨度相关联的所有可见性图OB_SEG。(结合图19及有关的图来对采用相交多面体流形的固有连贯性的该处理进行详细的描述)。
数据结构“Contour”还包含整型字段“last_contour”,其是“Contour”结构数组中的表示当前“Contour”连接在其尾端的特定“Contour”的索引。数据结构“Contour”还包含整型字段“next_contour”,其是“Contour”结构数组中表示当前“Contour”连接在其头端的特定“Contour”的索引。
数据结构“Contour_Node”存储关于周线的各个元素的信息。如前面所表示的,因为可以算法地生成入射在周线上的事件表面中的许多事件表面,所以不需要明确地存储它们。从而,相比实际的轮廓周线具有的边和阴影事件表面,Contour所指的Contour_Node阵列通常具有较少的元素。
数据结构“Contour_Node”包含字符型字段“node_type”,其表示在该节点中包含什么类型的轮廓周线信息。如果节点对应于轮廓周线的外部角,则将该字段的值设置为1。如果节点对应与轮廓周线的简单的内部角,则将该字段的值设置为2。如果节点对应于复合轮廓顶点(CSV),则将该字段的值设置为3。
数据结构“Contour_Node”还包含字符型字段span_type,其表示与节点对应的跨度类型。如果节点表示对于周线的外部角轮廓边的跨度,则将值设置为1。如果节点表示可以包括外部角和内部角两者的跨度,则将值设置为2。如果节点表示要被“跳过”以简化周线的轮廓边的跨度(如结合图12中的步骤1280和1289所描述的)。
数据结构“Contour_Node”还包括表示所代表的跨度的长度的整型字段。一般地,这对应于生成在该跨度中碰到的轮廓边和顶点上生成的阴影事件表面的数量,从而,可以大于跨度中的轮廓顶点的数量。
数据结构“Contour_Node”还包含整数字段ninfo,其是对于数据结构数组的存储了对于节点的附加信息的特定元素的索引,取决于字段 node_type的值。
数据结构“OC_Info”可以存储由具有等于1的node_type的Contour_Node所指的附加数据。字符字段svsc存储对于视单元的支撑对应于跨度中一阶轮廓边的阴影事件表面(UBP)的特定顶点的索引的参考。该可选信息可以加速UBP的运行时间生成但是增加了存储大小。因为可以使用单条周线来在运行时间生成与多个视单元对应的多个UBP,该附加数据可以在运行时间一次构造而不是作为标记轮廓周线信息用数据库来存储。
数据结构“IC_Info”可以存储由具有等于2的node_type的Contour_Node所指代的附加数据。可选的字符字段ic_type是表示说应该采用哪种类型的构造策略(相邻SV-ME平面的枢转和扫描或相交)来在运行时间生成入射在内部角声的SE-MV事件表面的暗示。尽管可以在运行时间使用先前描述的启发法来做出该判决,但是可以使用预先存储的数据来避免运行时间测试。注意,还能够通过存储对于Contour_Node的span_type(值4表示对于跨度中的所有内部角轮廓顶点的枢转和扫描vs值5表示针对跨度中所有的内部角轮廓顶点的相邻SV-ME平面的相交)的不同值来针对轮廓顶点的整个跨度来存储该暗示数据。
数据结构“IC_Info”可以包含可选的字符数组字段SVSC[4],其表示形成在其上构造内部角轮廓顶点的SE-MV事件表面的支撑视单元轮廓周线的特定视单元的暗示。
IC_Info数据结构中所包含的所有信息在运行时间生成,从而实际上不需要用网格数据库来存储。
数据结构CSV_Info可以存储由具有等于3的Contour_Node指代的附加数据。整型字段“mesh”存储对于与周线中的当前UBP相交的特定三角形网格的索引。整型字段“edge”存储对于相交的三角形网格的特定边的索引。这两个字段用于限定形成在由轮廓周线的当前元素所支撑的UBP与另一条轮廓边的相交部处的CSV。再一次,因为在半数情况下(沿着使得相关联的UBP/VM周线“离开”更远的网格的方向处理当前周线的情况下)很容易确定与UBP相交来形成CSV的轮廓边,所以字段“网格”和“边”是可选的。在沿着使UBP和对应的VMOB_SEG被构造成碰到新网格的方向来在运行处理周线的其它情况下
“mesh”和“edge”字段可以充分地减少新的VM周线的增量构造 的运行时间成本。
数据结构CSV_Info还可以可选地将CSV的x、y、z值存储在双数组字段point[3]中。CSV_Info结构还可以包含可选字段char ic_type和char SVSC[4],如结合数据结构IC_Info所描述的。
因为CSV_Info的所有字段都是可选的,所以不是每个Contour_Node都可以链接至CSV_Info数据结构,再一次减少了存储成本。
数据结构VM_Info存储关于Contour数据结构的初始轮廓元素相关联的可见性图遮挡边界分段的信息。可以使用网格和边两者的与这些轮廓元素相关联的UBP与VM相交的存储来在运行时间计算VM的对应OB_SEG。当确定了OB_SEG时,则在运行时间迅速地生成与轮廓周线对应的VM遮挡边界多义线的后续OB_SEG。这与CSV_Info数据结构中的用于加速VM数据的运行时间构造的网格和边参考的存储类似。
下面还再现了在图13A和图13B以及图13C中示出的针对标记轮廓周线的数据结构。
struct Contour
{
int mesh;//网格的索引
int edge;//网格的边的索引
int vertex;//周线的开始顶点的索引
int node_array;//Contour_Node数组的索引
int num_nodes;//coutour_node数组的长度
int VMinfo;//VM_Info数组的索引
int last_contour;//下一个连接的周线的索引,头连接
int next_contour;//最后一个连接的周线的索引,尾连接
char next_edge_type//如果等于1,则下一条边是下一条连接的周线边
//如果等于0,则下一条边是下一条先前标记的边
char contour_type//如果等于1则动态遮挡,如果等于0则动态露出
//如果等于2则为混合周线
};
struct Contour_Node
{
char node_type;//1=外部角,2=简单的内部角,3=CSV
char span_type;//1=仅运行外部角
//2=运行可以包含外部角和内部角
//3=跳过span_length分段&连接至形成简化的轮廓周线边的下
//一个顶点
//4=使用枢转和扫描在运行的所有内部角上构造SE-MV
//5=通过与相邻的SV-ME平面相交来构造所有内部角事件表面
int span_length;//在周线到下一个节点之前所生成的阴影事件表面(UBP)的数量
int ninfo;//如果node_type等于1则ninfo是OC_Info数组的索引
//如果node_type等于2则ninfo是IC_Info数组的索引
//如果node_type等于3则ninfo是CSV_Info数组的索引
};
Struct VM_Info
{
int mesh;//对于包含与运行中的一阶轮廓元素对应的OB_SEG的网格的索引
int triangle;//对于包含运行中的一阶轮廓元素对应的OB_SEG的三角形的索引
int retriangulate_hint//表示与对于Contour的31个Contour_Node的OB_SEG相交
//的网格三角形是否应该在运行时间被重新三角化,0=否,1=是
//最后一位表示VM动态遮挡边界类型:0==遮挡,1==露出
float point[3];//当初始顶点是由与其它OB_SEG的相交部形成的
//初始顶点的x、y、z值
};
struct OC_Info//外部角节点的信息
{
char svsc;//(可选)对于形成UBP的特定视单元顶点的暗示
};
struct IC_Info
{
char ic_type;//(可选)1=通过枢转和扫描来形成SE-MV
//(可选)2=相交相邻的SV-ME的平面
char SVSC[4];//(可选)对于形成SVSC的特定视单元边的暗示
};
struct CSV_Info
{
int mesh;//(可选)包含相交边的网格
int edge;//(可选)相交边的索引
char ic_type;//(可选)1=暗示-通过枢转和扫描形成SE-MV
//(可选)2=暗示-相交相邻SV-ME的平面
char SVSC[4];//(可选)对于形成SVSC的特定视单元边的暗示
double point[3];//(可选)顶点CSV的预计算的x、y、z值
};
struct tri_seed//用于发起简化的网格遍历(图37)来根据视单元A可见性图
//构造视单元B可见性图的特定三角形的索引/指针
{
int tri_count;//种子中的三角形数量
int*mesh_array;//网格ID的顺序
int*tri_array;//三角形ID的顺序
};
struct DeltaGplussubmesh_attach_polyline
//用于附接子网格和原始网格的网格边的预计算的列表
{
int contour;//对特定周线的指代
char attach_type;//如果等于0,则子网格的自由边附接至主网格的自由边
//如果等于1,则子网格的自由边附接至主网格的列出的边
//如果等于2,则子网格的自由边链接至主网格的自由边
//如果等于3,则子网格的自由边连接至主网格的列出的边
int submesh;//对附接子网格的指代
Int edgenumber;//附接多义线中的边的数量
Int*submesh_edgelist;//所附接的子网格中的边的有序列表
int*mainmesh_edgelist;//所附接的主网格中的边的有序列表
};
struct Triangle
{
int global_id;//global_id
int vertex[3];//DeltaGplussubmesh.vertexp数组中的3个顶点的索引
int edge[3];//DeltaGplussubmesh.edgep数组中的3条边的索引
};
Struct Edge
{
int global_id;//全局id
int vertex[2];//DeltaGplussubmesh.vertexp数组中的两个顶点的索引
};
struct vertex
{
int global_id;//全局id
float point[3];//顶点的x、y、z值
};
图13D是示出了采用增量G+数据的示例性实施方式的数据结构的图。
在一种实施方式中,信息的增量G+分组可以与每个视单元-视单元过渡相关联。示例性数据结构DeltaGplus_Header包括表示针对相关联的过渡的开始视单元(view_start)和结束视单元(viewcell_end)以及特定面(transition_face)的字段。另一个数据元素DeltaGplus_array是对实际上包含或指代网格几何图形的DeltaGplus数据结构数组的指代。在将DeltaGplus_array存储在主存储器中的一些实施方式中,可以通过指针来访问DeltaGplus_array。在其它情况下,DeltaGplus_array变量可以是数组阵列的索引,例如,对由增量G+数据形成的磁盘存储。另一个字段DeltaGplus_count在DeltaGplus_array中存储DeltaGplus数据结构的数量。附加的packet_size表示相关联信息的存储与传输字节大小。
DeltaGplus_Header指代一个或多个DeltaGplus数据结构,其又指代 对于对应的多边形网格的几何图形、材料、纹理信息。对于该信息的示例性数据结构被示为数据结构三角形、边、顶点。
图14A、图14B分别示出了当从连接的视单元A和视单元B观察时的示例遮挡物和由该简单遮挡物形成的遮挡的增量区(DR)。图17A和图17B的流程图示出了对流形三角形网格的当从视单元B观察时被遮挡而从视单元A观察时不被遮挡的连接的区进行识别的方法。该过程提供了对确定流形三角形网格的当从视单元A观察时露出而当从视单元B观察时不露出的连接的区的问题的解决方案。
在一些实施方式中,将流形三角形网格的从一个视单元看去露出而从另一个邻接(或被包含的)视单元看去被遮挡的连接的区称为增量区(DR)。
将与流形三角形网格的当从视单元B观察时被遮挡而从视单元A观察时不被遮挡(即,位于视单元A的可见性图)的连接的区对应的增量区指定为DRoAB(从A到B的遮挡增量区)。
这与流形三角形网格的当从视单元A观察时露出(即,位于视单元A的可见性图)而当从视单元B观察时被遮挡的连接的区对应的增量区相同。这样的增量区被指定为DReBA(从B到A的露出增量区)。
当然DRoAB=DReBA。
因此,尽管图17A和图17B的方法示出对DRoAB的确定(从视单元A到视单元B的遮挡增量区的确定),但是通过反转所处理的视单元的次序来将该方法应用于确定露出增量区。
图14A示出了用作遮挡图14B中的较大的多边形网格的遮挡物的示例多边形网格O。
图14B示出了在标记为1410的简单网格的面上引起的可见性图。1410是由两个三角形形成的矩形多边形网格,没有示出上述三角形以简化该图。
在一些实施方式中,标记为“遮挡区视单元A”的阴影六边形图是在图14A中示出的简单遮挡物的使用视单元A作为源并且使用一阶可见性图构造方法来生成的从视单元看去的遮挡区。注意,由于SE-MV楔形仅生成在原始的5边遮挡物O的内部角,所以遮挡区的边比遮挡物O的边多一个。
类似地,标记为“遮挡区视单元B”的无阴影六边形图是在图14A示出的简单遮挡物的使用视单元B作为源以及使用以及一阶可见性图构造方法生成的从视单元看去的遮挡区。
将“遮挡区视单元B”的位于“遮挡区视单元A”外的部分标记为DROAB(从A到B的遮挡增量区)和DREBA(从B到A的露出增量区)。
标记为1420的区位于这两个遮挡区外面,并且因为它位于从视单元A和视单元B可看见的区域1410内,所以区域1420从视单元A和视单元B可看见并且不是增量区。
图15示出了除了“遮挡区视单元A”的位于“遮挡区视单元B”外面的被标记为DROBA(从B到A的遮挡增量区)和DREAB(从A到B的露出增量区)的部分以外与图14B所示的统一的从区域看的可见性图相同的可见性图。此处,将在其上内接可见性图边界的网格标记为1510,其与图14中的1410相同。“遮挡区视单元A”的黑色部分表示“遮挡区视单元A”的与“遮挡区视单元B”公共的部分。标记为1520的区位于这两个遮挡区的外部,并且因为它位于从视单元A和视单元B可看见的区1510内,所以区1520基于视单元A和视单元B两者可见并且不是增量区。
因此,在一些实施方式中,当从视区B向视区A移动时,增量分组可以包括视区B与视区A之间的可见部分的差DREAB(即,增量区)。因此,通过传输仅包括增量区的增量分组,由于不需要重新传输对于每个视单元的可见图形元素的整个集合,所以减少了传输图形信息的带宽需求。
图16A和图16B是示出了使用标记轮廓周线的数据结构来识别轮廓周线的边和顶点的方法。
图16的流程图示出了在给定已经被标记的、简单或复合的从视单元看去的周线的一些边的情况下使用图13的数据结构来快速地识别该周线的所有边的方法。
图16的方法利用了轮廓周线一般在流形网格上形成多义线的事实。由于将网格表示为与连接性信息相关联的有向图(使用翼边数据结构或类似的数据结构),所以简化了对连接至另一个边的边的识别。
现又参考图16A并且使用图13的数据结构,其中将数据元素存储为数组并且通过这些数组的索引(替代实施方式可以这些参考符投射为指 针)来访问这些数据元素。在一些实施方式中,处理流程从步骤1605处开始,其中使用来自当前周线的数据结构的索引contour.verte来识别当前顶点c_vertex。这是网格contour.mesh的边数量。
处理流程行进至步骤1607,其中类似地使用实际的contour.edge来访问当前边。也是在步骤1607中,将用于更新Contour_Node类型的数组中的索引的整数ni设置为0。
处理流程行进至步骤1609以使用索引contour.node_array[ni]来访问当前周线节点c_node。
处理流程行进至判决步骤1611以确定c_node.type是否为3。如果该类型是3,则当前节点表示简单周线节点的数据并且处理流程行进至步骤1613以将计数器segi设置为0。
处理流程行进至判决步骤1617以确定c_node.span_type是否等于2。如果c_node.span_type等于2,则当前周线跨度的段可以包括外部角从视单元看去的轮廓顶点和内部角从视单元看去的轮廓顶点并且处理流程行进至步骤1620。
在判决步骤1620中,使用先前指定的用于识别内部角简单轮廓顶点的方法来确定由c_edge和next_edge共有的顶点是否为内部角轮廓顶点。
如果在判决步骤1620中确定两个轮廓边形成内部角,则处理流程行进至步骤1624。
在步骤1624中,将整数值p设置成等于入射在如通过应用SE-MV楔形的扫描构造(步骤1628)确定的内部角顶点上的SE-MV楔形的数量。
处理流程行进至步骤1632,其中将表示针对周线跨度构造的可见性事件表面的数量的计数器segi增加入射在CSV上的SE-MV事件表面的数量。
处理流程行进至判决步骤1629以确定segi的值是否等于当前周线节点的跨度长度。
如果在判决步骤1629中确定segi的值等于宽度长度,则已经处理了跨度并且处理流程行进至判决步骤1633。
在判决步骤1633中,确定作为周线的当前周线节点的索引的整数变量ni的值是否等于周线中节点的数量。
如果在判决步骤1633中确定当前节点是轴线的最后一个节点,则处 理流程行进至处理下一个周线的步骤1637。处理流程在步骤1637处终止。
另一方面,如果在判决步骤1633中确定当前节点不是周线的最后一个节点,则处理流程行进至步骤1645。
在步骤1645中,将用在步骤1609中的节点周线提前以访问下一个节点。
如果在判决步骤1617中确定当前节点的span_type表示在跨度上不存在内部角节点,则处理流程行进至步骤1621。
同样地,如果在判决步骤1620中确定当前轮廓边和下一个轮廓边没有形成内部角,则处理流程行进至步骤1621。
在步骤1621中,形成与入射在当前边上的单个SV-ME UBP对应的VM段(使用图20、图21及有关的图的方法)。处理流程行进至步骤1625以变量segi增加1,与构造在轮廓边上的单个阴影可见性事件表面一致。
处理流程从步骤1625行进至已经描述了的判决步骤1629。
如果在判决步骤1621中确定节点的类型是3,与复合轮廓顶点(CSV)一致,则处理流程继续至从步骤1650(图16B)处开始的处理16-1。
处理流程行进至步骤1650以使用存储在cnode.ninfo中的数组索引来引用CSV_info节点中的附加数据。该信息给出了包含CSV的更远的网格的网格数量。
处理流程行进至步骤1655以存取与当前UBP相交(其中相交部是当前CSV)的边的边数量,这是通过CSV_info来存取的。
处理流程行进至1660以按照当前UBP和C_EDGE的相交部来计算CSV。可替代地,可以预计算该值并且将该值存储在对应的CSV_Info结构的浮点CSV_Info.point[3]字段中。
处理流程行进至步骤1665,将C_Vertex设置为CSV(未被遮挡侧上)后的下一个顶点的索引,并且处理流程行进至处理16-2,其将处理流程返回至布置1615。
总体上,图16A的方法使得能够使用仅一些标记边来识别轮廓周线的多个边。从而,该标记方案使用非常少的存储。该方法利用了轮廓周线的自然连贯性,从而有利于根据一些标记轮廓边和关联暗示信息来在运行时快速地生成VM段。结合图20和图21来详细地讨论使用标记轮廓边的VM/PVS的运行时增量构造。
图17A、图17B、图17C和图17D包括对示出了表示从一个视单元到有关的视单元的过渡的统一可见性图中的VM感兴趣区(ROI)进行识别的方法和用于对与具有高效遮挡的那些ROI的遮挡边界对应的轮廓边进行标记的方法的流程图。
图17A、图17B和图17D的流程图示出了对流形三角形网格的连接的区进行识别的方法,上述连接的区称为感兴趣区或ROI,其反映了视单元过渡(例如,从VC A到VC B)期间的可见性变化。
该流程图还示出了用于识别与限定ROI的遮挡边界(OB)或边界对应的轮廓周线的方法。此外,该流程图示出了用于标记这些轮廓周线(使用图13的Contour数据结构和关联数据结构)并且存储与周线相关联的附加信息(例如,图13A的VM_Info数据)。
根据一些实施方式,将图17A至图17D的方法作为离线或预计算处理来进行。本方法能够识别PVS数据增量的增量G+和增量G-组件,可以在根据现有的PVS增量地构造新的PVS的运行时间处理期间使用上述组件。可替代地,图17A至图17D的方法能够识别和标记与ROI的边界对应的轮廓周线。随后可以使用该标记轮廓周线信息来在运行时间构造增量G+和增量G-。相比明确地存储/传输增量G+和增量G-分组,该方法可以显著地需要较少的存储/传输资源。
如果视单元之一被完全包含在另一视单元中,则ROI对应于仅从被包含的视单元可看见的区域。在一些实施方式中,使用与这些类型的ROI对应的标记轮廓周线来在运行时间根据父视单元的VM来构造子视单元VM(使用暗示的、简化的3D网格遍历),从而避免了在特定情况下对增量G-信息的明确存储。
如果两个视单元共有面并且一个视单元没有被包含在另一个视单元内(称为“邻接”的关系),则ROI对应于增量区(DR)。对于从VC A到VC B的视单元过渡(称为AB过渡),DR具有两种类型。一种类型的增量区DROAB(从A到B的遮挡增量区)包含从视单元A可看见而从视单元B看不见的网格三角形片段。DROAB也是DREBA(从B到A的露出增量区)。同样地,DROAB=DREBA。DROAB对应于针对AB过渡的增量G-数据,而DREBA对应于针对AB过渡的增量G+数据。可以使用与这些ROI的边界对应的标记轮廓周线来在运行时间构造增量G+和或增量G-数据(还使用暗示的、简化的3D网格遍历),从而避免了在特定情况下对增量G+和增量G-多边形分段信息的明确存储。
现转向图17A至图17D,在处理的第一阶段,指定针对具体视单元过渡要识别的ROI的类型。ROI是具体的统一可见性图的表示视单元过渡的特定区域。对于AB过渡的统一可见性图是包含从视单元A和视单元B可看见的网格三角形片段和对于视单元中的每一个的从视单元看去的VM的OB_SEG的可见性图。
在一些实施方式中,处理流程从步骤1705开始,在该步骤中确定以下视单元是否具有父子(包含-被包含)关系:要针对其确定特定视单元过渡的增量可见性信息。
如果在判决步骤1705中确定要针对其确定增量可见性信息的视单元具有父子关系,则处理流程行进至步骤1707。
在步骤1707中,要识别的ROI是从针对具体的视单元过渡的被包含(子)视单元可看见的区域。因为对于子视单元的VM总是父视单元的子集,所以在一些实施方式中使用针对过渡计算的明确的增量G-信息来构造子VM。但是,如果子视单元明显地小于父视单元,则对应的增量G-信息会相对大。可替代地,在本方法中,可以将对于这样的过渡的感兴趣区(ROI)设置成仅从子视单元可看见的那些区域。通过识别这些区域的种子三角形和边界,通常能够通过对统一可见性图进行以种子三角形开始的简化的、暗示的3D网格遍历使用更少的信息根据父视单元的VM来确定子视单元的VM/PVS。
如果在判决步骤1705中确定要针对其确定增量可见性信息的视单元不具有父子关系,则处理流程行进至步骤1709。
步骤1709表示两个视单元是邻接的(视单元共有面并且一个视单元不被包含在另一个视单元内)。父子和邻接关系是两个视单元的两种特殊布置,其中从一个视单元到另一个视单元的过渡出现在完全被包含在两个视单元的联合中的空间体积。使用视单元的这两种布置,保证了如随后在处理中构造的ROI完全和保守地反映了新近可见和新近露出的区域(例如,因为在有关的视单元之间没有“间隙”,所以错过了短暂可见的几何图形)。
处理流程行进至步骤1711以表示ROI是可见性增量区(DR)。
处理流程行进至判决步骤1713以枚举DR的各种类型。如果在判决步骤1713中确定要识别的DR从VC A可看见并且从视单元B看不见,则处理流程行进至步骤1715。
在步骤1715中,要识别的ROI是DROAB和DREBA。
如果在判决步骤1713中确定要识别的DR从VC B可看见而从视单元A看不见,则处理流程行进至步骤1717。
在步骤1717中,要识别的ROI是DREAB和DROBA。
在一些实施方式中,步骤1705至步骤1717取决于过渡视单元之间的关系以及增量可见性信息的期望用途仅枚举出针对具体的视单元过渡要识别的ROI的类型。对于邻接视单元A和B之间的沿着AB方向的具体过渡,通常识别这两类ROI,DREAB和DROBA。这两类ROI一起完全描述了对于视单元过渡的可见性变化(增量VM/PVS增量)。
从步骤1719中开始,开始统一可见性图中的这些ROI区域的实际识别。
在步骤1719中,确定对于包括视单元A和视单元B的联合的视单元的VM(例如,使用先前描述的从视单元看去的VM构造方法中的任何方法)。还可以使用该VM的任何超集作为随后构造与针对过渡的两个视单元的从视单元可看见性图对应的OB_SEG(步骤1721)的开始VM。该事实使得能够使用从区域看的可见性问题的有效的层次分解来解决增量可见性信息(明确的增量G分组或对应的标记的周线数据)的确定。在该层次方法中,可以将从包含视单元A和视单元B两者的任何视单元可看见的三角形分段用作构造用于视单元A和视单元B的统一的VM的VM。(还可以使用该事实来减少PVS增量存储需求,这是因为对于许多视单元过渡的PVS增量最终可以根据与包含其它视单元的视单元对应的单个统一可见性图的数据来生成)。
处理流程行进至步骤1721,其中在从视单元(A+B)可看见的三角形分段上构造与根据视单元A确定的从视单元看去的可见性图对应的OB_SEG、和与根据视单元B确定的从视单元看去的可见性图对应的OB_SEG。将从视单元(A+B)可看见的三角形分段连同从视单元A看去的OB_SEG和从视单元B看去的OB_SEG的集合被称为针对视单元A和视单元B的统一可见性图。在一些实施方式中,这些OB_SEG的构造采用先前描述的对于从视单元看去的VM构造3D/2D网格遍历方法(图20和有关的图)。
当然,如果视单元A是视单元B的父,在步骤1719中构造的从视单元(A+B)看去的可见性图已经包含从视单元A可看见的所有网格三角 形分段以及与从视单元A看去的轮廓周线对应的OB_SEG。在步骤1721中添加与视单元B对应的OB_SEG。在两个视单元邻接和/或所使用的开始VM是VM(A+B)的超集的情况下,在步骤1721中一般必须构造两个OB_SEG集合。
处理流程从步骤1721行进至处理17-1,其从步骤1723(图17B)开始。在步骤1723中,对统一可见性图进行遍历以限定由从视单元A和视单元B两者看去的OB_SEG布置形成的VM区。在该遍历中,选择三角形并且遍历行进至由OB_SEG形成的边界。在该步骤中,3D网格遍历作为已经构造的统一可见性图的宽度优先遍历来进行。遍历行进至遍历受限的轮廓周线及对应的遮挡边界。该简单的遍历方法确保了对具体的ROI的所有三角形/分段遍历至ROI的边界,即使ROI具有内部孔或跨越多个单独的三角形网格。(VM的前面的构造最终可以将三角形网格的部分“融合”成具有内部孔的单一ROI,上述ROI对应于更远的网格三角形的、穿过由内轮廓周线包围的较近的三角形网格中的孔可见的未被遮挡区)。
处理流程行进至步骤1725以确定在当前遍历/VM区是否剩余任何未遍历的三角形(即,连接至当前三角形的未遍历的三角形,其中连接不需要穿过遮挡边界)。如在步骤1725中确定在当前遍历中存在未遍历的三角形,则处理流程行进至步骤1727,遍历中的下一个三角形。
另一方面,如果在判决步骤1725中确定在当前遍历中没有剩余三角形,则处理流程行进至步骤1728,因为已经遍历完当前VM的所有三角形。
在步骤1728中确定在遍历步骤1723和1725中识别的统一VM区是从视单元A可看见,还是从视单元B可看见,还是从两者均可看见。在一些实施方式中,使用图25的简化了的多面体的点包容性测试来对此进行确定。在父子有关的视单元过渡的情况下,因为所有的遍历的区域从父视单元可看见所以可以对该测试进行一些简化。
以下替代实施方式是可能的:在VM区中发起遍历(步骤1723)以前首先对VM区中的单个点进行确定(步骤1728和1731)。该方法使得能够在不对VM区进行全遍历的情况下识别不是ROI的VM区域。
处理流程行进至判决步骤1731以确定VM的遍历的区域是否对应与先前针对特定的视单元过渡在早先的步骤1705至1717中确立的感兴趣的区域(ROI)。这是通过对步骤1728的结果(例如,从A可看见、从B 可看见、或从两者可看见、或从两者都看不见;后者仅当所使用的VM是VM(A+B)的超集时才有可能)与在早先的步骤1705至1717中确定的ROI的限定进行比较来确定。
如果在判决步骤1731中确定统一VM的遍历的区域不是ROI,则处理流程行进至判决步骤1749以确定在VM中是否有任何未遍历的三角形。
如果在判决步骤1749中确定在统一可见性图中剩余任何未遍历的三角形,则处理流程行进至步骤1737,其中选择统一VM中的下一个三角形(属于新的VM区)以用于处理。
如果在判决步骤1749中确定在统一VM中没有剩余未遍历的三角形(不再有要处理的统一VM区),则处理流程行进至步骤1752。处理流程在1752处终止。
如果在判决步骤1731中确定VM的遍历的区域是ROI,则处理流程行进至步骤1732。
在判决步骤1732中确定当前ROI是否是对于视单元过渡的遮挡增量区(DR_O)。如果ROI是DRO,则处理流程行进至步骤1734。
在步骤1734中,使用先前针对被遮挡区描述的度量来确定ROI的有效静态遮挡。将称为有效动态可见性(EDV)的变量的值设置成ROI的ESO。
如果在判决步骤1732中确定当前ROI不是DRO,则处理流程行进至步骤1733。
在判决步骤1733中确定当前ROI是否是针对视单元过渡的遮挡增量区(DR_E),如果ROI是DRE,则处理流程行进至步骤1736。
在步骤1736中,使用先前针对被遮挡区描述的度量来确定围绕当前ROI的被遮挡区(称为围绕被遮挡区或SOR)的有效静态遮挡(ESO)。将称为有效动态可见性的变量的值设置为SOR的聚合ESO。
如果在判决步骤1733中确定ROI不是露出增量区,则处理流程行进至步骤1735。
在判决步骤1735中确定当前ROI是否对应于从针对特定的父子视单元过渡的子视单元可看见的区域。如果ROI是子区,则处理流程行进至步骤1738。
在步骤1738中,使用先前针对被遮挡区描述的度量来确定围绕当前ROI的被遮挡区(称为围绕被遮挡区或SOR)的有效静态遮挡(ESO)。将称为有效动态可见性的变量的值设置成SOR的聚合ESO。注意,对于DRE和子ROI的情况进行相同的处理,但是为了说明,在此处它们是不同的。
接着步骤1734、1736或1738,处理流程行进至步骤1746。
在判决步骤1746中确定对于ROI的EDV(当前ROI在表示对于特定视单元的增量可见性上的“有效性”或效率的测量)是否大于预定值(例如,“值2”)。
如果在判决步骤1746中确定对于ROI的EDV不大于预定值(“值2”),则处理流程行进至步骤1740。
如果在判决步骤1740中确定当前感兴趣区域的边界(以及对应的轮廓周线)是否能够被明显地简化(例如,使用图12的方法,其中将ESO用作指导边界的保守简化的度量)。如果ROI是DRO,则图12的方法可以直接应用至该区域。如果ROI是DRE或子区,则将图12的方法应用于围绕当前ROI的被遮挡区(SOR)。SOR可以被限定为紧邻ROI的遮挡区。可选地,SOR可以包括连接至该SOR集合的其它遮挡区。该方法使得保守的简化处理能够扩展到相邻区域以最终实现充分地简化了的ROI。
如果在判决步骤1740中确定边界能够被简化,则在判决步骤1746中对由简化了的遮挡边界包围的区的新的保守表示的EDV进行确定。
另一方面,如果确定当前ROI的边界不能被简化来实现目标EDV值,则处理流程行进至步骤1743。
在步骤1743中,当前ROI被确定为具有低的EDV,从而被作为针对当前视单元过渡的增量可见性的显著组件而被忽略。在该步骤中,如果ROI对应于DREAB,则位于区域内的对应的网格三角形被保守地包括在对于视单元A的VM中。在没有通过DR的边界分段引入新的三角形的情况下将原始三角形包括在内。如果当前ROI对应于DROAB,则区域的对应的网格三角形保守地被包括在对于视单元B的VM中。在没有通过DR的边界分段引入新三角形的情况下将原始三角形包括在内。
如果统一可见性图ROI对应于父子视单元过渡并且区域的EDV为低,则围绕被遮挡区的几何图形保守地被包括在ROI中,并且可以重新 计算扩展区的EDV。对于DRE的情况,可选地,可以延伸SOR区至相邻的区以超出紧毗连的SOR。该方法能够识别以下极端情况:父VM和子VM没有明显地不同。在这种情况下完全地将子ROI移除。
步骤1746、1740和1743一起使得能够确定区域的ESV,并且如果ESV的值太低,则可以尝试保守地简化边界从而增加ESV。如果ESV仍然低于预定值,则不认为ROI对应与针对视单元过渡的增量可见性的明显区,并且可以忽略视单元过渡。
使用ESV(根据ESO获得)作为ROI的有效性的度量明显地减少了该方法所需的存储和计算时间。因为在许多情况下,小的遮挡或露出区会由于ROI边界的重新三角化而引入大量的围绕ROI的新三角形,所以这是成立的。这些区往往具有低的ESO,从而使用本方法不会将其认为是有效的遮挡(或露出)区。替代地,例如,将针对特定AB过渡的基元的新近可见集简单保守地认为是对于视单元A的VM/PVS。
如果在判决步骤1746确定当前的ROI的EDO超过了预定值(例如,“值2”),则处理流程行进至处理17-2,其开始于步骤1755。
在步骤1755中,对增量G+和/或增量G-(其可以是包括指代实际的新近被遮挡的多边形的指针或索引信息的增量I-信息)或子视单元数据(如果视单元过渡是父-子)的存储大小进行估计,并且将变量SS的值设置成与该存储大小成一定正比。包含许多三角形/三角形分段的ROI往往具有对于对应的增量G+或增量G-分组的高存储成本。方法所使用的替代的存储格式用对限定对应的ROI的轮廓周线/VM边界的标记来取代增量G分组的明确存储。仅当需要使用简化的3D网格遍历来生成实际的增量G信息,上述简化的3D网格遍历采用根据针对具体的视单元过渡的标记轮廓周线信息来生成的统一VM区边界。
处理流程行进至步骤1758,其中对SS的值与预定值(例如,“值3”)进行比较。如果在判决步骤1758中确定SS的值不大于“值3”,则处理流程行进至步骤1761。
在步骤1761中,直接存储对于ROI的增量G数据并且处理流程行进至判决步骤1788。
判决步骤1788与先前描述的步骤1749相同。
如果在判决步骤1758中确定SS的值大于预定值“值3”,则处理流程行进至步骤1764。
步骤1764至1785是识别与形成ROI的边界(因为ROI可以包含孔,所以是外边界和内边界两者)的OB_SEG对应的轮廓周线的步骤。在这些步骤中,标记对应的轮廓周线(其是原始三角形网格的边和顶点加与内部角简单和复合轮廓顶点处的SE-MV楔形对应的一些附加边),并且识别和存储与ROI的连接组件一对一的种子三角形。
从步骤1764开始,对形成与从视单元A看去的OB_SEG和从视单元B看去的OB_SEG对应的ROI的外边界和轮廓周线的这些OB_SEG进行识别。
处理流程行进至步骤1767,其中包围ROI的OB_SEG彼此相交并且将相交部指定为IP并且使用对于对应的轮廓周线的对应VM_INFO数据结构(在图13A中给出的数据结构)来存储。
处理流程行进至步骤1770,其中对于ROI的外边界对应的轮廓周线进行标记并且用先前结合图13A、图13B和图13C描述的数据结构(可选地包括DeltaGplus_attach_polyline info)来存储。
处理流程行进至步骤1773,其中对形成与从视单元A看去的OB_SEG和从视单元B看去的OB_SEG对应的ROI的内边界和轮廓周线的这些OB_SEG进行识别。
处理流程行进至步骤1776,其中形成ROI的内边界的OB_SEG彼此相交并且相交部被指定为IP并且使用对于对应轮廓周线的对应VM_INFO数据结构(图13A中给出的数据结构)来存储。
处理流程行进至步骤1779,其中对与ROI的内边界对应的轮廓周线进行标记并且使用先前结合图13A、图13B和图13C描述的数据结构来存储。
处理流程从步骤1779行进至处理17-4,其从步骤1782开始(图D)。在步骤1782中,对与针对具体的视单元过渡的ROI对应的所有(可能简化了的)外轮廓周线和内轮廓周线进行标记并且与具体的视单元过渡相关联。
处理流程行进步骤1785,其中,将对于ROI的每个连接的组件的一个三角形存储在针对具体的视单元过渡的“TRI_SEED_LIST”中。
接着,处理流程行进至步骤1788和1790(如果在VM中不存在未遍历的三角形)。在一些实施方式中,这些步骤分别与先前描述的步骤1749和步骤1752相同。如果在VM中存在未遍历的三角形,则处理流程行进 至处理17-3,其开始于步骤。
与父-子视单元过渡对应的ROI从以下意义上来讲不是增量区:对于该类型的ROI的种子三角形从针对父-子视单元过渡的两个视单元可看见。使用该类型的ROI,可以使用根据ROI的对应的标记轮廓周线构造的外边界和内边界来根据父VM有效地构造子视单元的VM/PVS。该构造使用图20和图21的暗示的、简化的3D网格遍历方法。
相反,与邻接视单元之间的过渡对应的ROI是可见性增量区(DR)。使用该类型的ROI,可以根据从视单元A+B可看见的网格三角形/分段连同ROI的根据对应的标记轮廓周线来构造的外边界和内边界来有效地构造增量G+和增量G-。该构造也使用图20和图21的暗示的、简化的3D网格遍历方法。
图18A和图18B:使用单条周线的标记轮廓周线信息来在运行时间迅速地构造可见性图遮挡边界分段的方法。
如前面所描述的,识别对于视单元过渡(例如,从A到B)的有效增量区(DR),确立(使用图17的方法)生成DR遮挡边界的对应的轮廓周线以及使用图13A和图13B的数据结构来标记上述轮廓周线。将该标记作为离线处理来进行。
当存储标记轮廓周线信息(如与三角形网格相关联的数据)时,能够在运行时间使用该数据根据连接的或包含视单元的已知可见性图构造与特定的视单元对应的可见性图。
图18A和图18B是示出了使用先前存储针对特定的视单元过渡的标记轮廓周线信息根据与连接的或包含视单元对应的已知可见性图来构造与特定视单元对应的可见性图的方法的流程图。
在一些实施方式中,处理流程从步骤1805处开始,使用与网格相关联的用于采用图12和图17A以及图17B的标记方法来存储标记轮廓周线信息的数据结构(图13A和图13B)来识别标记轮廓周线(先前针对所考虑的特定视单元过渡生成和存储的)。
处理流程行进至步骤1810以及将当前流形三角形网格(“网格”)设置成由图13A的Contour数据结构的Contour.mesh字段指代的具体网格。
处理流程行进至步骤1815以将“CURRENT_EDGE”(流形三角形网格边)设置成由图13A的Contour数据结构的Contour.edge字段指代的具体边。
处理流程行进至步骤1820以将“VERTEX(顶点)”(流形三角形网格顶点)设置成由图13A的Contour数据结构的Contour.vertex字段指代的具体顶点。
处理流程行进至步骤1825以将变量“NODECOUNT(节点计数)”设置成0。
处理流程行进至步骤1830,其中构造与“CURRENT_EDGE”对应的所有可见性图遮挡边界分段(VM OB_SEG)。使用图19所示并且结合该图详细讨论的处理来构造这些VM OB_SEG。
处理流程行进至步骤1835以将变量“NODE(节点)”设置成指代由当前周线的第一个节点指代的具体的Contour_Node数据结构。
处理流程行进至步骤1850以确定当前Contour_Node数据结构(图13A)的NODE.node_type是类型3。如果node_type是类型3,则节点对应于复合轮廓顶点并且处理流程行进至处理18-1,其从图18B中的步骤1855处开始。
在步骤1855中,现将“MESH(网格)”变量(在步骤1810中被初始化)设置成由当前节点指代的CSV_INFO[NODE.NINFO].mesh指代的具体网格,node_type为3的当前节点是复合轮廓顶点(CSV)节点。
处理流程行进至步骤1860,其中将变量“NEXT_EDGE”(表示轮廓周线多义线中的下一个边)设置成由当前周线节点指代的CSV_Info数据结构的CSV_INFO[NODE.NINIFO].edge字段指代的边。
处理流程行进至步骤1865以将变量“VERTEX”设置成由当前周线节点指代的CSV_Info数据结构的CSV_INFO[NODE.NINFO].point字段指代的顶点。
步骤1855、1860和1865的效果是在单个点(复合轮廓顶点)处将一个或多个流形三角形网格的面上的两个多义线连接在一起。在设置了当前“MESH”、“NEXT_EDGE”和“VERTEX”变量以反映至复合轮廓周线的该融合后,处理流程行进至处理18-2,其将处理流程返回至步骤1880(图18A)。
如果在判决步骤1850中确定“NODE_TYPE”不是3(即,该节点不对应于复合轮廓顶点),则处理流程行进至步骤1870。
在步骤1870中,将变量“EDGECOUNT”的值初始化成0。
处理流程行进至步骤1875以将变量“NEXT_EDGE”设置成指代流形三角形网格的连接至当前边并且还是(一阶、从视单元看去的)轮廓边的边。可以基于流形网格的连接性和一阶轮廓边的定义(参见图3)来容易地对该边进行识别。可替代地,将“NEXT_EDGE”识别为连接至当前边的边,其中连接的边已经被标记为标记轮廓周线边。“NEXT_EDGE”的该定义用在以下情况中:轮廓周线没有充分地偏移或迁移(因为前面所描述的轮廓边的“回缩”)。在情形是在预处理期间确立的并且存储在struct Contour数据结构的next_edge_type字段中。如果next_edge_type具有0值,则“NEXT_EDGE”被识别为先前已经标记了的下一个连接的边。另一方面,如果next_edge_type值为1,则“NEXT_EDGE”被识别为是(一阶)轮廓边的下一个连接的边。
处理流程行进至步骤1880以将“CURRENT_EDGE”设置成“NEXT_EDGE”。
处理流程行进至步骤1880,其中可见性图遮挡边界分段(VM OB_SEG)由受当前楔形支撑的阴影可见性事件表面与流形三角形网格的相交部产生。可见性图的从标记轮廓周线的当前边导出的这些元素是使用在图19的流程图并且结合该图详细讨论的方法来构造的。
当构造由当前轮廓边生成的VM OB_SEG时(使用在图19的流程图中示出的方法),处理流程行进至步骤1885。
在步骤1885中,增大变量“EDGECOUNT”。
处理流程行进至步骤1888以确定“EDGECOUNT”是否小于在图13A的Contour_Node数据结构中指定的对于当前节点的span_length(NODE.span_length)。
如果在判决步骤1888中确定“EDGECOUNT”小于span_length,则处理流程返回至步骤1875,其中识别下一个边。
另一方面,如果在判决步骤1888中确定“EDGECOUNT”不小于span_length,则处理流程行进至判决步骤1890。
在判决步骤1890中确定“NODECOUNT”是否小于周线中由数据字段CONTOUR.num_nodes给出的节点数量,其中CONTOUR是对正在被处理的当前标记轮廓周线的指代并且采用图13A所示的数据结构Contour。
如果在判决步骤1890中确定“NODECOUNT”小于 CONTOUR.num_nodes,则处理流程行进至步骤1892。
在步骤1892中,增大“NODECOUNT”并且处理返回至步骤1835,其中选择下一个节点并且处理继续。
另一方面,如果在判决步骤1890中确定“NODECOUNT”不小于CONTOUR.num_nodes,则处理流程行进至步骤1895。
步骤1895表示已经处理了标记轮廓周线并且处理应该行进至下一个标记轮廓周线。处理流程在步骤1895处终止。
通过图20所示并且结合该图详细讨论的处理来对针对特定视单元的所有标记轮廓周线的处理进行总体控制。
图19A和图19B:示出了构造从标记轮廓周线的单条轮廓边导出的可见性图遮挡边界分段的方法的流程图。
图18是在给定使用图13A的数据结构针对整个周线存储的少量数据的情况下用于识别标记轮廓周线的各个边的流程图。图19是构造从标记轮廓周线的单条边导出的VM OB_SEG的处理的流程图。
通过在对轮廓周线的处理(图18的步骤3482)期间调用图19的处理,图18的处理有效地导致了针对整个标记轮廓周线的所有VM_OBSEGD的构造。
在一些实施方式中,当碰到标记的轮廓边时,处理流程从步骤1910开始。这对应于调用图18的处理的步骤1882。
处理流程行进至判决步骤1920以确定当前标记轮廓周线节点(“节点”,从调用处理传递)并且在图13A所指定的Contour_Node.node_type数据字段中指定的span_type是否等于值1。
如果在判决步骤1920中确定当前标记轮廓周线节点的span_type等于值1(表示在使用图13A的Contour_Node.node_type数据字段的标记轮廓周线上形成外部角),则处理流程行进至步骤1940。
在步骤1940中,使用先前结合图4描述的枢转处理来构造SV-ME楔形。
处理流程行进至步骤1980以确定已经构造了楔形的当前轮廓边是否是周线中的第一条边。
如果在判决步骤1980中确定轮廓边是周线中的第一条边,则处理流 程行进至步骤1992。
在步骤1992中,根据在图13A的数据结构中指定的CONTOUR.VMinfo.point、CONTOUR.VMinfo.mesh和CONTOUR.VMinfo.tri数据字段来获得预存储的楔形-网格三角形相交信息。该点对应于楔形与特定网格三角形的预计算和预存储的相交部,其中该相交部是包括与标记轮廓周线相关联的VM边界的VM OB_SEG链的初始OB_SEG。在识别对于特定视单元过渡的轮廓周线的、产生具有最小有效动态遮挡值的离线处理期间预先预计算并且存储该信息(图17的步骤1781)。因此,如果该边是标记轮廓周线中的第一条边,则步骤1992生成对应的VM边界第一OB_SEG。
另一方面,如果在判决步骤1980中确定正在处理的轮廓边不是周线中的第一条边,则处理流程行进至步骤1985。
在判决步骤1985中,确定当前节点是否具有与其相关联的CSV_Info,即,当前轮廓边是否支撑与另一个可见轮廓边相交的楔形。如果是,则Contour_Node.node_type值会等于3(图13A)并且Contour_Node.ninfo值会是CSV_Info数据结构数组(图13B)中的索引。在一种实施方式中,不用标记轮廓周线存储CSV_Info数据而是替代地将每条周线的初始点限定在CSV处,从而将对应的数据存储在Contour.mesh、Contour.triangle和Contour.vertex字段中。
如果在判决步骤1985中确定当前节点与CSV_Info数据相关联,则处理流程行进至步骤1990。
在步骤1990中,从CSV_Info[Contour_Node.inifo].mesh、CSV_Info[Contour_Node.inifo].edge和CSV_Info[Contour_Node.inifo].point数据结构中读取初始的VMOB_SEG数据。
另一方面,如果在判决步骤1985中确定当前节点不与CSV_Info相关联,则处理流程行进至步骤1995。
在步骤1995中,使用来自周线中的最后一个轮廓边的VM OB_SEG网格、三角形和点相交数据来构造与当前轮廓边对应的VM OB_SEG。因为VM OB_SEG形成流形三角形网格的面上的多义线,所以来自相邻边的OB_SEG的构造是多面体上的多义线的直接分段构造。
接着步骤1990或步骤1995,处理流程行进至处理19-1和处理19-2,其从图19B的判决步骤1996开始。在判决步骤1996中,确定 VM_INFO.RETRIANGULATE_HINT字段是否不等于0。这是图13A的VM_INFO数据结构的字段,并且如果确定毗连可见性图区的有效动态遮挡会通过遮挡边界处的重新三角化而增加,则在可见性图的运行时间构造期间将该字段设置成值1。
如果在判决步骤1996中确定VM_INFO.RETRIANGULATION_HINT的值不等于0,则处理流程行进至步骤1997。
在步骤1997中,在边界处对毗连对应的遮挡边界的三角形进行重新三角化。
另一方面,如果在判决步骤1996中确定VM_INFO.RETRIANGULATION_HINT等于0,则处理流程行进至步骤1999。
在步骤1999中,没有在边界处对毗连对应的遮挡边界的三角形进行重新三角化。在该情况下,将包括轮廓周线的三角形“链接”至部分地被遮挡三角形而不进行重新三角化。处理流程在步骤1999处终止。
如果在判决步骤1920中确定NODE.span_type不等于值1,则处理流程行进至步骤1925。
在判决步骤1925中确定NODE.span_type是否等于值2,如果等于值2,则处理流程行进至步骤1945。如果node_type等于值2,则周线可以包括外部角轮廓顶点和内部角轮廓顶点。从而,处理流程顺序地继续至1945以确定当前轮廓边是否涉及在与周线的下一条轮廓边的外部角或内部角中。
如果在判决步骤1945中确定轮廓周线的当前边和下一条边形成外部角,则处理流程行进至步骤1940,如前面所描述的。
另一方面,如果在判决步骤1945中确定轮廓周线的当前边和下一条边的形成内部角,则处理流程行进至步骤1955。
在步骤1955中,使用先前结合图5A和图5B描述的扫描处理来形成入射在内部角轮廓顶点上的SE-MV楔形。从而,处理流程行进至步骤1980,如前所述。
如果在判决步骤1925中确定NODE.span_type不等于值2,则处理流程行进至步骤1930。
在判决步骤1930中确定NODE.span_type的值是否等于3。如果在 判决步骤1930中确定NODE.span_type的值等于3,则处理流程行进至步骤1960。在这种情况下,span_type表示应该通过在阴影楔形/VMOB_SEG构造期间跳过周线的边的子集来简化周线。如在图12C的步骤1275和1289中的识别DR的差别有效静态遮挡(也称作有效动态遮挡)和简化轮廓周线期间对该信息进行预计算并且将该信息预存储在对应的Contour_Node.span_type和Contour_Node.span_length数据结构中。
在步骤1960中,将NODE.span_length与变量SPAN_COUNTER(在碰到周线以前被初始化为0)进行比较以确定应该在轮廓周线的那些顶点之间构造简化的阴影可见性事件表面和对应的VM OB_SEG。如果在判决步骤1960中确定SPAN_COUNTER小于NODE.span_length,则处理流程行进至步骤1965,其表示没有在当前边上形成楔形。
处理流程然后行进至步骤1970,其中将当前轮廓边直接链接至针对整个轮廓周线的单个OB_SEG,其当判决步骤1960指导处理朝向步骤1945或步骤1940时最终在步骤1940或1945中构造。
如果在判决步骤1930中确定NODE.span_type不等于值3,则处理流程行进至步骤1935。
在判决步骤1935中确定NODE.span_type是否等于值3。
如果在判决步骤1935中确定NODE.span_type等于值3,则处理流程行进至步骤1975。在该情况下,span_type表示不应该使用扫描处理来构造入射在周线的内部角轮廓顶点上的阴影事件表面,而是应该使用将相邻SV-ME楔形的平面相交的较简单的方法来构造。
从而,在步骤1975中,使用相邻SV-ME楔形的的平面的相交来构造SE-MV楔形(以及对应的VM OB_SEG)并且处理流程行进至先前所描述的步骤1980。
图20是示出了对使用根据预存储的标记轮廓周线构造的ROI边界来构造可见性图ROI的运行时间处理进行控制的处理的流程图,其中ROI边界限定/定界了对ROI进行遍历的简化的、暗示的、运行时间3D网格遍历处理。
如先前结合图17A至图17D所描述的,可以将针对特定视单元过渡的增量可见性数据描述为统一可见性图中包含从两个视单元可看见的网格三角形分段并且还包含与两个视单元对应的从视单元看去的遮挡边界的感兴趣区域(ROI)。
增量可见性数据的类型取决于对应的ROI的构造,其取决于两个视单元的描述视单元过渡的关系。
如果视单元之一完全被包含在另一个视单元中,则ROI可以对应于仅从被包含的视单元可看见的区。可以将与这些类型的ROI对应的标记轮廓周线用于在运行时间根据父视单元的VM来构造子视单元的VM(使用暗示的、简化的3D网格遍历),从而避免了在特定情况下对增量G-信息的明确存储。
如果两个视单元共有面并且一个视单元没有被包含在另一个视单元内(称为“邻接”的关系),则ROI对应于增量区(DR)。对于从VC A到VC B的视单元过渡(称为AB过渡),DR有两种类型。一种类型的增量区DROAB(从A到B的遮挡增量区)包含从视单元A可看见而从视单元B看不见的网格三角形分段。DROAB也是DREBA(从B到A的露出增量区)。同样地,DREAB=DROBA。DROAB对应于针对AB过渡的增量G-数据而DREAB对应于针对AB过渡的增量G+数据。可以将对应于这些ROI的边界的标记轮廓周线用于在运行是构造增量G+和/或增量G-数据(也使用暗示的、简化的3D网格遍历),从而避免在特定情况下对增量G+和增量G-多边形分段信息的明确存储。
在一些实施方式中,处理流程从步骤2005中开始,其中将针对特定的视单元过渡的所有标记轮廓周线的列表作为数组“LAB_CON_LIST”来访问。
处理流程行进至步骤2010,其中“LAB_CON_LIST”中的标记的周线中的每一个都经受进一步的处理。
在对“LAB_CON_LIST”中的标记轮廓周线进行处理的第一个步骤中,处理流程行进至步骤2015,其中使用图18的流程图所示的处理来识别标记轮廓周线的边,并且将上述边存储在“LAB_SIL_EDGE_LIST”中。
处理流程行进至步骤2020,其中“LAB_SIL_EDGE_LIST”的边经受进一步的处理。
在对“LAB_SIL_EDGE_LIST”中的边进行处理的第一步骤中,处理流程行进至步骤2025,其中使用图19的流程图中所示的处理来构造与“LAB_SIL_EDGE_LIST”的边对应的VMOB_SEG。
处理流程行进至判决步骤2030以确定“LAB_SIL_EDGE_LIST”是 否为空。如果在“LAB_SIL_EDGE_LIST”中有更多的边要处理,则选择下一个未处理的边并且并且处理返回至步骤2020。
如果在判决步骤2030中确定在“LAB_SIL_EDGE_LIST”中没有更多的边要处理,则处理流程行进至步骤2035。
在判决步骤2035中确定在“LAB_CON_LIST”中是否有任意更多的标记的周线要处理。如果在判决步骤2035中确定在“LAB_CON_LIST”中有更多的标记的周线要处理,则选择下一个未处理的周线并且处理流程返回至步骤2010。
另一方面,如果在判决步骤2035中确定在“LAB_CON_LIST”中没有更多的标记的周线要处理,则处理流程行进至步骤2040。
在步骤2040中,将作为对于与特定的视单元过渡对应的每一个增量区的一个三角形的指代的预计算的列表的三角形种子列表(在图17D中的步骤1785中预计算和预存储)设置成称为“TRI_SEED_LIST”的数组。在该情况下,三角形种子列表包含来从视单元A(包含视单元)看去未被遮挡并且从视单元B看去未被遮挡的每个VM区的一个三角形。从VM A的从视单元A和视单元B可看见的每个VM区选择一个种子三角形以使得发起对种子三角形的集合的遍历确保在图21的运行时间简化的3D网格遍历期间碰到针对AB过渡的相关的(标记的)轮廓周线。种子三角形的该选择确保使用以下遍历处理根据视单元A的VM来构造视单元B的VM:使用标记轮廓周线信息在AB过渡中在几何图形周围“避开”。
处理流程行进至步骤2045,其中“TRI_SEED_LIST”的三角形经受处理。
处理流程行进至步骤2050,其中使用“TRI_SEED_LIST”的三角形来发起如在图21的流程图所示并且结合该图详细地讨论的简化的流形网格遍历。该遍历通过对从视单元A可看见的三角形(那些在“TRI_SEED_LIST”中的三角形)的小子集的遍历来识别从视单元B可看见的所有三角形。
处理流程行进至判决步骤2060以确定在“TRI_SEED_LIST”中是否有任何更多未处理的三角形。
如果在判决步骤2060中确定在“TRI_SEED_LIST”中有未处理的三角形,则选择“TRI_SEED_LIST”中的下一个未处理的三角形并且处理流程返回至步骤2045。
另一方面,如果在判决步骤2060中确定在“TRI_SEED_LIST”中没有更多未处理的三角形,则处理流程行进至步骤2065。
步骤2065表示已经通过简化的运行时间遍历构造了与所需的增量可见性信息对应的特定ROI。如前面所讨论的,当对应的视单元过渡是父到子的过渡时,该增量可见性信息实际上可以是从子视单元可看见的三角形/分段的集合。可替代地,该ROI信息可以对应于针对邻接的视单元之间的视单元过渡的增量G+和增量G-数据,从而使得当需要时可以选择生成增量G分组而不是存储针对每次视单元过渡的所有增量G分组。处理流程在步骤2055处终止。
图21是使用简化的、暗示的运行时间3D网格遍历处理来根据预存储的标记轮廓周线信息构造ROI并且构造针对该ROI的连接的组件的种子三角形列表的主处理。
图21是示出了在图20示出的控制处理的步骤2050中调用的受指导的运行时间3D遍历处理的实施方式的流程图。
图21的流程图所示的处理与PCT专利申请第PCT/US2011/042309号的图20的一般3D网格遍历处理相似。图20的处理一般作为离线预处理来进行以处于预计算并存储PVS和标记轮廓周线数据的目的来构造可见性图。
相反,图21的3D网格遍历处理是在运行时间进行并且用于生成针对特定视单元过渡的统一可见性图的ROI。这些ROI对因为这些特定的视单元过渡而引起的可见性的变化进行描述。
在一种类型的视单元过渡中,从父视单元到被包含的子视单元,ROI仅包含从子视单元可看见的那些三角形/分段。当所提供的种子三角形是包括来自包含从子视单元可看见的三角形的那些ROI的每个连接的组件的一个三角形的三角形集合时,可以根据图21的简化的、暗示的3D网格遍历处理来生成该类型的ROI。
使用这些种子三角形以及根据标记轮廓周线生成的有关ROI边界,使得简化的、暗示的3D网格遍历处理绕过或“避开”在特定的视单元过渡期间(例如,从视单元A到视单元B,其中视单元B被包含在视单元A内)变得新近被遮挡的多边形或多边形分段。这使得能够在不明确地存储要移除的多边形列表的情况下移除新近被遮挡的多边形和/或多边形分段。如果要移除的多边形列表相对于可见多边形的数量很大,则相比使用 明确的要移除的多边形的列表,这可以是更加有效。
还可以使用暗示的遍历方法来直接生成针对两个邻接的视单元之间的视单元过渡的增量G-和增量G+分组两者,其中一个视单元没有被包含在另一个视单元内而是两个视单元具有公共的面。在这种情况下,开始的VM必须包含从组合视单元A+B可看见的所有多边形或多边形分段。此外,开始VM必须包含对于视单元A和视单元B的有关遮挡边界(这些遮挡边界都是根据标记的轮廓边来生成的)。将这样的可见性图称为统一可见性图。对于两个连接的视单元的统一可见性图包含从视单元A可看见并且从视单元B可看见的(或从布尔加视单元A+B可看见)的所有多边形分段。此外,统一可见性图包含与视单元A和视单元B两者对应的从视单元看去的遮挡边界。
为了生成针对A到B的过渡(也称为AB过渡)的增量G+分组,使用针对从A看去被遮挡而从B可看见的VM区的每个连接的组件的种子三角形来对对应的统一VM进行遍历。该类型的区称为DREAB。使用这些种子三角形发起遍历并且遍历行进至与视单元A或视单元B对应的遮挡边界。视单元A边界在被遮挡侧上碰到而视单元A边界在露出侧上碰到。这对应于在图40中以浅灰色示出的DReAB区。
表I总结了发起用于生成对于邻接视单元的增量G+和增量G-分组的暗示的运行时间遍历所需的种子三角形的集合并且示出了所碰到的遮挡边界的侧。
表I
使用图20和图21的方法来根据视单元A和视单元B的统一可见性图来生成增量G+和增量G-子网格数据
该方法使得能够根据针对视单元过渡的统一VM和对应的VM遮挡边界周线(其可以根据标记轮廓周线来生成)生成增量G+和增量G-分组两者。使用该方法,不需要针对每次视单元过渡明确地存储对于每次视单元过渡的增量G+和增量G-分组。更具体地,可以在需要分组以前的任何时间通过暗示的遍历方法来生成分组。
此外,在分布式客户端-服务器实施中,生成增量可见性信息的运行时间3D遍历方法可以更加有效。在高的时空可见相关性的区中,可以针对相同区中的若干特定的视单元频繁地使用相同的标记的周线信息。因此,对基于标记的轮廓信息的运行时间3D网格遍历能够以相比针对每次视单元过渡使用要移除的直接的多边形增量G-列表所需的传输数据而言较少的传输数据来计算增量的可见性图/PVS。
现转向图21,在简化的运行时间遍历的第一个步骤中,处理流程从步骤2105开始,其中针对特定的视单元过渡在“TRI_SEED_LIST”中的特定三角形处发起遍历。
处理流程行进至判决步骤2115以确定所遍历的三角形是否包含从视单元看去的遮挡边界。在图20的步骤2020中构造这些边界。
如果在判决步骤2115中确定所遍历的三角形包含从视单元看去的遮挡边界,则处理流程行进至步骤2135。
处理流程行进至步骤2135,其中在遮挡边界处中断遍历。在另外的实施方式中,处理流程从2135行进至处理21-1,其将处理流程返回至步骤2125。
另一方面,如果在判决步骤2115中确定当前所遍历的三角形不包含遮挡边界,则处理流程行进至步骤2120。
在判决步骤2120中确定当前所遍历的三角形是否具有与对于所正在考虑的特定视单元过渡的标记的轮廓边对应的轮廓边。这些标记的轮廓边对应于统一VM的对应ROI的内边界。
如果在判决步骤2120中确定当前所遍历的三角形是否具有轮廓边,则处理流程行进至步骤2125。
在步骤2125中,选择网格中下一个(连接的)未遍历的三角形并且将其提交至步骤2115和后续步骤以用于处理。
另一方面,如果在判决步骤2120中确定当前三角形不包含针对当前视单元过渡的标记的轮廓边,则处理流程行进至步骤2180。
在判决步骤2180中确定在当前“遍历”中是否存在任何未处理(未遍历的)三角形,其中在此处将遍历定义为通过非标记的轮廓边连接并且位于如在图20的步骤2025中构造的针对特定视单元过渡的遮挡边界的未被遮挡侧上的网格多边形的集合。
如果在判决步骤2180中确定在当前遍历有未遍历的三角形,则处理流程行进至步骤2125,其中选择遍历的下一个三角形以用于如前述的数据。
另一方面,如果在判决步骤2180确定在当前遍历中没有未遍历的三角形,则处理流程行进至步骤2188。
在步骤2188中,在图20的步骤2025中所构造的遮挡边界分段的未被遮挡侧上继续遍历;其中所述遮挡边界对应于在步骤2120中碰到的标记的轮廓边。该继续可以涉及在被重新三角化(即,在遮挡边界处精确地被修剪)的三角形上继续遍历,或可以涉及没有在边界处被重新三角化的三角形的未被遮挡侧上继续遍历。处理流程在步骤2188处终止。
图22:将与针对特定视单元过渡的新近露出的网格元素对应的增量G+子网格附接至对应的标记轮廓周线的开始边界的方法。
对于任何视单元过渡,可以在构造从视单元看去的可见性图和对应的可见性增量区的离线处理(图17)期间确定并存储与新近露出的子网格的附接曲线对应的多义线。可以使用图13B的DeltaGplussummesh_attach_polyline数据结构来存储这些多义线。可以存储在该数据并且随后在图20和图21所述的增量可见性图/PVS构造的运行时间处理期间使用该数据。具体地,为了使用在运行时间3D网格遍历期间通过“避开”来确定新近被遮挡的网格元素的运行时间方法,在附接多义线处将任何新近露出的网格元素连接至先前露出的元素以确保将连接的流形呈现给运行时间遍历。
注意,在一些实施方式中,当将图20和图21的方法用于通过绕开在运行时间计算新近被遮挡的几何图形时,使用图22的方法。
在一些实施方式中,处理流程行进至步骤2205,其中对于针对特定视单元过渡的标记的轮廓边(开始的)相关联的DeltaGplussummesh_attach_polyline数据结构进行访问并且用变量AP来 指代该数据结构。
处理流程行进至判决步骤2210,其中确定附接类型是否对应于0。如果在判决步骤2210中确定附接类型对应于0,则处理流程行进至步骤2215。
在步骤2215中,将增量G+子网格(此处简称为子网格)的边直接连接至主网格的对应边。从AP.submesh_edgelist和AP.mainmesh_edgelist中列出的单一边开始沿着对应的网格的自由边(仅具有一个构成多边形的边)行进在AP.edgenumber个边之间做出该连接。在该模式下,针对每个edgelist仅需要预存储单个边。
处理流程行进至判决步骤2220以确定附接类型是否对应于1。如果在判决步骤2220中确定附接类型对应于1,则处理流程行进至步骤2225。
在步骤2225中,将增量G+子网格(此处简称为子网格)的边直接连接至主网格的对应的边。从AP.submesh_edgelist和AP.mainmesh_edgelist中列出的第一边开始顺序地贯穿整个边列表在AP.edgenumber个边之间做出该连接。
处理流程行进至判决步骤2230以确定附接类型是否对应于2。如果在判决步骤2230中确定附接类型是等于2,则处理流程行进至步骤2235。
在步骤2235中,将增量G+子网格(此处简称为子网格)的边“链接”至主网格的对应边,其中链接可以是从一个多义线段到另一个多义线的一到多的映射。在预处理期间对这些链接进行识别以使得它们在运行时间3D遍历期间呈现对应的网格的保守表示。从AP.submesh_edgelist和AP.mainmesh_edgelist中列出的单一边开始沿着对应网格的自由边(仅具有一个构成多边形的边)行进在AP.edgenumberge个边之间做出该链接。在该模式下,对于每个edgelist仅需要存储与存储单个边。
处理流程行进至判决步骤2240以确定附接类型是否为3。如果在判决步骤2230中确定附接类型对应于3,则处理流程行进至步骤2245。
在步骤2245中,将增量G+子网格(此处简称为子网格)的边“链接”至主网格的对应的边,其中链接可以是从一个多义线段到另一个多义线的一到多的映射。在预处理期间对这些链接进行识别使它们在运行时间3D遍历期间呈现对应的网格的保守表示。从AP.submesh_edgelist和AP.mainmesh_edgelist中列出的第一边处开始并且顺序地贯穿整个边列表行进在AP.edgenumber个边之间做出该链接。
在任何情况下,处理流程针对下一此视单元过渡行进至步骤2250。在步骤2250中,可以根据当前视单元过渡的结束边界导出下一个视单元边界的开始边界,并且处理针对下一次视单元过渡行进至判决步骤2210。处理流程在步骤2250处终止。
在一些实施方式中,除了使用对于新近露出的多边形的增量G+几何图形分组,在不需要明确的增量G+多边形的情况下,在运行时间程序地重构一些新近露出的面。在一些实施方式中,采用该方法在新近露出的增量区中生成单个大的多边形(或棋盘格状面)例如地板或天花板的新近可见部分。在该情况下,具体地使用指导运行时间处理程序地在整个增量区中生成面的新近露出的部分的标记来标记轮廓周线。
图23是示出了露出时间对人类分辨空间细节的能力的影响的图。
图23是有人类视觉性能研究所再现的数据(Luntinen,O.,et.al.(1995).Modeling the Increase of Contrast Sensitivity with Gating Area and Exposuretime.Vision Res.Vol.35,No.16,pp.2339-2346.Elsevier Science Ltd.)。
该研究显示了露出时间对于对比灵敏度的显著效果,尤其是对于直至1000ms的高空间频率。
图23示出了4幅图(A至C),其中对比灵敏度被绘制成从0秒到10秒的露出时间的函数。在每幅图中,关系是针对所观察的面(栅格图案)的不同的总露出面积来绘制的。每幅图表示对于所表示的四个空间频率之一的关系。该研究显示少的露出时间和小的露出面积减小了对比灵敏度。注意,在该情况下对比灵敏度随着空间频率的增加而增加是因为所测量的低频率低于关于在所采用的实验条件下的空间对比灵敏度曲线的“峰值”空间频率。根据该数据明显的是,人类视觉系统分辨高的空间频率数据的能力是甚至超过1000ms的露出时间的函数。这会使得的低细节层次增量可见性信息的用途被初始地使用并且后续用作为增加的对应的增量G+子网格数据的露出时间的相对较高的细节层次的增量可见性信息来替代上述低细节层次增量可见性信息。
图24A是示出了控制包括可渲染数据的可见性事件数据分组的内容流的方法的示例性流程图。在一些实施方式中,这些数据分组包括从服务器单元发送的数据,如在共同待决的PCT专利申请第PCT/US2011/042309中所详述的。在该方法中,预计算和与存储的数据分组包括可渲染数据的 PVS增量分组(可见性事件分组)。在该方法中,客户端单元可以位于相同的物理设备如服务器单元上(例如,在共同待决的PCT专利申请第PCT/US2011/042309号的图46中)。可替代地,该方法还支持以下配置:客户端单元位于服务器单元不同的物理设备上并且位于不同的位置(例如,在共同待决的PCT专利申请第PCT/US2011/042309号的图46中)。
现转向图24A,根据一些实施方式,标记为2405的数据包括PVS数据增量的单一数据,该单一数据也称为可见性事件数据,表示在游戏建模环境中在视单元-视单元边界处或过渡时的图形元素的可见实体集合的变化。该数据仓库可以包括使用在共同待决的PCT专利申请第PCT/US2011/042309中指定的从区域看的可见性预计算方法处理了的数据。该数据仓库可以包括使用也是在共同待决的PCT专利申请第PCT/US2011/042309中详述的对数压缩算法处理了的数据。
在判决步骤2410中,确定用户是否请求了交互性数据流。该请求可以通过用户与客户端单元的交互来输入到系统中。在一种实施方式中,在步骤2410中将与控制设备(例如,有线或无线游戏控制器)的任何交互作用解释为对交互性分组数据流的请求。其它实施方案可以包括使用特定的按键组合来请求初始化交互性数据流。在一些实施方式中,数据流是双向的,其中将数据从服务器传输到客户端并且从客户端传输到服务器。
如果在判决步骤2410中确定用户请求了交互性体验,则处理流程行进至步骤2420。
在步骤2420中,使用由处于用户的交互性控制之下的相机位置控制的基于导航的预取来将可见性事件数据流从数据仓库2405提供给客户端单元。如在共同待决的PCT专利申请第PCT/US2011/042309中所详述的该预取处理中,使用相机视点的当前位置来预测该视点的未来位置,并且从数据仓库2405中对与在未来的预定时间段内很有可能被该视点穿透的视单元边界对应的PVS数据增量进行预取。例如,基于当前视单元和视单元过渡的历史来预测未来视单元过渡。在给出当前位置的情况下,可以利用航位推测法的现有技术方法或导航预测的其它现有技术方法来预测未来的视点或相机位置,上述方法包括Chim等人的方法(Jimmy Chim,Rynson W.H.Lau,Hong Va Leong,and Antonio Si,CyberWalk:A Web-Based Distributed Virtual Walkthrough Environment,iEEE TRANSACTIONS ONMULTIMEDIA,VOL.5,NO.4,DECEMBER 2003,其全部内容通过引用合并到本申请中)。可替代地,导航预取可以 采用在图28中示出并且结合该图所讨论的示例性流程图的方法。
在步骤2420中,通过用户输入来确定用于控制基于导航的预取处理的视点位置。该视点可以是用户在建模环境中的视点、在建模环境中跟随用户的移动的相机视点、或在建模环境中跟随某一其它用户或非玩家人物的相机视点。在这种情况下,数据流向客户单单元的用户传递了完全地交互性类游戏体验。例如,当用户玩交互性游戏并且向左或向右移动游戏控制器时,在监视器/屏幕上显示的用户当前视点相应地向左或向右平移。
实际上由位于与客户端显示单元相同的物理设备上的解码器处理来从数据仓库读取所预取的数据(例如,如果从本地磁盘预取数据流)。可替代地,实际上可以由位于与客户端单元不同的物理设备上的解码器处理来从PVS数据增量的数据仓库读取预取的数据(例如,预取处理可以位于还包括数据仓库2405的远端服务器单元上)。
在步骤2420中,在一些实施方式中所预取的数据表示双向数据流,该双向数据流包括从服务器处理预取到客户端处理的PVS增量可渲染数据和提供给服务器处理来控制数据预取的用户输入数据。
如果在判决步骤2410中确定用户没有请求交互性双向数据流,则处理流程行进至步骤2460。
在步骤2460中,使用预定相机运动路径来控制用于控制基于导航的预取处理的视点位置。在这种情况下,提供给客户端单元的数据流传递了不需要客户端单元的用户的主动交互性输入的类视频体验。
在本说明书的上下文中,相机运动路径包括指定了虚拟相机的位置序列。在计算机图形学中,相机实际上是一般由视点位置(与相机位置和投影中心对应)以及视点指定并且通常为视向向量的虚拟相机。在建模环境中相机可以布置在用户的虚拟出射点位置处,其中相机被说成是提供第一人称视角。在该情况下,相机视点与用户视点相同。
可替代地,相机可以位于与用户的视点不同的点处。相机可以限定视体,其包括表示人物的化身或由用户控制的车辆。在该情况下,相机提供第三人称视角。
虽然该预定流可以使用来自相同数据仓库的数据如完全交互性双向数据流,但是可选地,该预定流可以采用利用了流的确定性结构分组优化。在美国专利6,057,847中描述了对于表示固定相机路径的可渲染数据分组的传输的这些优化,通过引用将该专利的全部内容合并到本申请中。使用 预定相机路径及方向和交互地控制的相机两者的对可见性事件数据的基于导航的预取的其它优化在本说明书的随后部分进行描述。
使用由固定的预定相机路径控制的确定性数据流的主要优点在于可以向多个用户同时广播同样精确的流。如果大的数字网络(例如,宽带电缆、卫星或其它网络)中的用户提供有唯一的双向完全交互性数据流,则这使用相当小的带宽。在一些实施方式中,确定性数据流包括与视单元对过渡对应的预定的数据分组顺序。
根据一些实施方式,即使能够有效地向支持网络的多个用户同时广播受指定的相机位置控制的单向确定性数据流,确定性单向数据流仍然能够来自每个用户的明显的、假如不完全的交互性输入。
有确定性数据流交互地提供的该限制是可见性事件流处理方法的多个特征的原因。首先,每个确定的数据流包括表示穿过建模数据库内由体现在模型中具体连接的视单元序列形成的空间区的相机运动路径。相比之下,常规的相机运动路径(例如,针对计算机动画视频)由体现在模型中的空间曲线形成。从而,只要将用户导航限制到由限定运动路径的连接视单元序列限定的的区,则用户可以随意交互性地改变建模环境的已经流处理至客户端单元的部分内的视点位置,即在这部分内随意导航。该航向可以由客户端单元的限制能够存储在客户端的高速缓存数据量的任何存储限制来限制。该导航还可以有意地由服务器供应商或内容拥有者对客户端单元施加的高速缓存限制来限制。该类型的受限交互性相机运动可以从单向确定性数据流中获得,即使它被同步地提供(广播)给多个用户。
此外,使用PCT专利申请第PCT/US2011/042309号的方法来预计算的可见性事件分组使得能够对表示从具体视单元可看见的所有图形元素的PVS数据进行增量和渐进构造,其中视单元内的观察方向不受限制(即,全方向的)。即,结果的可见实体集合使得能够在对应的视单元内进行全方向观察。当使用预定相机路径采用这样的可见性事件分组时,即使接收由预定相机路径确定的广播确定性可见性事件数据流,用户仍然能够保持对观察方向的完全控制。
能够使用单向确定性数据流传递的另一类型的用户交互性涉及对位于模型的从已经将对应的PVS数据增量传输至客户端单元并且高速缓存的连接视单元可看见的区内的化身、人物、车辆和其它对象进行控制。
其中用户随意贯穿建模环境移动的完全交互性使用了如在步骤2410 和步骤2420中示出的完全双向数据流。在该情况下,用户请求了不同于确定性广播流的唯一数据流。当做出该选择时,数字服务供应商能够选择添加反映以下项的附加费用:所请求的对预取唯一流的服务器资源的使用、和请求传递该唯一数据流到用户的专用带宽。此外,内容拥有者可以针对完全交互性流收取附加费用,该完全交互性流反映了当内容被用作游戏体验而不是更加被动的类视频产品时内容的增加了的功能性。在一些实施方式中,对用户的与将内容传递给用户的客户端单元的服务器相关联的注册账户进行收费。
步骤2430示出了当用户在步骤2410中选择双向流时增加费用的方法。该增加了的费用可以是固定的按次收费(pay-per-play)或小时费率。可替代地,数字服务供应商和或内容拥有者能够使得用户按照每月或其它周期费用来访问交互性内容。
处理流程行进至判决步骤2440,其中确定用户是否继续请求由双向数据流提供的交互性。如果在步骤2440中仍然需要完全的交互性,则处理返回至其中非确定性的、PVS增量分组的基于导航的预取由用户位置来控制的步骤2420并继续。在一些实施方式中,每当用户请求完全交互性时就执行后续步骤2430。在替代实施方式中,仅针对第一次交互性请求或针对特定的交互性请求收取附加的费用,如由服务供应商和/或内容拥有者所确定的。
在一些实施方式中,如果用户在预定时间段内未能提供输入,或如果用户发送有效信号来结束完全交互性双向流,则流复原到一个或更多个确定性数据流。
如果在判决步骤2440中确定用户没有请求或请求完全交互性,则处理流程行进至步骤2465。在步骤2465中,将数据流转变为确定性的单向数据流。
该过度可以通过以下来发生:使得服务器或客户端处理控制相机视点并且移动相机视点使得其向着属于与确定性数据流对应的视单元路径的视单元的视单元。在一些实施方式中,可以由服务器发送与一个或更多个确定性视单元路径中的某些视单元的完整PVS对应的预计算和预存储的PVS数据以精确地将先前双向数据流重新同步为与不同的“故事情节”或流处理内容的输出路径对应的一个或更多个确定性单向数据流。
可选地,可以进行该重新同步以创造从完全交互性体验到实际上被服 务供应商广播到多个其它客户端单元的一个或更多个确定性数据流(与“故事情节”对应)的无缝过渡。该方法使得能够通过将唯一流仅给予实际期望唯一流的那些用户来有效地利用可用带宽。此外,对可用带宽的该有效利用降低了网络拥塞。确定性数据流或非确定性数据流两者中任何一个都可以存储在例如硬盘上以待随后使用。按照前面的描述,在一些实施方式中,该方法包括以下技术:有意地对高速缓存在客户端单元上的PVS数据增量的量进行限制来防止所使用的内容的盗版和转售。
图24B是进一步示出了使用客户端单元(标记为2490)和服务器单元(标记为2492)之间的双向通信来控制可见性事件数据流的方法的细节的示例性流程图。
在一种示例性实施方式中,循环处理从判决步骤2468开始。在判决步骤2468中确定用户是否已经将输入提供给客户端单元,该输入产生控制或视点位置和/或速度(例如,控制杆输入)或提供这样的控制的意图(例如,按键按下用信号通知意图以开始导航的用户控制)。
如果在判决步骤2468中确定用户没有对控制器做出表示视点/相机导航的用户控制的输入,则处理流程行进至步骤2470。
在步骤2470中,没有控制视点位置/速度的数据被发送给服务器。在替代实施方式中,用户可以使用用户希望放弃对视点/相机导航的控制的正向指示。
处理流程行进至执行在服务器单元上的判决步骤2472。在判决步骤2472中确定是否已经接收了表示视点/相机导航的用户控制的数据。在一些实施方式中,由于在特定的时间段上没有输入,所以用于确定没有来自客户端的输入数据的准则包括这样的参数。此外,如先前所指示的,在一些实施方式中,用户对放弃视点/相机导航的控制的期望由正向信号(例如,特定的控制器按键按下)来指示。
如果在判决步骤2472中确定没有接收到来自客户端单元的输入数据(或表示终止视点/相机导航的控制的期望的输入数据),则处理流程行进至步骤2474。
在步骤2474中,由预定相机运动路径来驱动视点/相机的导航并且使用由预定视点/相机运动路径驱动的基于导航的预取来将可见性事件数据分组(数据仓库2476)读取到客户端单元。在该情况下,结果的可见性事件数据流2478可以给客户端单元提供图形信息,当渲染该图形信息时, 该图形信息产生不支持观察期间的完全交互性的脚本图像序列(例如,会不允许未受限的视点/相机运动,但可以允许更加规定的交互性,例如,视向向量的完全或有限控制)。在替代实施方式中,替代所提供的确定流,当前视点保持静止直到检测到用户输入。
将可见性事件分组发送到客户端单元并且在步骤2480中对其进行解码以产生PVS数据,然后将PVS数据存储在数据仓库2482中。在示例性实施方式中,使用在共同待决的PCT专利申请第PCT/US2011/042309号中指定的方法来进行解码。
如果在判决步骤2468中确定用户输入了表示视点/相机导航的用户控制的输入,则处理流程行进至步骤2484。
在步骤2484中,将该输入数据发送给服务器单元。例如,输入数据包括用户的当前位置和速度。
如果在判决步骤2472中确定接收到来自客户端单元的输入数据,则处理流程行进至步骤2486。
在步骤2486中,通过用户输入来确定视点/相机的导航并且使用由用户控制的视点/相机驱动的基于导航的预取来将可见性时间数据分组(数据仓库2476)读取到客户端单元。在该情况下,结果的可见性事件数据流2478向客户单单元提供图形信息,当渲染该图形信息时,该图形信息产生了支持建模环境的可导航空间的限定内以及由服务器单元对存储在客户端单元上的可见性事件和PVS数据的高速缓存大小施加的任何限制内的完全的观察者运动的未脚本化的图形序列。
使用图24A和图24B的先前在共同待决的PCT专利申请第PCT/US2011/042309中指定的方法来控制PVS增量分组的流处理,可以使用确定性广播PVS数据增量流来有效地广播看起来像是高分辨率计算机动画程序的内容,但是具有重要的优点:在任何时候,观察者都能够选择使用与解码器设备链接的游戏控制器并且变成故事中的人物。当用户选择参与时,分组流从确定性广播流切换到与服务器供应商的完全交互性双向连接,其可以作为奖品或必须类型内容来提供。由在共同待决的PCT专利申请第PCT/US2011/042309中指定的PVS增量编解码器传递的流处理交互性媒体(SIM)无缝地从电视节目切换到游戏。在任何时候,在一些实施方式中,用户可以选择与节目的被动脚本化故事情节重新同步,其增强了用户对内容的体验。
在共同待决的PCT专利申请第PCT/US2011/042309中描述的对基于可见性事件的PVS数据增量分组进行编码的方法使得现有的游戏内容能够转换为能够支持灵活的流处理交互性媒体(SIM)的数据。当然,还可以使用针对目标游戏引擎的现有的游戏开发工具连同在共同待决的PCT专利申请第PCT/US2011/042309号中描述的对由这些开发工具产生的信息进行编码的方法来开发自然的SIM内容。如结合图26所讨论的,客户端单元能够结合集成到游戏引擎中的客户端-解码器处理。
内容传递的该SIM方法使得出版商能够影响内容传递的“免费增益”模型,其中使用单向广播数据流将脚本化确定性SIM内容免费传递给广大观众。这将内容暴露给广大观众并且使得观察者能够通过购买加价的双向完全交互性内容来立即变成玩家。
可选地,可以在客户端单元上对使用在共同待决的PCT专利申请第PCT/US2011/042309号中详述的方法来流处理的内容进行渲染并且在常规的视频上进行复合。
按照结合图46所更加完全地开发的,在图24B步骤2420或图24B步骤2486的示例性流程图中,用户的位置可以是用户在建模环境中的虚拟位置,或用户/客户端单元在建模环境所基于的真实环境中的实际位置。基于实际环境的建模环境可以根据使用LIDAR(光探测和测距)或其它测距方式来获取的数据,根据常规的3D建模或获取和手工建模两者的组合。在出版物“Airborne and Terrestrial Laser Scanning,Vosselman,G.,Hans-Gerd,M.,Eds.CRC Press2010,ISBN9781439827987”(其全部内容通过引用合并到本申请中)中公开了该LIDAR方法。在一些实施方式中,如果建模环境基于实际的环境,则流处理的可见性事件信息包括真实环境的基于真实环境中客户端单元的位置来流处理至客户端单元的虚拟交互性表示。
图25A是示出了包括两个建筑物摩托车和广告牌的俯视正投影图、隐藏线图的图。
图25A示出了建模的3D环境。在该图中示出了隐藏线图。在一些实施方式中,使用先进的遮蔽和照明方法来渲染模型。图25A示出了房屋(2501)、小教堂(2502)、摩托车(2503)和广告牌(2504)。图25B是以立体视图在图25A示出的相同建模环境的俯视正投影图的图。
图26A是示出了图25A和图25B的相同建模环境并且包括视单元数 组的俯视正投影图的图。
图26B是示出了图26A的相同建模环境但是以立体视图示出的图。
图26C是示出了图26A的相同建模环境的俯视正投影图并且包括两个示例性相机/视点运动路径的图,其中一个脚本花相机/视点运动路径变化到处于客户端用户的控制之下相机/视点运动路径。
图26C示出了图26A的相同视图并且包括两个相机/视点运动路径。将相机/视点运动路径示为弯曲线内侧,但是非常靠近视单元的顶部边界。将第一相机/视点运动路径标记为“路径A”,并且在一种实施方式中,其对应于规定的相机/视点运动路径。将第二相机/视点运动路径标记为“路径I”,并且其对应于处于客户端用户的交互性控制之下的相机/视点运动路径。
使用由示例性规定的相机/视点运动路径“路径A”驱动的基于导航的预取的可见性事件解码器-服务器处理产生与以下视单元之间的视单元-视单元过渡边界对应的7个可见性事件分组的流处理:
视单元[1,1,1]和视单元[1,1,2]
视单元[1,1,2]和视单元[1,1,3,]
视单元[1,1,3]和视单元[1,1,4]
视单元[1,1,4]和视单元[1,1,5]
视单元[1,1,5]和视单元[1,1,6]
视单元[1,1,6]和视单元[1,1,7]
视单元[1,1,7]和视单元[1,1,8]
在示例性实施方式中,针对规定的相机/视点运动路径如“路径A”,仅传递与实际上被该运动路径穿透的视单元-视单元边界对应可见性事件分组。在图26C中,仅示出了具有与在可见性事件内容流期间传递的可见性事件分组对应的边界的视单元。从而,由于规定的相机/视点运动路径“路径A”不穿透这些视单元,所以在图26C中未示出视单元[1,2,1]和视单元[1,2,2](如在图26A中示出的)。
在图26C的示例性实施方式中,标记为“路径I”的相机/视点运动路径对应于受到标记为“点D”的点处的客户端用户的交互性控制的相机/视点运动路径。在26C的示例中,客户端用户使用的解码器-客户端处理 正在接收的可见性事件内容流对应于通过穿越被“路径A”穿透的视单元边界直到碰到“点D”来预取的可见性事件分组。在该示例中,在“点D”处,客户端用户选择接收基于输入到控制设备如鼠标或游戏控制器中的客户端用户输入来预取的交互可见性事件分组流。如结合图24A和图24B(以及随后的图35A和图35B)的方法所描述的,在一些实施方式中,将可见性事件分组传递到特定的解码器-客户端处理的解码器-服务器处理从对与规定的相机/视点运动路径对应的可见性事件分组的预取迅速地过渡到对与正在受客户端用户控制的相机/视点运动路径对应的可见性事件分组的预取。
在图26A、图26B、图26C和图26D的示例中,视单元对应于导航视单元,图26A和图26B所示的视单元仅是存在于图26C和图26D所示的两个相机/视点运动路径的区中的视单元。在该示例中,建模对象附近的视单元数组对应于预定路径(例如,狭窄的街道)或航向相对受限的区。
从而,在图26C所示的示例中,针对客户端用户所采用的交互性相机/视点运动路径“路径I”,在一些实施方式中,在与“路径I”对应的交互可见性事件数据流期间会仅预取与以下视单元集合之间的边界:视单元[1,1,5];视单元[1,1,6];视单元[1,1,7];视单元[1,1,8];以及与该视单元集合和它们的邻居之间的边界:[1,2,5];视单元[1,2,6];视单元[1,2,7];视单元[1,2,8]对应的附加可见性事件分组。
图26D是示出了图26C的相同建模环境的立体视图并且包括两个示例性相机/视点运动路径的图,其中一个脚本化相机/视点运动路径变化到处于客户端用户的交互性控制之下的相机/视点运动路径。
图26D示出了与图26C的对象相同的对象,但是是以立体视图。
图26E是示出了图26D的相同建模环境的相同立体图并且包括三个示例性相机/视点运动路径的图,其中一个脚本化相机/视点运动路径变化到受客户端用户的交互性控制之下的相机/视点运动路径,并且第三相机/视点运动路径实现了从交互运动路径到规定的运动路径的重新同步。
图26E示出了与图26D的对象相同的对象并且增加了标记为“路径R”的第三相机/视点运动路径,“点Q”对应于客户端用户导航“路径I”选择放弃对相机/视点的交互控制并且重新接合规定的相机/视点运动路径的空间和时间中的点。如结合图15A和图15B所描述的,如果在特定的时间段后没有从相应的解码器-客户端处理接收到交互性控制,则可以将该解码器-客户端-用户决定作为有效信号或默认行为用信号通知给解码器-服务器处理。
在一些实施方式中,在运行时将相机/视点运动“路径R”确定为当规定的相机/视点位于规定相机/视点运动路径的交点处时的一瞬间与规定的相机/视点运动路径相交的轨迹。在图26E的示例中,与“路径A”的重新同步点出现在标记点“点S”处。在这样的实施方式中,所确定的轨迹实现与包括基于广播可见性事件的流交互媒体(SIM)编程的一个或更多个规定的相机/视点运动路径。如在图26E中示出的,在一些实施方式中,当用户决定从交互流切换至确定流时(即,点Q),“路径R”随着自然行进返回至确定流。例如,在点Q处,用户当前位于视单元[1,2,6]中,并且确定流的最近部分位于视单元[1,1,6]。替代直接从视单元[1,2,6]跳转至视单元[1,1,6],用户经由视单元[1,2,7]重新接合视单元[1,1,2]处的确定流。
连接完全交互性运动路径与规定的运动路径的标记为“路径R”的运动路径自身是脚本化的运动路径(例如,在一些实施方式中,在运行时确定)。在图26E的示例中,脚本化的运动路径“路径R”不会穿透视单元[1,2,8]。从而,没有在图26E中示出该视单元。这与以下工作原理一致:从交互性相机/视点运动路径到规定的路径的过渡减小了所必须预取和高速缓存的可见性事件数据,因此使得能够有较快的导航、较少的带宽消耗或两者。
传递作为未编码数据的交互性内容并且在使用内容前在客户端单元上进行编码 的方法以及使用分布式计算来在客户端工作单元上计算可见性事件数据的方法
图27是示出了传递作为未编码数据的交互性内容并且在使用内容前在客户端单元上进行编码的方法的示例性流程图。
数据仓库2705是可以包括表示建模环境的几何、纹理、材料、光照和其它数据的未编码的游戏内容。在步骤2710中,未编码的游戏数据经历在共同待决的PCT专利申请第PCT/US2011/042309中描述的编码方法。该编码产生了也称为可见性事件分组的PVS增量分组。在一些实施方式中,该编码的数据存储在数据仓库2720中。
在一些实施方式中,这些分组包括在具有邻接或包含关系的视单元之间的对应的视单元过渡期间保守地变得新近可见的几何和/或纹理信息。 根据一些实施方式,短语“保守地变得可见”包括针对视单元过渡变得可见的所有图形元素,并且还可以包括针对视单元过渡实际上不变得可见的图形元素(取决于PVS/PVS增量确定的精度)。在共同待决的PCT专利申请第PCT/US2011/042309中描述的方法(还在本说明书的图1至图14中描述了该方法的子集)使能了PVS/PVS增量的精度受控确定。可替代地,在一些实施方式中,按照在共同待决的PCT专利申请第PCT/US2011/042309中描述的,将可见性事件数据以对数压缩格式存储为使用标记轮廓边的中间表示。还可以将新近被遮挡的几何和纹理信息存储在2720中。
在一些实施方式中,在客户端单元上执行步骤2710。该实施使得能够在需要所有或部分的PVS数据增量以前在客户端单元上直接生成上述所有或部分的PVS数据增量。当客户端单元具有至服务器单元的有限连接或没有连接时,该实施可能是有用的。当在共同待决的PCT专利申请第PCT/US2011/042309的编码处理期间采用了高精度可见性预计算时也可以采用该实施。在该情况下,存储在数据仓库2720中的PVS数据增量的大小可能太大以至于实际上不能存储在可分配的媒体上而直接加载到客户端单元上。
在一种实施方式中,将在客户端单元上计算的PVS增量可见性事件分组发送到服务器单元以供其它用户随后使用。在图27的示例性流程图中,将对确定在客户端单元上的可见性事件分组的该可选传输到服务器单元的传输示为步骤2725。
在执行在服务器单元上的步骤2730中,由服务器单元接收可见性事件分组/工作单元并且将数据存储在数据仓库2735中。在一些实施方式中,步骤2730还发送工作证明数据令牌到确定了对应的PVS数据增量分组并且将其发送到客户端的客户端单元上。将该数据标记为2743。该工作证明信息用作对用于计算特定的可见性事件(PVS增量)分组的客户端单元的操作者-拥有者的补偿。该工作证明信息分组随后可以以比特币(bitcoins)类似的方式用作货币(在该情况下使得客户端的用户能够使用工作证明货币来购买基于可见性事件的内容或其它物品或服务)。在示例性实施方式中,给予每个游戏或SIM应用的每个可见性事件分组一个序列号,该序列号简化了工作单元在服务器与客户端之间的分配。
例如,在游戏在市场上发布以前(或在测试第二版发布期间),可能不存在新近发布的游戏的建模环境中的每个可能的视单元到视单元的过 渡的预计算的PVS数据增量。从而,在一些实施方式中,在预发布或预购买时间段期间向用户发送工作分组并且可以在用户的客户端设备上计算PVS数据增量并且传输给服务器。作为用于计算PVS数据增量的补偿,用户接收可兑换关于游戏的折扣或可兑换其它产品或服务的工作证明令牌。因此,用户具有预购买游戏的动机而接收工作分组。
在后续步骤2740中,服务器单元确定所必须计算的附加PVS增量分组,并且向客户端单元发送确定这些分组的指令。在一些实施方式中,客户端为了计算可见性事件分组数据所需的数据与工作单元指令包括在一起,该工作单元指令被作为标记为2742的数据发送到客户端单元而不是由整个游戏数据库2705来提供。在一些实施方式中,直到与游戏的每个可导航视单元边界/过渡对应的可见性事件分组是完整时工作分组才变得可用。
图27B1是示出了包括用于要由客户端单元来完成的可见性事件预计算的工作指令的数据结构的示例性实施方式的图。
图27B1是示出了包括用于要由客户端单元来完成的可见性事件预计算的工作指令的数据结构的示例性实施方式的图。在一些实施方式中,将图27B1的数据结构用于传送由在图27A中标记为2742的数据表示的可见性预计算工作。
图27B1的数据结构包括表示客户端用户的标识符或用户ID的字段。由于每个客户端用户控制不止一个客户端设备,所以还包括唯一客户端设备字段。在一些实施方式中,该设备标识符可以包括识别客户端单元或IP地址的IP数据或其它唯一设备数据。在一些实施方式中,第三字段识别要进行可见性预计算的游戏或SIM内容。在一些实施方式中,另一个字段包括游戏或SIM的可导航空间中的唯一标识符或特定的视单元。在一些实施方式中,根据建模环境中三维视单元数组的索引来确定视单元标识符。在一些实施方式中,另一个字段包括针对视单元的特定边界的唯一标识符。在一些实施方式中,该视单元边界信息包括视单元的与特定可见性分组对应的特定面的参考符号。另一个字段包括视单元的参数。在一些实施方式中,这些参数包括视单元的维度和视单元的位置。在一些实施方式中,另一个字段包括视单元边界参数。在一些实施方式中,视单元边界参数包括表示视单元的每个面上的相邻视单元的信息。
在一些实施方式中,可见性事件预计算工作指令包括执行从视单元看去的可见性预计算所需的图形对象信息(例如,多边形和多边形网格连接 性信息)。在一些实施方式中,该信息包括纹理顶点信息。
图27B2是示出了包括由客户端单元完成并且发送到服务器单元的对于可见性事件预计算的完成工作数据的数据结构的示例性实施方式的图。
图27B2是示出了包括由客户端单元完成并且发送到服务器单元的对于可见性事件预计算的完成工作数据的数据结构的示例性实施方式的图。在一些实施方式中,图27B2的数据结构用于将完成的可见性预计算工作从客户端单元传达给服务器单元,如由图27A的处理2725发送并且由处理2730来接收并且存储在图27A的数据仓库2735中。
图27B2的数据结构包括表示客户端用户的标识符或用户ID的字段。由于每个客户端用户可以控制不止一个客户端设备,所以还包括唯一客户端设备字段。在一些实施方式中,该设备标识符可以包括标识客户端单元或IP地址的IP数据或其它唯一设备数据。在一些实施方式中,第三字段表示要执行可见性预计算的游戏或SIM内容。在一些实施方式中,另一个字段包含游戏或SIM的可导航空间中的特定视单元的唯一标识符。在一些实施方式中,根据建模环境中的视单元三维数组的索引来确定视单元标识符。在一些实施方式中,另一个字段包括视单元的特定边界的唯一标识符。在一些实施方式中,该视单元边界信息包括视单元的与特定可见性分组对应的特定面的参考符。
在一些实施方式中,完成的工作分组包括PVS或可见性事件信息,其可以包括在图13中描述的增量G+子网格信息。
图27B3是示出了包括描述与由客户端单元完成的可见性事件预计算的特定的完成的工作分组对应的工作证明令牌的信息的数据结构的示例性实施方式的图。
图27B3是示出了包括描述与由客户端单元完成的可见性事件预计算的特定的完成的工作分组对应的工作证明令牌的信息的数据结构的示例性实施方式的图。在一些实施方式中,使用图27B2的数据结构来传达由客户端单元执行的完成的可见性预计算工作的证明的令牌。在一些实施方式中,在图27A的步骤2730中通过服务器单元将该工作证明令牌发送至客户端单元并且由客户端单元存储在数据仓库2743中。
图27B3的数据结构包括表示客户端用户的标识符或用户ID的字段。由于每个客户端用户可以控制不止一个客户端设备,所以还包括唯一客户端设备字段。在一些实施方式中,该设备标识符可以包括标识客户端单元 或IP地址的IP数据或其它唯一设备数据。在一些实施方式中,第三字段标识要执行可见性预计算的游戏或SIM内容。在一些实施方式中,另一个字段包括游戏或SIM的可导航空间中的特定视单元的唯一标识符。在一些实施方式中,根据建模环境中的视单元的三维数组的索引来确定视单元标识符。在一些实施方式中,另一个字段包括视单元的特定边界的唯一标识符。在一些实施方式中,该视单元边界信息包括视单元的与特定可见性分组对应的特定面的参考符。
在一些实施方式中,将工作的完成日期和时间存储在另一个字段。在一些实施方式中,存储令牌的货币值。
上述字段限定了与特定可见性事件预计算对应的唯一工作证明令牌。如结合图27A所描述的,客户端用户可以将这些令牌用作换取所提供的可见性预计算工作的物品和服务。
在一些实施方式中,工作证明令牌是可重复使用的工作证明货币如比特币,其可以交换由许多厂家提供的物品和服务。
基于可用传输带宽和客户端图形性能来以不同的细节层次来对交互性内容进行 编码的方法
图28A、图28B和图28C是示出了在共同待决的PCT专利申请第PCT/US2011/042309中描述的编码处理如何以利用处于特定细节层次上的几何和/或纹理信息,其中层次细节与最大可用传输带宽和/或客户端单元的可用渲染性能成一定比例。
共同待决的PCT专利申请第PCT/US2011/042309号的方法指定了以下技术:在可能出现延迟分组到的时间段期间动态地选择传输相对地较低的细节层次的可见性事件分组。图28A、图28B和图28C的方法是对处于相对的细节层次的可见性事件分组进行编码的静态方法,该相对的细节层次反映了最大可用传输带宽或最大客户端渲染性能。在一些实施方式中,采用了先前描述的对具有较低细节层次的可见性事件分组进行编码并且在潜在的延迟分组到达时间段期间选择发送这些分组的方法,连同图28A至图28C的方法。
在图28A的示例性流程图的判决步骤2810中,确定最大可用传输带宽是否大于预定值(在该情况下,为VAR1)。如果在判决步骤2810中确定可用的最大传输带宽超过预定值,则处理流程行进至步骤2820。在步骤2820中,使用高细节层次模型来执行编码。在一些实施方式中,该模 型的细节层次由包括几何细节层次、纹理分辨率和光照细节的因子来确定。
另一方面,如果在判决步骤2810中确定可用的传输带宽不大于预定值,则处理流程行进至步骤2815。在步骤2815中,使用模型的较低细节层次来执行在共同待决的PCT专利申请第PCT/US2011/042309号中描述的编码处理。
在图28B的示例性流程图中,在判决步骤2830中,确定最大可用客户端渲染性能是否超过了预定值(在该情况下为VAR2)。如果在判决步骤2830中确定最大可用客户端渲染性能大于预定值VAR2,则处理流程行进至布置2840,其中在高细节层次对可见性事件分组进行编码。另一方面,如果在判决步骤2830中确定可用的客户端渲染性能不大于预定值VAR2,则处理流程行进至步骤2835。在步骤2835中,使用模型的较低细节层次执行在共同待决的PCT专利申请第PCT/US2011/042309号中描述的编码处理。再一次,在一些实施方式中,模型的细节层次由可以包括几何细节层次、纹理分辨率和光照细节的因子来确定。
根据一些实施方式,针对相同的建模环境执行并且存储多次编码。可以基于最大可用传输带宽和/或客户端渲染性能来针对实时预取解码动态地选择适当地编码的可见性事件数据。此外,在一些实施方式中,还基于在共同待决的PCT专利申请第PCT/US2011/042309号中描述的方法来自适应地选择细节层次以防止延迟分组到达。
几何模型的各种参数化表示在一些实施方式中是可能的。这些参数表示包括由Bezier和其它高阶面表示的曲面。参数化曲面是程序性面(procedural surface)类型。在一些实施方式中,程序性面还包括程序地定义的模型如挤压(具有或没有倾斜)、枢转面和其更加复杂的程序模型。
一般可以使用包括程序参数的少量信息来对这些程序地限定的模型进行描述。在运行时,可以根据少量的参数化信息和对应的程序性生成处理来生成包括例如多边形等面几何图形的相对大量的信息。例如,参数化信息可以包括有理b样条曲面,根据其可以在运行时生成许多多边形。(被有效地存储为参数化模型的图形信息的示例包括Autodesk公司的3D Studio Max产品和Parametric Technology公司的Pro-Enginner产品,如所在出版物“Geometric Modeling with Splines,Cohen,E.,Riesenfeld,R.,Elber,G.2001,A.K.Peters”中的基于样条的面的情况下描述的,该出版物的全部内容通过引用合并到本申请中)。
在图28C的示例性流程图的判决步骤2850中,确定最大可用传输带宽是否大于预定值(在该情况下为VAR3)。如果在判决步骤2810中确定可用的传输带宽超过了预定值,则处理流程行进至步骤2860。在步骤2860中,使用原始非程序表示来执行编码。
另一方面,如果在判决步骤2850中确定可用传输带宽不大于预定值,则处理流程行进至步骤2855。在步骤2855中,使用参数化表示来执行在共同待决的PCT专利申请第PCT/US2011/042309号中描述的编码处理。
此外,在一些实施方式中,在运行时自适应地在使用原始几何图形编码的可见性事件分组与使用几何图形的参数化表示编码的可见性事件分组之间做出选择以基于在共同待决的PCT专利申请第PCT/US2011/042309号中描述的方法以及结合本说明书的图42A和图42B所讨论的方法来防止延迟分组到达。
图29:如果所高速缓存的可见性事件数据超过了预定值则将所高速缓存的数据从 客户端单元上移除的方法
图29的示例性流程图示出了对可以存储在客户端单元上的高速缓存的可见性事件和PVS数据的量进行控制的方法。在图29的示例性流程图中,在判决步骤2910中确定客户端单元上的高速缓存数据的大小是否超过了预定值(在该情况下为“PERMITTED_SIZE(许可_大小)”)。该高速缓存数据可以是未解码的可见性事件数据、解码的可见性事件数据(即,PVS数据增量)、PVS数据或所有这三种数据的组合。
如果在判决步骤2910中确定客户端单元上所高速缓存的数据的大小超过“PERMITTED_SIZE”,则处理流程行进至步骤2920。
在步骤2920中,将表示从用户的视点附近看不见的PVS数据或从用户的当前视点看去不容易达到PVS数据增量(例如,与不位于包括用户当前视点位置的视单元附近的视单元过渡边界对应)的高速缓存数据从高速缓存中移除。
该移除处理导致了在任何时候一般都远小于整个模型的高速缓存。由于在任一时刻仅有一小部分数据存储在客户端上,所以这防止了对内容的未授权复制(例如,拷贝或盗版)。如果在步骤2910中确定高速缓存大小不大于“PERMITTED_SIZE”,则处理流程行进至步骤2915,其中没有高速缓存元素被移除。
在流处理交互性媒体数据流的低带宽需求时间段期间对广告或目标广告进行流 处理的方法
图30是示出了对包括几何信息、纹理信息或生成几何或纹理信息的指令的可见性事件分组进行流处理的方法的示例性流程图,其中可见性事件信息表示流处理交互性媒体数据流的低带宽需求时间段期间广告或目标广告。
服务器单元被标记为3005。特定的客户端单元被标记为3010。在一些实施方式中,将服务器单元连接至多个客户端单元。
在一些实施方式中,非可变可见性事件数据包括建模环境的内容的绝大部分,上述建模环境包括建筑、车辆、化身和其不表示对具体客户端用户为唯一的广告、高速缓存仓库或电报对象的其它内容。
相反,可变可见性事件数据(存储在该示例性实施方式的数据仓库3025中)表示对具体的客户端用户为唯一的广告、高速缓存仓库、电报或其它对象。
基于可能由规定的相机运动路径确定或可能由相机/视点运动的交互性用户控制驱动的相机/视点移动来将非可变可见性事件数据和可变可见性事件数据两者预取至客户端单元。
高速缓存仓库对象包括建模环境中可以由客户端用户选择的对象或对象的表示,其中对高速缓存仓库对象的选择使得对象可以由客户端用户使用。在一些实施方式中,高速缓存仓库对象的选择导致向客户端用户的货币收费。高速缓存仓库项的示例包括建模的衣服、武器、附件、车辆、不动产和可以在建模环境中表示的任何其它类型的对象。
电报对象在建模环境中的将消息传送客户端用户的对象或对象的表示。电报对象的示例包括广告牌、对化身、车辆或衣服的版画或标记、飞行标识或可以在建模环境中表示的任何其它类型的对象。在一些实施方式中,电报对象可以与客户端用户进行交互以发送返回消息。
广告对象还包括在建模环境中将广告传送至客户端用户的对象或对象的表示。广告对象的示例包括广告牌、对化身、车辆或衣服的版画或标记、飞行标识或可以在建模环境中表示的任何其类型的对象。在一些实施方式中电报对象可以与客户端用户进行交互并且将该交互记录为对可点击广告的用户点击。
在图30的示例性实施方式中,基于脚本化预定相机路径来对可见性事件分组进行流处理,在该情况下,将相同的非可变可见性事件数据流广 播到多个连接的客户端单元。数据仓库3015存储非可变PVS增量或可见性事件分组。在该示例性实施方式中,非可变可见性事件分组包括基于规定的相机路径而预取的几何和纹理信息。将结果的可见性事件数据流称为流交互媒体(SIM)数据流。在示例性实施方式中,在名义操作模式下传递作为由规定的相机运动路径驱动的可见性事件数据流的SIM数据流(如在图24A和图24B以及图35A和图35B的示例性实施方式中所示的,非交互SIM流可以在用户控制之下过渡到完全交互SIM流)。在另外的实施方式中,该非可变可见性事件数据流由预定的脚本化的相机运动路径来驱动,在该情况下,结果的SIM允许有限的交互性,如前面结合图24A和图24B所描述的。在该情况下,根据一些实施方式,将非可变可见性事件分组的脚本化序列同步广播至多个客户端单元。
在步骤3020中,将包括流交互编程的非可变分组作为非可变可见性事件分组传递至客户端单元。在图30实施方式的示例性实施方式中,基于脚本化预定相机路径来对非可变可见性事件分组进行处理,在该情况下,将相同的非可变可见性事件数据流广播至多个连接的客户端单元。在替代实施方式中,使用基于导航的预取将非可变可见性事件分组动态地预取至特定的客户端单元,在基于导航的预取中,相机/观察者运动由客户端用户使用鼠标、游戏控制器或其它设备来交互地进行控制。
在一些实施方式中,第二数据仓库3025存储了表示定向广告消息的可变数据,在非可变可见性事件数据的广播传递或非广播传递期间将该定向广告消息流处理至各个特定的客户端单元。根据一些实施方式,将定向广告数据作为可变分组来发送,当发送非可变数据的带宽需求很低的时间段期间将该上述可变分组添加至数据流。
在步骤3030中,表示对于用户将是可见的特定广告消息的对象的几何或纹理信息被放置在在步骤3033中与广播非可变分组进行组合的一个或更多个可变分组中。
在步骤3030中方法的替代实施方式插入可变分组数据,其中可变分组数据表示可渲染的图形对象或用于生成包括从一个用户发送到另一个用户的即时消息的可渲染的图形对象的指令。
在一些实施方式中,3025的该可见性事件数据是实际的几何和/或纹理信息。在替代实施方式中,该数据是用于在客户端单元上生成实际的几何和/或纹理信息的指令。在一种实施方式中,3025的该数据包括用于表示几何和/或纹理信息的作为表示广告消息的对象的对象的参数化构造的 参数。在一种实施方式中,该参数化信息包括特定图示符以及描述生成表示广告消息的3D标识或版画的图示符外形的挤压和/或倾斜的参数的参考符。在另外的实施方式中,采用其它参数化构造技术来生成广告牌、霓虹灯标牌、计分板或关于客户广告消息的其它表示。
在一些实施方式中,在步骤3030中使用在共同待决的PCT专利申请第PCT/US2011/042309号中描述的基于导航的预取方法将仓库3015的数据与几何转换矩阵相关联,该矩阵将关联对象布置在很有可能在预定量的时间中对用户变得可见的位置中。在一种实施方式中,转换矩阵将可变对象转换至从当前视单元看不见而从很快将要被相机/视点穿透的视单元可看见的位置。使用在出版物“Introduction to Computer Graphics,Foley,J.,VanDam,Addison Wesley,1990”(其全部内容通过引用合并到本申请中)中所描述的矩阵级联的现有技术方法来导出该转换矩阵,其中转换矩阵定位对于用户还不可见并且是可见性事件高速缓存的一部分的视单元或导航单元中可变对象。
在步骤3030中,按照当所正在发送的可变分组的数量和大小很小时的时间段期间可变分组来对表示广告对象的数据进行流处理。在该示例性实施方式中,在当流处理非可变分组的带宽需求很低时的时间段期间发送可变分组。在一些实施方式中,即使诸如此的示例性实施中,其中非可变分组表示被同时广播至多个客户端的规定的可见性事件分组,在低带宽需求的这些时间段期间将每个可变分组仅发送至特定的接收/客户端单元。使用分组寻址协议如TCP/IP或任何期望的路由方案来将可变分组发送至一个或更多个明确地目标的接收单元。
在对非可变广播分组的低带宽需求的时间段期间将可变非广播分组添加至数据流的方法最佳地利用了可用带宽并且易于最小化以下情况:可见性事件数据的客户端高速缓存被相机/视点位置耗尽,否则在客户端渲染期间该情况会对应于延迟分组到达和可见性错误。
在步骤3030中,将表示广告消息的对象明确地放置在建模环境的一部分中使得上述对象很肯能在预定量时间内对于用户是可见的。此外,在步骤3030中,对可变分组传输做出调度使得可变分组基本上在其变得可见以前就到达了,从而防止因延迟分组到达而导致的可见性错误。
示例性实施方式还可以包括自适应地使用较低细节层次的可见性事件分组来防止预期的延迟分组到达的方法,结合图42A和图42B的方法对该方法进行一步的讨论。例如,如果对象预期在时刻t1变得可见,则 调度处于当前细节层次的分组在时刻t1的时刻(例如,时刻t0)处到达客户端设备处。但是,如果确定处于当前细节层次的分组不能在时刻t0处到达,则将处于较低细节层次的分组在时刻t0处发送至客户端设备。
在后续步骤3033中,将非可变可见性事件分组与可变可见性事件分组组合成用数据3050表示的组合数据流。
数据流3050是发往用矩形3010表示的特定客户端单元的可变分组和广播(非可变)分组的组合数据流。
在执行在特定客户端单元上的步骤3055中,用户可以选择与标识广告消息的特定对象进行交互。将表示时间和位置(以及表示所交互的对象的其它信息)从特定接收器发往服务器单元。传输回服务器单元的该数据被示出成标记为3057的数据。
在执行在服务器单元上的步骤3040中,从用于3057表示的客户端单元数据流中接收的用户点击数据用于触发对表示与所点击的广告(AD)相关联的对象的特定几何或纹理(或参数化)数据的读取。在该情况下,在一些实施方式中,所表示的对象包括关于所点击的广告的附加信息,该附加信息包括所广告的产品的表示或附加的产品文字或定购信息。在替代实施方式中,在建模环境中的对象上显示有点击-定购图标。当选择点击-定购图标时,来自订货单突然出现使得用户能够定购与所选对象对应的产品。如果所广告的对象是在流交互节目的剩余部分期间由用户的化身穿戴、驾驶、飞行、导航或携带的虚拟对象,则点击可能导致对用户收费,如在步骤3056所示的。
在完全交互性双向数据流的低带宽需求时间段期间对广告或目标广告进行流处 理的方法
如前面所描述的,图30示出了将可变可见性事件数据分组插入到非可变可见性事件分组的数据流中的方法的示例性实施方式,其中非可变可见性事件数据分组表示大多数建模对象并且可变可见性事件分组表示广告、高速缓存仓库或电报对象。在图30的示例性实施方式中,非可变可见性事件数据分组和可变性事件数据分组是基于相机/视点移动来标称预取的,该相机/视点移动是由与具有有限交互性的动画编程对应的规定相机路径确定的。
在一些实施方式中,在基于处于客户端用户的交互控制之下的相机/视点移动来对可见性事件数据进行流处理期间应用图30的方法。在图31 的示例性流程图中示出了这样的示例性实施方式。在数据仓库3115中,在一些实施方式中表示整个环境的PVS增量或可见性事件数据。在步骤3120中,基于处于用户的交互性控制使用在共同待决的PCT专利申请第PCT/US2011042309号中所描述的基于导航的预取方法来预取非可变可见性事件分组。
在步骤3120中,将包括流交互编程的非可变分组作为非可变可见性事件分组传递至客户端单元。在该情况下,使用基于导航的预取将非可变可见性事件分组动态地预取至特定的客户端单元,在该基于导航的预取中,客户端用户使用鼠标、游戏控制或其它设备来交互地控制相机/观察者运动。在该情况下,将非可变可见性事件数据分组作为唯一数据流流处理至特定的客户端/用户(例如,具有明显交互性的类游戏的内容)。
根据一些实施方式,第二数据仓库3125存储了表示在非可变可见性事件数据的非广播传递期间被流处理至各个特定的客户端单元的定向广告消息(或高速缓存仓库项、或电报对象)。将定向广告数据作为当发送非可变数据的带宽需求很低时的时间段期间添加至数据流中的可变分组来发送。使用包括要预取的可见性事件分组的大小和视点速度的信息来确定相对于可用带宽的当前及预测带宽需求。因此,例如,如果在给定的时间内被调度用于预取传递的可见性事件分组的数量低于预定阈值,则预测用户的带宽需求小于能够将广告数据传输至用户的带宽需求。在一个示例性实施方式中,在步骤3130中,把表示将对用户可见的具体广告消息的对象的几何或纹理信息放置在在步骤3133中与非可变分组进行组合的一个或更多个可变分组中。
在一些实施方式中,3125的可见性事件数据是实际的几何和/或纹理信息。在替代实施方式中,数据是用于在客户端单元上生成实际几何和/或纹理信息的指令。在一种实施方式中,第二数据仓库3125中的数据包括用于对表示几何和/或纹理信息的对象进行参数化构造的参数,该对象是表示广告消息的对象。在一种实施方式中,该参数化信息包括特定图示符的参考符以及描述图示符外形的挤压和/或倾斜的参数以生成表示广告消息的3D标识或版画。在另外的实施方式中,采用其它参数化构造技术来生成广告牌、霓虹灯标牌、计分板或关于客户广告消息的其它表示。
在一些实施方式中,使用在共同待决的PCT专利申请第PCT/US2011/042309号中指定的以及在本说明书的另外实施方式中进一步描述的基于导航的预取方法将仓库3130的数据与几何转换矩阵相关 联,该矩阵将关联对象布置在很有可能在预定量的时间中对用户变得可见的位置中。
在步骤3130中,将表示广告对象的数据作为当正在发送的可变分组的数量和大小很小时的时间段期间的可变分组来流处理。即使是在非可变分组表示同时广播至多个客户端的规定的可见性事件分组的实施(例如,图30的示例性实施方式)中,每个可变分组也可以在这些低带宽需求时间段期间潜在地发送至特定的接收/客户端单元。在一些实施方式中,使用分组寻址协议如TCP/IP或任何期望的路由方案来将可变分组发送至一个或更多个明确地目标的接收单元。
在非可变分组的低带宽需求的时间段期间将可变非广播分组添加至数据流的方法最佳地使用了可用带宽并且易于最小化以下情况:可见性事件数据的客户端高速缓存被相机位置耗尽,否则该情况在客户端渲染期间对应于延迟分组到达和可见性错误。
在步骤3130中,在一些实施方式中,表示广告消息的对象具体地位于建模环境的预定区内以使得对象在预定量的时间内对于用户是可见的。此外,在步骤3130中,对可变分组传输做出调度以使得对象基本上在要变得可见以前就到达了,从而防止了因延迟分组到达而导致的可见性错误。
在后续步骤3133中,将非可变可见性事件分组与可变可见性事件分组组合成表示为数据3150的组合数据流。
数据流3150是发送至用矩形3110表示的特定客户端单元的非可变分组和可变分组的组合数据流。
在执行在特定客户端单元上的步骤3155中,用户可以选择与表示广告消息的特定对象进行交互。将表示时间和位置的数据(即,所交互的对象)从特定的接收器发往服务器单元。所传输回服务器单元的该数据被示出称为用3157表示的数据。
在执行在服务器单元上的步骤3140中,在一些实施方式中,使用从用3157表示的客户端单元数据流接收的用户点击数据来触发对表示与所点击的广告(AD)相关联的对象的特定几何或纹理(或参数化)数据的读取。在该情况下,在一些实施方式中,所表示的对象包括关于所点击的广告的附加信息,该附加信息包括所广告的产品的表示或附加产品文字或定购信息。在替代实施方式中,所表示的对象是点击-定购图标。
如果所广告的对象是在流交互程序的剩余部分期间由用户的化身穿戴、驾驶、飞行、导航或携带的虚拟对象,则点击可能产生对用户的收费,如在步骤3156所示的。
记录可见性事件服务器上的广告对象的用户点击并且将点击记录发送到使得当 用户后续进入网站时显示广告url的网站服务器的方法
图32A和图32B是示出了对几何或纹理信息、或者生成几何或纹理信息的指令进行流处理的方法的框图/流程图,其中上述信息或指令表示在流处理交互性媒体数据流的低带宽需求时间段期间的广告和目标广告。
将服务器单元标记为3205。将特定的客户端单元标记为3210。在一些实施方式中,将服务器单元连接至多个客户端单元。根据一些实施方式,将表示流交互媒体流的数据作为非可变分组广播至所有连接的客户端单元。
数据仓库3215存储包括流交互媒体(SIM)的非可变PVS增量或可见性事件分组,其中可见性事件分组的基于导航的预取由规定的相机路径驱动。第二数据仓库3225存储表示可以在非可变数据的广播期间流处理至各个特定的客户端单元的定向广告消息的可变数据。将该定向广告数据作为添加至在发送非可变数据的带宽需求很低时的时间段期间的数据流的可变分组来发送。
该数据仓库3225还可以存储由用户购买的对象或赠送给用户以换取对与广告对象相关联的广告url的点击的对象的可变数据。在一些实施方式中,从图32B中的标记为3260的网站服务器发送广告对象、购买对象或赠送对象。可替代地,表示这些对象的数据可以预存储在服务器单元3205上,其中从网站服务器(3260)至服务器单元(3205)的数据用于触发使用步骤3230将存储在3225中的特定可变分组插入到可见性事件流中。
可替代地,从网站服务器3260至服务器单元3205的数据可以表示用于赠送对象、购买对象或广告对象的构造的参数;其中参数化数据用于实际上使用在服务器单元3205上执行的参数化建模方法来构造对象。
在一些实施方式中,如随后描述的,从网站服务器3260接收的数据最终由先前与广告对象的交互来触发,在步骤3242中由服务器单元3205对该交互进行记录,并且将该交互记录发送到将交互记录存储在数据仓库3263中的网站服务器3260。
在步骤3220中,将表示流处理交互编程的非可变分组广播至所有的接收/客户端单元。
在步骤3230中,将表示要对于用户可见的特定广告消息、赠送对象或购买对象的几何或纹理信息放置在在步骤3233中与广播非可变分组进行组合的一个或更多个可变分组中。
在一些实施方式中,3225的数据是实际的几何纹理信息。在替代实施方式中,数据包括用于在客户端单元上生成实际的几何和/或纹理信息的指令。在一种实施中,3225的数据包括用于表示几何和/或纹理信息的对象的参数化构造的参数,该对象是表示广告消息的对象。在一种实施中,该参数信息包括特定图示符的参考符以及描述图示符外形的挤压的参数以生成3D标识或表示广告信息的版画。在另外的实施方式中,采用其它参数化构造技术来生成广告牌、霓虹灯标志、计分板和关于客户广告消息、购买对象或赠送对象的其它表示。
在一些实施方式中,仓库3230的数据与几何转换矩阵相关联,该几何转换矩阵基于先前描述的和共同待决的PCT专利申请第PCT/US2011/042309号中的可导航预取反馈方案来将关联对象放置在很有可能会在预定量时间内对用户变得可见的位置中。
在步骤3230中,将表示广告、赠送或购买的对象(在下文中称为可变对象)的数据放置在可变分组中,通过在当正在发送可变分组的数量和大小很小时的时间段期间发送该可变分组来将该可变分组与非可变分组进行组合。在一些实施方式中,在这些衰退时间段期间将每个可变分组仅发送至特定的接收/客户端单元。使用分组寻址协议如TCP/IP或其它路由方案将可变分组发送至一个或更多个具体地目标的接收单元。
在非可变广播分组的低带宽需求的时间段期间将可变的非广播分组添加至数据流的方法最佳地利用了可用带宽并且最小化了可见性事件数据的客户端高速缓存由相机位置耗尽的情况。
在步骤3230中,将可变对象具体地安置在建模环境的一部分中使得这些对象在预定量时间内很有可能对于用户可见。此外,在步骤3230中,对可变分组传输进行调度以使得对象基本上在要变得可见以前就到达了,从而防止可见性错误。
数据流3250是发往用矩形3210表示的特定客户端单元的广播(非可变)分组和可变分组的组合数据流。
在执行在特定接收器或客户端单元(标记为3210)上的步骤3255中,用户可以选择与表示广告消息的特定可变对象进行交互。将表示时间和位置(例如,所交互的对象)的数据从特定的接收器发送到服务器单元。
在一种实施中,针对一个时间段强调可变对象(例如,通过照明或其它手段)。将在该时间段期间与流的用户交互(例如,通过单个按键的用户点击)注册为与特定可变对象(例如,广告对象)的交互。因为不需要各个用户控制相机路径,所以这使得多个用户能够在单个广播可见性事件流期间与这样的广告对象进行交互。一旦用户控制了视单元外与客户端侧可见性事件高速缓存对应的SIM相机路径,则用户会仅需要不再与广播流对应的唯一双向可见性事件数据流。
在步骤3256中,在一些实施方式中,对于在步骤3255中点击的可点击广告对象相关联的广告客户赞助进行货币收费。
在步骤3240中,将从用3257表示的客户端单元数据流接收的用户点击数据用于触发对表示与所点击的广告(AD)相关联的对象的特定几何或纹理(或参数化)数据的读取。在该情况下,所表示的对象可以包括关于所点击的广告的附加信息,该附加信息包括广告的产品的表示或附加的产品文字或定购信息。在替代实施方式中,所表示的对象可以是点击-定购图标。
在后续步骤3242中,处理流程行进至图32B中的处理32-1,其中将表示对应于用户与广告对象的交互的特定点击事件的数据发送至在图32B中标记为3260的网站服务器单元。
网站服务器单元3260将特定用户与广告对象的交互的记录存储在数据仓库3263中。
在由网站服务器3260执行的后续步骤3269中,当对应用户访问如在判决步骤中所示的网站服务器的网站时对与先前在可见性事件数据流期间所交互的广告对象(该先前交互的记录已经存储在3263中)对应的url链接进行显示。
总体效果是针对每个用户记录并且保存在SIM/游戏可见性事件数据流期间用户与广告或其它可变对象的交互,并且当访问网站时使上述交互变得可用。
在判决步骤3272中,用户可以选择点击在步骤3269中显示的一个或更多个url链接。这可以导致以货币方式对广告客户进行货币收费。
在一种实施中,在步骤3272中对广告客户的url进行点击可以使得用户在随后对具体的SIM/游戏可见性事件数据流期间获得对特定可变对象的访问。如果在判决步骤3275中确定用户获得访问的可变对象是“免费礼物”,则处理流程行进至步骤3281。
在步骤3281中,将与用户已经通过点击步骤3272获得访问的特定可变对象对应的数据发送至可见性事件服务器单元3205。在一些实施方式中,该数据可以包括用于构造特定可变对象的参数和识别已经预先存储在服务器单元3205上的可变对象的数据、或表示可变对象的实际数据、或所有三种类型的信息的组合。处理流程从3281行进至处理32-1,其将处理流程返回至图32A中的步骤3225。
如果在判决步骤3275中确定与在步骤3269中显示并且在步骤3272中点击的url链接对应的对象不是免费的礼物而是一个收费项,则处理流程行进至步骤3278,其中针对该“高速缓存仓库”可变对象的购买来向用户收费。
在完全交互双向数据流的低带宽需求时间段期间对广告和目标广告进行流处理的方法。
图32A和图32B指定了将可变数据分组插入到非可变可见性事件分组上的数据流中的方法,其中非可变可见性事件分组表示可见性事件分组的由规定的相机路径驱动的基于导航的预取,该规定的相机路径与具有有限交互性的动画编程对应。
根据一些实施方式,还将图32A和图32B的方法应用于如图2所示的完全交互性可见性事件数据流。在数据仓库215中,表示整个环境的PVS增量或可见性事件数据。在步骤220中,基于处于用户的交互性控制之下的用户视点位置使用在共同待决的PCT专利申请第PCT/US2011/042309号中描述的基于导航的预取方法来预取可见性事件分组。
在步骤233中,将基于导航预取的数据流以结合图32A和图32B描述的方式来与标识目标的、可点击广告对象和其它可变对象的数据分组进行组合。
图33A和图33B是示出了对几何或纹理信息、或生成几何或纹理信息的指令进行流处理的方法的框图/流程图,其中上述信息或指令表示在使用可见性事件数据的基于导航的预取来对可见性事件数据进行流处理 的低带宽需求时间段期间的广告和目标广告,该可见性事件数据的预取是由处于客户端用户的交互性控制之下的视点运动来驱动的。
将服务器单元标记为3305。将特定客户端单元标记为3310。在一些实施方式中,将服务器单元连接至多个客户端单元。将表示流交互性媒体流的数据作为非可变分组广播至所有连接的客户端单元。
数据仓库3315存储包括流交互媒体(SIM)的非可变PVS增量或可见性事件分组,其流交互媒体中可见性事件分组的基于导航的预取由规定的相机路径来驱动。第二数据仓库3325存储了表示可以在非可变数据的广播期间流处理至各个特定的客户端单元的定向广告消息的可变数据。将定向广告数据作为可变分组来发送,当用于发送非可变数据的带宽需求很低时的时间段期间将可变分组添加至数据流。
在一些实施方式中,该数据仓库3325还存储表示由用户购买或赠送给用户以换取对与广告对象相关联的广告url的点击的对象的可变数据。在一些实施方式中,将广告对象、购买对象或赠送对象从在图33B中标记为3360的网站服务器来发送。在替代实施方式中,将表示这些对象的数据预存储在服务器单元3305上,其中从网站服务器(3360)至服务器单元(3305)的数据用于触发使用步骤3330将存储在3325中的特定可变分组插入到可见性事件流中。
在替代实施方式中,从网站服务器260至服务器单元3305的数据表示用于构造赠送对象、购买对象或广告对象的参数;上述参数化数据通常用于使用执行在服务器单元3305上的参数化建模方法来实际地构造对象。
如下面所公开的,从网站服务器3360接收的数据最终由早先与广告对象的交互来触发,在步骤3342中由服务器单元3305记录早先与广告对象的交互,并且将交互记录发送至将交互记录存储在数据仓库3363中的网站服务器3360。
在步骤3320中,将表示流交互编程的非可变分组广播至所有的接收器/客户端单元。
在步骤3330中,将要对用户可见的表示特定广告消息的对象、赠送对象或购买对象的几何或纹理信息放置在在步骤3333中与广播非可变分组组合的一个或更多个可变分组中。
在一些实施方式中,3325的数据是实际的几何纹理信息。在替代实 施方式中,数据可以是用于在客户端单元上生成实际几何和/或纹理信息的指令。在一种实施中,3325的数据包括用于对表示几何和/或纹理信息的对象进行参数化构造的参数,上述对象是表示广告信息的对象。在一种实施中,该参数信息包括特定图示符的参考符号以及描述图示符外形的挤压的参数以生成3D标识或表示广告消息的版画。在另外的实施方式中,采用参数化构造技术来生成广告牌、霓虹灯标志、计分板和关于客户广告消息、购买对象或赠送对象的其它表示。
在一些实施方式中,仓库3330的数据与几何转换矩阵相关联,该几何转换矩阵基于先前描述的并且在共同待决的PCT专利申请第PCT/US2011/042309号中的可导航预取反馈方案来将关联对象放置在预定量时间内很有可能变得对用户可见的位置中。
在步骤3330中,将表示广告对象、赠送对象或购买对象(下文称为可变对象)的数据放置在所正在发送的可变分组的数量和大小很低时的时间段期间通过发送上述可变分组来与非可变分组进行组合的上述可变分组中。在这点上,在可变时间段的地带宽时间段期间发送可变分组。在一些实施方式中,可以将每个可变分组在这些衰退时间段期间仅发送至特定的接收器/客户端单元。使用分组寻址协议如TCP/IP或其它路由方案来将可变分组发送至一个或更多个具体地目标的接收单元。
在非可变广播分组的低带宽需求的时间段期间将可变的非广播分组添加至数据流的方法最佳地利用了可用带宽并且易于最小化以下情况:可见性事件数据的客户端高速缓存由相机位置耗尽。
在步骤3330中,将可变对象具体地安置在建模环境的一部分中以使得对象在预定量时间内很有可能对于用户可见。此外,在步骤3330中,做出对可变分组传输的调度以使得基本上变得可见以前对象就到达了,从而防止可见性错误。
数据流3350是发送至用矩形3310表示的特定客户端单元的广播(非可变)和可变分组的组合数据流。
在执行在特定服务器或客户端单元(标记为3310)上的步骤3355中,用户可以选择与表示广告消息的特定可变对象进行交互。将表示时间和位置(例如,所交互的对象)的数据从特定的服务器发送至服务器单元。
在一种实施中,在一个时间段期间强调(例如,通过照明或其它手段)可变对象。将在该时间段期间的与流的用户交互(例如,通过单个按键的 用户点击)注册为与特定可变对象(例如,广告对象)的交互。因为不需要各个用户控制相机路径,所以这使得多个用户能够在单个广播可见性事件流期间与这样的广告对象进行交互。一旦用户控制了视单元外与客户端侧可见性事件高速缓存对应的SIM相机路径,则用户会仅需要不再与广播流对应的唯一双向可见性事件数据流。
在步骤3356中,可以对赞助在步骤3355中点击的可点击广告对象的广告客户进行货币收费。
在步骤3340中,将从用3357表示的客户端单元数据流接收的用户点击数据用于触发对表示与所点击的广告(AD)相关联的对象的特定几何或纹理(或参数化)数据的读取。在该情况下,所表示的对象可以包括关于所点击的广告的附加信息,该附加信息包括所广告的产品的表示或附加的产品文字或定购信息。在替代实施方式中,所表示的对象是点击-定购图标。
在后续步骤3343中,通过图33B中的处理33-2来将表示与用户和广告对象的交互对应的特定点击事件的数据发送至标记为3360的网站服务器。
在一些实施方式中,网站服务器单元3360将特定用户与广告对象的交互的记录存储在数据仓库3363中。
在由网站服务器3360执行的后续步骤3369中,当对应的用户访问如在判决步骤示出的网站服务器的网站时,对与早先在可见性事件数据流期间所交互的广告对象对应的url链接(该先前交互的记录已经存储在3363中)进行显示。
总体效果是针对每个用户记录存储用户在SIM/游戏可见性事件数据流的观察期间与广告或其它可变对象的交互并且当访问网站时使得上述交互对用户可用。
在判决步骤3372中,用户可以选择点击显示在步骤3369中的一个或更多个url链接。这可以使得对广告者进行货币收费(例如,每点击支付模式)。
在一些实施方式中,在步骤3372中对广告客户的url的点击使得用户在随后对具体SIM/游戏可见性事件数据流的观察期间获得对特定可变的对象的访问。如果在判决步骤3375中确定用户的要获得访问的可变对象是“免费礼物”,则处理流程行进至步骤3381。
在步骤3381中,将与用户的已经通过点击步骤3372来获得访问的特定可变对象对应的数据经由图33A的处理33-1来发送至可见性事件服务器3305。在一些实施方式中,该数据包括用于构造特定可变对象的参数或识别已经预先存储在服务器单元3305上的可变对象的数据、或表示可变的对象的实际数据、或所有这三种类型信息的组合。
如果在判决步骤3375中确定与在步骤3369中显示并且在步骤3372中点击的url链接对应的对象不是免费礼物而是可支付项,则处理流程行进至步骤3378,其中针对该“高速缓存仓库”可变对象的购买对用户收费。
具有使用结合到游戏引擎模块的解码器-服务器和解码器-客户端模块来传递可 见性事件数据流的单独服务器和客户端组件的实施方式
图34是示出了可见性事件编解码器的一种实施方式的示例性流程图。在步骤3410中,由编码器步骤3410来处理表示几何、纹理、材料、光照、动画和包括声音的其它数据的常规游戏数据库。
在一种实施方式中,编码处理运行离线预计算并且生成可见性事件数据。在一种实施方式中,在图34中标记为“编码器单元”的单独计算设备上执行编码处理。将可见性事件分组存储在数据仓库3415中,可以使用如在共同待决的PCT专利申请第PCT/US2011/042309中描述的标记轮廓周线的中间表示来表示上述可见性事件分组。在一种实施方式中,将数据仓库3415存储在与标记为“服务器单元”的可见性事件解码器/服务器单元的相同物理设备上。该设备将可见性事件数据分组提供给标记为“客户端单元”。附加的实施方式包括位于多个物理地分布的服务器单元上的数据仓库3415。
在一些实施方式中,在运行时处理标记为3420的服务器处理读取存储在数据仓库3415中的可见性事件分组。该读取采用采用可见性事件分组的基于导航的预取,该可见性事件分组的基于导航的预取基于规定(例如,预定)的相机运动或基于使用如鼠标、操纵杆或游戏控制由客户端/用户输入来控制的相机运动。
基于导航的预取采用如在共同待决的PCT专利申请第PCT/US2011/04239号中指定的方法以及在本申请中指定的方法。
在示例性实施方式中,取决于可见性事件客户端处理(标记为3430)的运行时状态,根据随着在U.S.6,028,608(其全部内容通过引用合并到 本申请中)中描述的露出时间和在共同待决的PCT专利申请第PCT/US2011/042309中描述的周线而变化层次细节的方法,可见性事件客户端处理可以从仓库3415中以不同的几何细节层次来读取可见性事件数据。
此外,取决于客户端单元的可见性事件解码器与服务器单元的可见性事件解码器之间的连接延迟,服务器单元的可见性事件解码器实际上可以执行分组的全部或部分对数解压缩(即,通过根据如在共同待决的专利申请第PCT/US2011/042309号中描述的标记轮廓周线来生成PVS数据增量来进行)。这导致了具有至服务器客户端单元的较快的到达时间的较小分组。
将可见性事件解码器-客户端处理模块标记为3430。在示例性实施方式中,在图34中标记为“客户端单元”的客户端单元上实施解码器-客户端处理模块。该处理模块从可见性事件解码器-服务器处理通过标记为3425的双向数据流接收可见性事件数据流。该双向数据流包括建模环境中从客户端发送至服务器单元的用户的当前视点位置以支持可见性事件数据的基于导航的预取(3415)。在替代实施方式中,可见性事件数据流3425是来自服务器单元的双向数据流,其将由脚本化的相机运动驱动的流交互媒体传送至客户端单元。
在一些实施方式中,将可见性事件解码器-客户端实施为输出存储在仓库3440中的高速缓存可见性事件数据的软件。该数据可以是压缩的可见性事件分组和或解压缩的PVS增量或直接PVS/可见性图数据。在另外的实施方式中,将可见性事件解码器-客户端实施为硬件或硬件/软件组合。
在一些实施方式中,图34示出了将解码器-客户端软件处理结合到用于图形、导航及碰撞检测、组网、物理的现有游戏引擎组件和其它现有的游戏引擎组件。在实施方式中,将游戏引擎组件实施为硬件、软件或硬软与软件的组合。
关于现有的游戏引擎,图形硬件的接口是通过如directx或OpenGL等标准API来与图形驱动器连接。在一些实施方式中,图形硬件是图形处理器如NVIDIA的GeForce模型。
图35A是示出了将规定的可见性事件内容传递至多个客户端单元的可见性事件内容服务器和通过同时将唯一广告、高速缓存仓库或电报内容传递至每一个客户端单元的单独的可见性事件广告服务器的示例性实施 方式。
图35A是示出了可见性事件内容服务器和单独的可见性广告或高速缓存仓库服务器的示例性框图/流程图。将可见性事件内容服务器标记为3505。
数据仓库3518存储了表示建模环境中大多数对象的可见性事件数据。这对应于使用基于导航的预取传递至客户端单元的非可变可见性事件分组。
在图35A的示例性实施方式中,通过标记为3520的可见性事件解码器-服务器处理将存储在数据仓库3518中的可见性事件内容数据预取至三个客户端单元。在本实施方式中,由规定的相机运动路径来驱动预取并且将可见性事件数据流广播至这三个客户端单元。
因此,图35A的示例性实施方式中,可见性事件服务器传递SIM内容(例如,通过处理3520预取的SIM程序A),上述SIM内容具有有效的交互性并且被同时广播至这三个客户端单元。
将单独的可见性事件广告服务器/高速缓存仓库服务器标记为3510。在一些实施方式中,广告服务器还可以传递基于可见性事件的电报对象如文本消息。
可见性事件广告服务器的数据仓库3522存储可变的可见性事件数据。在图35的示例性实施方式中,标记为3510的可见性事件广告服务器将表示广告对象的唯一可变可见性事件分组流处理至这三个客户端单元中的每一个客户端单元。在该示例性实施方式中,每个客户端单元接收相同的基于可见性事件的SIM程序,而且每个客户端单元还接收作为可变可见性事件分组无缝地结合至SIM内容中的唯一广告对象。用于确定预取至各个客户端用户的特定广告对象的准则可以包括客户端用户年龄、性别、优先广告点击以及用于驱动目标广告的其它人口统计学准则。通过广告服务器解码器-服务器处理3536将传递至标记为3531的可见性事件客户端[1]的广告可见性事件分组流处理至解码器-客户端处理3535。
将解码器处理3538示出为通过双向通信连接连接至解码器-客户端处理3535。在一些实施方式中,仅将基于可见性事件的唯一广告对象通过该连接传递。在一些实施方式中,使用客户端单元3531与服务器处理3538之间的网络连接来传递表示客户端用户已经与可点击的广告对象或高速缓存仓库对象交互的信息。在该示例中,将从客户端传输至服务器的信息 用解码器-客户端和解码器-服务器之间的双箭头通信来表示。
在一些实施方式中,基于描述特定客户端用户的已知人口统计学信息来选择唯一地传递至可见性事件客户端[1]的广告对象。在一些实施方式中,针对至特定客户端用户的传递而选择的广告对象是基于对先前发送至客户端用户的其它广告对象的选择点击来确定的。
为了在唯一可变广告可见性事件分组要对客户端用户变得可见以前将它们传递到建模环境中,广告解码器-服务器处理已经具有当前相机/视点位置的知识。在图35A的示例性实施方式中,将该信息从可见性事件内容解码器-服务器(处理3520)通过用从内容服务器到广告解码器服务器的相应的点画连接线表示的通信连接传递至可见性事件广告解码器-服务器处理3538、3539和3540。在一些实施方式中,将描述相机/视点的位置的信息通过直接连接直接从解码器客户端单元传递至对应的广告解码器-服务器。
在图35A的示例性实施方式中,虽然所有这三个可见性客户端都从服务器3505中接收基于精确的相同可见性事件的SIM内容,但是每个在SIM程序期间从可见性事件广告服务器3510接收唯一的广告对象集合。将由解码器-客户端3535接收的广告对象通过解码器-服务器处理3538来发送。将由解码器-客户端3536接收的广告对象通过解码器-服务器处理3539来发送。将由解码器-客户端3537接收的广告对象通过解码器-服务器处理3540来发送。在一些实施方式中,基于单个可见性事件的广告服务器可以将唯一广告高速缓存仓库或电报内容传递至接收相同的广播可见性事件内容的若干客户端单元。
图35B是示出了将规定的可见性事件内容传递至多个客户端单元的集合并且使得上述客户端单元之一能够选择完全交互性可见性事件流的可见性内容服务器并且还示出了将唯一广告、高速缓存仓库或电报内容同时传递至每个客户端单元的单独的可见性广告服务器的示例性实施方式。
图35B是示出了在图35A中表示的相同可见性事件内容服务器并且还示出了表示在图35A中的相同的单独可见性事件广告或高速缓存仓库服务器的示例性框图/流程图。在图35B中,将可见性事件内容服务器标记为3545。它与图35A中的服务器相同,但是处于不同的操作状态。
数据仓库3558存储表示建模环境中大多数对象的可见性事件数据。这与使用基于导航的预取传递至客户端单元的非可变可见性事件分组对 应。
在图35B的示例性实施方式中,将存储在数据仓库3558中的可见性事件内容数据预取至可见性事件客户端[2](标记为3572并且与图35A中标记为3532的可见性事件客户端[2]相同)并且同时预取至可见性事件客户端[3](标记为3573并且与在图35A中标记为3533的可见性事件客户端[3]相同)。在图35B的示例性实施方式中,同时广播至可见性事件客户端[2]可见性事件客户端[3]的可见性事件数据流是由规定的相机运动路径驱动并且由标记为3560的可见性事件解码器-服务器处理传递的可见性事件数据流。
在图35B的示例性实施方式中,先前(在图35A中)与可见性事件客户端[2]和可见性事件客户端[3]接收相同的规定的可见性事件流的可见性事件客户端[1](标记为3571并且与图35A中标记为3531的客户端单元相同,但是处于不同的操作状态)现在不从标记为3561的新服务器处理接收唯一可见性事件内容流。
现在正由如在图35B中示出的可见性事件客户端[1]接收的可见性事件流是完全交互性可见性事件流,其中基于导航的预取由控制器输入来驱动,该控制器输入由可见性事件客户端[1]的客户端用户来提供,其发送至标记为3561的可见性事件解码器-处理器U[1]。
标记为3550(并且与图35A中标记为3510的可见性事件高速缓存仓库/广告服务器相同,但是处于不同的操作状态)的可见性事件高速缓存仓库/广告服务器继续将包括广告(或高速缓存仓库或电报信息)的唯一可变可见性事件数据传递至每个客户端单元。
在图35B中,通过图12B中标记为3578的可见性事件解码器-服务器处理U[1]来发送传递至可见性事件客户端[1]的唯一可见性事件广告数据流。对于任何给定的客户端单元,使用相同的相机/视点运动来预取来自可见性事件内容服务器的可见性数据流和来自可见性广告服务器的可见性事件数据流两者。在图35B中,对于可见性客户端[1]的相机/视点已经从由规定的运动路径驱动改变到由控制相机/视点运动的交互性客户端用户输入来驱动。从而,在图35B中,将唯一内容传递至可见性事件客户端[1]的可见性事件广告服务器处理(处理解码器-服务器处理U[1])接收由对于可见性事件客户端[1]的客户端用户生成的控制器输入信息。在一些实施方式中,该信息由广告服务器-解码器处理(例如,图35B的3561)从对应的内容服务器-解码器处理(例如,图35B的3578),如由这两个 处理之间的单向虚线连接器所示。在其它实施方式中,将导航的输入信息从客户端单元直接发送至可见性事件广告服务器,例如,使用解码器-客户端处理3575与解码器-服务器处理3578之间的双向通信链接。
因此,可见性事件客户端[1]的状态从接收广播SIM流(图35A中)改变到接收唯一交互性可见性事件流(在图35B中)。同时,基于对应的可见性事件的广告流还通过接收交互性相机/视点位置无缝地过渡到新的交互性可见性事件流,交互性相机/视点运动驱动新的交互性可见性事件流替代先前所传递的SIM流的规定的相机/视点运动数据。
在一些实施方式中,如果客户端用户向内容服务器发送以下指示:客户端用户选择从接收广播非唯一SIM可见性事件流(由规定的相机运动来驱动)过渡到完全交互性可见性事件流(由客户端用户导航输入),则可见性事件内容服务器记录该指示并且使得对客户端用户做出过渡的结果进行货币收费。
因为内容服务器必须给调配附加的连接带宽和计算资源(即,唯一内容可见性事件解码器-服务器处理)供正在接收唯一可见性事件流的每个解码器-客户端处理使用,可以使用针对唯一交互性可见性事件内容流做出的货币收费来支付这些另外资源。在这样的实施方式中,客户端用户为增强的交互性的附加特征付费。
图35C是示出了图35B所示的可见性事件内容服务器、图35B所示的单独的可见性事件高速缓存仓库/广告服务器和图35B所示的可见性事件解码器-客户端处理之二。
图35C示出的可见性事件内容服务器和单独的可见性事件高速缓存仓库/广告服务器与图35B的相同。图35C还包括图35B所示的可见性事件客户端单元之二,但是处于清楚而不包括可见性事件客户端[2]。
图35C示出了对可见性事件客户端[1](标记为3571)的用户收取从在示例性实施方式中执行在标记为3545的可见性事件内容服务器上的可见性事件解码器-服务器处理U[1]接收唯一交互性可见性事件内容流的附加或增加的费用的方法。将针对该附加交互性对用户收费的步骤标记为2482。如图24A所描述的(步骤2430),该收费是货币收费或应用于请求预取是由客户端用户提供的导航输入驱动的唯一可见性事件数据流的特定客户端-用户的其它评估。按照所述,在一些实施方式中,相比当接收预取是由规定的相机/视点运动路径驱动的广播可见性事件分组流时的情 况,唯一可见性事件分组流允许建模环境的更加不太受限的导航。在一些实施方式中,由接收唯一可见性事件流而引起的增加收费反映了唯一流所允许的附加导航自由度的价值。
图35C还示出了向用户收取传递高速缓存仓库对象的附加费用的方法,可以在随后在广播可见性事件流(例如,由如在图35C的示例性实施方式中解码器-服务器处理所传递的以及解码器-客户端处理3577所接收的规定相机/视点驱动的SIM内容A)期间或唯一可见性事件内容流(由如在图35C的示例性实施方式中标记为3561的解码器-服务器处理U[1]所传递的并且解码器-客户端处理3575所接收的客户端用户控制的相机/视点运动控制来驱动)期间使用上述高速缓存仓库对象。将针对高速缓存仓库对象的传递收费附加费用的步骤标记为3582并且可以在被动SIM或完全交互性唯一可见性事件数据流的情况下实施该步骤。
可见性事件数据的基于导航的预取方法
如在共同待决的PCT专利申请第PCT/US2011/042309号以及在本申请中另外指定的将可见性数据从服务器单元流处理至客户端单元的方法采用基于导航的预取和集成的高速缓存以防止可见性事件分组的延迟到达。
在共同待决的PCT专利申请第PCT/US2011/042309号中指定了自适应地选择用于在预测的延迟分组到达和/或高视点速度的时间段期间传递的较低细节层次分组(较小大小分组)的方法。这些方法结合由建模环境中规定的相机运动或相机/视点移动的客户端/用户交互控制来驱动的基于导航的预取来工作。
实施方式包括用于基于建模环境中的视点导航来预取可见性事件分组的特定技术。
如在共同待决的PCT专利申请第PCT/US2011/042309号中所描述的,可见性事件数据的流处理的带宽需求是可视化的时空可见性连贯性的函数。通过建模环境的空间可见性连贯性(例如,每单位距离的可见性变化的速率的倒数)以及视点的速度来确定时空可见性连贯性。带宽需求还与几何和纹理信息在所发送的可见性事件分组中进行表示的细节层次有关。如在PCT专利申请第PCT/US2011/042309号的方法中指定的,可以动态地选择所选择用于传输的可见性事件分组的细节层次来防止如在共同待决的PCT专利申请第PCT/US2011/042309号中指定的延迟到达。
在一些实施方式中,预取是通过在客户端单元实际需要数据以前就将数据预先发送至客户端单元来隐藏延迟或提高命中率的数据传递的一般方法。在可见性事件数据流处理的情况下,预取固有地减小了延迟分组到达的概率,否则其会在流处理的视觉化期间导致显著的可见性错误,
一般地,因为相比实际所使用的数据不可避免地有更多的数据传递至客户端单元,所以不论应用如何,预取实际上增加了流处理的数据量。
由预取实施进行流处理的附加数据的量(即,预取实施的带宽需求)部分地通过预取算法预测未来数据访问的精度来确定。未来数据访问的精度(即,命中率)是在给定正在访问的当前数据的知识的情况下对未来数据访问的固有的可预测性的函数。
下面的示例性等式示出了操作的基本原理并且提供了用于对由基于导航的预取来驱动的可见性事件流处理的方法的一种实施方式的带宽需求进行估计的工具。在另外的实施方式中,其它理论性模型和等式支配操作和带宽需求估计的基本远离。
在一些实施方式中,可见性事件数据的基于导航的预取的带宽需求是由在等式1中指定的一般参数来确定的。
等式1:
带宽需求=B=v*GV
其中
v=视点速度
GV=可见性梯度(每单位距离的可见性变化)
视点速度和可见性梯度的乘积的倒数反映了随时间的可见性的连贯性并且称为时间可见性连贯性,如等式2所示。
等式2:
时间可见性连贯性=VTC=1/(v*GV)
时间可见性连贯性(Temporal Visibility Coherence)反映了在可视化期间的图形元素的平均可见寿命并且可以用时间单位来表达。
带宽需求(Bandwidth Requirement)还与正在传递的可见性事件数据的细节层次成比例,如等式3所示。
等式3:
B=Dp/VTC
其中
DP=可见性事件分组数据的细节层次
如在PCT专利申请第PCT/US2011/042309号的图42A和图42B以及图48和图50的方法中所描述的,可以在低的时间可见性连贯性期间自适应地降低细节层次以减小带宽需求并且防止延迟分组到达同时维持感知地无损的可见性事件数据流,其中用户的视觉系统不能容易地感知到低的细节层次替换。结合本申请的图23来讨论人类视觉系统对具有短露出时间的面的降低了的性能。另外地,结合PCT专利申请第PCT/US2011/042309号来讨论人类视觉系统对迅速移动的目标的降低了的性能。在低的时间可见性连贯性的时间段期间碰到视觉目标的短的露出时间和迅速的图形空间速度两者。
针对任何集成的预取高速缓存方案,所发送的数据量一般大于要访问的量。平均高速缓存大小受缩放所发送的数据量与以给定高速缓存命中率访问的数据量的比率的影响。该比率强烈地受到数据访问的可预测性的影响,对于数据访问的可预测性,基于导航的预取是由导航的可预测性来确定的。从而,高度可预测的导航会减小带宽需求,如等式4所示。
等式4:
B=Dp/(VTC*PN)
其中
B=带宽需求
DP=可见性事件分组数据的细节层次
VTC=时间可见性连贯性
PN=导航的可预测性
可以通过对导航施加限制来增加导航的可预测性,例如,将导航限制到建模环境中预先限定的或在导航期间施加的路径。
注意,导航的可预测性还固有地受作为游戏或SIM的基础导航模型的部分的最大速度和加速度的影响。从而,PN和VTC不是严格地独立,尽管像导航限制的因子可以影响PN而不直接影响VTC
在下一章节,公开了通过基于导航的预取来传递可见性事件分组的特 定方法。这些方法通过使用反映与分组对应的视单元会是下一个被观察者穿透的视单元的概率的分组优先级或分组流处理速度通过预取可见性事件数据来增加高速缓存命中率并且最小化了带宽需求。
图36A是示出了基于最大可能移动(MPM)来确定视单元要被观察者穿透的概率的方法的示例性流程图。
图36A是示出了调节可见性事件分组的数据流处理的速率的方法示例性流程图,上述数据流处理的速率反映了与分组对应的视单元会是被观察者穿透的下一个视单元的概率。
图36A:使用最大可能移动来确定视单元要被观察者穿透的概率的方法
在一些实施方式中,通过视点的沿着三维空间中的每根轴的速度和加速度来确定三维空间中的视点的运动。
在一些实施方式中,在游戏和其它漫游类型应用的运动模型中采用下面的等式:
(5)X=X0+VX*dT//X位置
(6)VX=VX0+AX*dT//VX=X速度
(7)AX=AX0+JX*dT//AX=X加速度
(8)Y=Y0+VY*dT//Y位置
(9)VY=VY0+AY*dT//VY=Y速度
(10)AY=AY0+JY*dT//AY=Y加速度
(11)Z=Z0+VZ*dT//Z位置
(12)VZ=VZ0+AZ*dT//VZ=Z速度
(13)AZ=AZ0+JZ*dT//AZ=Z加速度
其中,JN是沿着方向N的加速度的“加速度”或一阶导数。
在大多数游戏应用中,速度、加速度以及甚至加加速度限于限制视点 的值的特定范围。
值dT是在计算中使用的时间戳。可见性事件服务器与客户端单元之间的查验(ping)时间(即,来回旅程时间)有效地表示可以实际地用于根据当前值估计导航参数的未来值的时间戳的最小值。这是因为如果服务器单元正在使用从客户端单元接收的“当前”值来确定导航参数的未来值,则当前值是旧的至少dT时间单位,其中dT是服务器与客户端之间的查验时间。在替代实施方式中,如果由客户端确定了导航参数并且发送至服务器,则服务器单元所使用的结果仍然是比客户端的实际值大的随后的至少dT值。
因此,客户端与服务器之间的查验时间或延迟产生了位置、速度以及加速度的不确定性,其降低了导航预测算法的准确性。
在一些实施方式中,给定位置、速度和加速度的当前值,假设速度和/或加速度保持恒定,可以计算位置的未来值。这是在多玩家游戏中用于根据先前已知的位置来预测玩家的未来位置的航位推测法导航预测的基础。在这样的应用中,使用预测来减小穿过网络传输实际玩家状态的频率,从而减小了网络流量。在出版物“Simplified AerialNavigation by Dead Reckoning,McMullen,J.Charles Griffin&Co.1933”中描述了通过航位推测法来进行简单的导航预测的基本方法,通过引用将该出版物引用到本文中。
在涉及基于导航的预测的本实施方式中,不单独将导航预测用作从客户端单元接收位置、速度和加速度数据的替换方案(其通常消耗少量的带宽),而是主要用于在给定导航参数的当前值的情况下预测未来穿透视单元的概率。增加该预测精度减少所预取的数据量,这是因为高度可预测的导航一般使用较小的高速缓存来确保高的命中率(低的延迟分组到达发生率)。
图36A是示出了用于在给定当前视点位置和速度和加速度向量的当前状态的情况下确定视单元要被穿透的概率的技术的示例性流程图。
在下面的讨论中,在一些实施方式中,假设视单元位于建模环境的可导航空间中。该方法适应视单元等同于导航单元的实施方式。该方法还适应视单元包含在导航单元内以及导航单元包含在视单元内的实施方式。
在一些实施方式中,视单元限于环境的空的可导航空间(即,不包含对象的区)。在其它实施方式中,视单元可以包含建模对象,在该情况下, 包含在视单元中的建模对象被认为是对于对应的视单元的可见实体集合的一部分。在一些实施方式中,导航单元位于环境的可导航空间中。在一些实施方式如碰撞检测采用体素表示的那些实施方式中,导航单元还限于建模环境的空可导航空间或可以包括空或被占据的空间之间的边界。在一些实施方式中,导航单元可以包含建模对象并且导航单元内的碰撞检测算法使用导航单元内建模对象。
从而,在一些实施方式中,视单元和导航单元是等同的。
在步骤3605中,确定包含观察者的当前视点的视单元。使用参考变量“C_视单元”来表示包含当前视点的视单元。
在步骤3610中,识别与“C_视单元”相邻的视单元。在示例性实施方式中,视单元是具有6个面的平行六面体。平行六面体是可以具有立方或矩形形状的盒形结构。其它凸状视单元布置也是可以的。在一些实施方式中,相邻视单元包括与“C_VIEWCELL”共有面的那些视单元。例如,由所有尺寸与“C_VIEWCELL”相同的视单元围绕的“C_VIEWCELL”具有6个相邻的面连接的相邻视单元。如果相邻视单元较小,则该数量还可以大于6。使用包含单元相邻信息的视单元数据结构集来识别相邻的视单元。替代实施方式认为如果视单元共有面或边的一部分则认为它们是相邻的。使用相邻性的该定义,例如,由相同大小的视单元围绕的视单元具有18个相邻的相邻视单元。如果顶点连接相邻视单元共有顶点而认为它们是连接的,则由相同大小的视单元围绕的视单元具有26个相邻的相视单元。
在后续的判决步骤3615中,是否针对相邻的视单元确定已经取得与“C_VIEWCELL”与相邻视单元之间的视单元到视单元的过渡对应的可见性事件分组。如果在判决步骤3615中确定已经取得相邻视单元的可见性事件分组,则处理流程行进至步骤3620,其中处理下一个相邻视单元。
如果在判决步骤3615中确定还没有取得与“C_VIEWCELL”和相邻视单元之间的视单元到视单元过渡对应的可见性事件分组,则处理流程行进至步骤3625。
在步骤3625中,对当前视点穿透“C_VIEWCELL”与相邻视单元之间的边界之前的时间进行估计。该时间段是基于当前视点位置、速度和可能的加速度向量的预测。在一些实施方式中,该预测采用具有不同的计算成本并且导致具有不同精准度的方案的各种方法。
在一种实施方式中,假设随着时间的恒定速度向量,在步骤3625中对所确定的视点穿透时间进行估计。这是简单的航位推测线性方案。替代实施方式采用恒定加速度假设,其中通过二次空间曲线或对该空间曲线的分段线性近似来描述视点运动路径。
其中假设恒定速度或加速度的前述技术导致用于估计穿透时间的单个解决方案。替代实施方式采用更加细化的预测,其不假设在预测时间段期间速度或加速度是恒定的。在一种实施方式中,预测采用在预测时间段期间可能的初始视点位置、速度和加速度的一组值。在该技术中,所使用的该组值遵循反映了预测时间段期间出现初始位置、速度和加速的特定值的概率的分布曲线。该分布反映了由速度和加速度的最大值和最小值所施加的运动限制。另外地,该分布可以通过如用户的基于从许多用户的相同视单元收集的统计数据的预测的意向等因子来加权。
使用在可能的视点运动的蒙特卡洛(Monte Carlo)模拟中的预测期间的可能的导航参数的分布产生了针对“C_VIEWCELL”与相邻视单元之间的预测穿透时间的各种结果。
在步骤3620中,穿透与“C_VIEWCELL”相邻的特定视单元的相对概率是使用与该相邻视单元相交的视点运动曲线的数量和这些空间曲线的穿透的估计时间来确定的。在一些实施方式中,针对还没有取得对应的可见性事件分组的每个相邻视单元来计算该概率并且对这些概率进行比较以确定特定的相邻视单元会是被穿透的下一个视单元的相对概率。在运行时执行视点运动的蒙特卡洛型预测可以引起高的计算成本。本方法包括以下实施方式:离线地确定这些预测并且将结果存储在初始位置、速度和加速度值的给定集合的查找表中。在图36B中给出了这种对于单个视单元/导航单元的查找表的一种实施方式的示例性数据并且结合该图对其进行讨论。该表反映了在给定开始视单元和初始参数值的情况下相邻视单元的穿透概率。因为围绕开始视单元的相邻视单元的步骤限定了在模型的视单元相邻性图形中频繁地重现的图案的有限数量,所以需要预先计算并且预先存储有限数量的表。在后续步骤3625中,使用与要穿透对应的相邻视单元的估计概率成比例的优先级或流处理速率来取得与相邻视单元穿透对应的可见性事件分组。
该方法通过以下处理来适应于与非相邻视单元过渡对应的可见性事件分组的预取:将特定的视单元用作开始点,确定穿透与特定相邻视单元相邻的视单元的相对概率,然后将这些概率相乘。
在一种实施方式中,将每可见性事件分组完全地流处理至客户端,而选择所流处理的分组的顺序使其与分组的相对的穿透概率成比例。在一些实施方式中,对所流处理的分组的优先级或顺序进行加权以使其与各个分组的大小成比例。
以下其它实施方式是可能的:通过选在来自每个分组的子分组或字节并且给每个子流分配与对应视单元的相对穿透概率成比例的流处理速率来对同时对来自多个分组的数据进行流处理。在一些实施方式中,对可见性事件分组的流处理速率进行加权使其与可见性事件分组的大小成比例。例如,确定将要为流处理子分组分配的带宽的等式是等式14:
等式14:
BS=PS(SS+IS)+H
其中
BS=用于流处理子分组S的带宽
PS=子分组s的视单元边界的穿透的概率
SS=子分组S的大小
IS=子分组S的视觉重要性(突出性)
H=子分组头的大小
在步骤3630中,如果请求缓替换来控制高速缓存大小,则针对替换选择与具有小的穿透概率的视单元对应的高速缓存可见性事件分组和对应的PVS数据。
图36B是表示视单元的对于相对视点速度的有限集合的相邻面连接视单元的穿透概率的查找表的示例性子表。
如前面所指出的,要穿透包含实际或预测视点位置的视单元的特定的相邻视单元的概率是若干参数的函数。相邻视单元的穿透概率(POP)是由以下因子确定的,上述因子包括开始视单元中实际或预测视点的当前位置、速度向量、视单元边界处的导航的固有限制、由相同用户或导航开始视单元的多个其它用户做出的导航决定以及许多其它因子。
在一种实施方式中,确定这些因子的聚合效果(在一些实施方式中,包括如从许多客户端用户的许多导航体验中挖掘的数据)并且将其编译到多维度查找表中。
按照图36B来显示这样的基于导航预测的表的示例性子表。在图36B中,将视单元VC[0][223][22]的6个面的相对POP表达为视单元VC[0][223][22]的入口上的实际或预测的相机/视点的速度向量的函数。在一些实施方式中,还包括相机/视点位置的子表。
在一些实施方式中,相比其它导航预测方法,查找表的使用要求较少的CPU资源,但是可能具有更多的存储需求。
自适应地施加导航限制以防止延迟分组到达的方法
等式4的参数PN,导航的预测性反映了以下事实:从任何给定的视单元看去,可到达的相邻视单元的数量可能是有限的。这些导航限制可以由环境中基于例如与墙壁、路缘、护栏等的碰撞来限制导航的对象引起。
图37是示出了在可能的延迟分组到达的时间段期间自适应地施加导航限制的方法的示例性流程图。
在判决步骤3705中,在给定客户端可见性时间高速缓存和当前视点位置、速度和加速度向量以及当前占据的视单元的视单元相邻性图形的布置的情况下确定延迟分组到达是否是可能的。
如果使用航位推测法(等式5-13)或概率航位推测法的概率加权和分组大小加权导航模型(等式14)表示可见性分组将在视点穿过与该可见性事件分组对应的视单元边界之后到达客户端单元处,则预测有延迟分组到达。
如果在判决步骤3705中确定延迟分组到达不可能,则处理流程行进至步骤3710,其中继续标称的预取模式。
如果在判决步骤3705中确定预测到延迟分组到达,则处理流程行进至步骤3715。
在步骤3715中,系统在当前视单元与相邻视单元的一个或更多个边界处施加导航限制。在一种实施方式中,该限制使得一个或更多个视单元边界用作防止视点穿透相邻视单元的碰撞对象。
根据等式1,使得这样的导航限制降低了预取的带宽需求。通过关闭当前视单元与一个或更多个相邻视单元之间的导航,可以将可用传输带宽用于与剩余的非受限视单元边界对应的非受限分组。这提供了减小带宽需求的优点并且易于防止未受限视单元边界的延迟分组到达。
在一些实施方式中,针对限制所选择的视单元边界是以下视单元边 界:对于上述视单元边界的限制产生了延迟分组到达的概率的最大减小,并且还易于引起预期导航的最少中断。
在一些实施方式中,具有下面特点的边界是用于自适应地施加导航限制的良好候选:
1.对应的可见性事件分组具有很大的分组大小并且仅相对少量的分组信息已经被发送。这对应于完成分组传输的恰好时机。
2.对应的可见性事件分组具有完成分组传输的恰好时机但是具有相对低的穿透概率。
在不与建模环境中的自然碰撞面对应的视单元边界处的导航限制施加易于增加导航预测算法的精度,从而增加了基于导航的预取算法的精度,其防止了延迟分组到达。但是,这样的导航限制的施加还可以减小客户端用户的移动的自由度,其降低了建模环境中的交互性和沉浸的水平。以导航限制的低的相对穿透概率选择边界的方法易于减小观察者往往碰到这些表面上任意的导航限制之一的频率。
最小化所施加的导航限制的随意性而使得导航对于客户端用户更加地可预测的可选技术使得所施加的导航限制表示给用户。在一些实施方式中,该表示包括指示导航限制的半透明边界。将该可选步骤示为步骤3720。
可见性事件数据的基于导航的预取方法,其中在给定相比不在路径上单元的较高穿透概率的情况下给位于限定的车行道或其它路径上的视单元/导航单元分配权重。
在一些实施方式中,通过包括可见性事件分组的大小的若干因子来确定可见性事件(VE)分组的基于导航的预取的带宽需求。可见性事件分组的大小是对应的可见性边界处的可见性连贯性以及对应的PVS的精度的函数。如前面所描述的,还以多个细节层次对VE分组或子分组进行编码,其中较低的细节层次具有较小的大小。
除了VE分组的大小以外,还通过导航速度(即,在给定时间段内,视点/相机位置实际上所穿过的可见性事件边界的数量)以及导航的可预测性来确定VE分组的带宽需求。
更加可预测的、受限的导航路径(例如,限制到车行道或人行道的导航)会需要维护较小的可见性事件高速缓存,这是因为在特定时间段内潜在地可到达的VE边界的数量受到这样的导航限制。
如前面所讨论的,图37是示出了通过对导航施加限制的来自适应地减小带宽需求的方法的流程图。
图38是示出了当实际视点位于人行道或其它路径上时通过优先预取与位于上述路径上的视单元/导航单元对应的VE分组来减少VE分组流处理的带宽需求的替代方法的示例性流程图。
现转向图38,在判决步骤3805中确定视点(其还可以包括预测的视点位置)是否位于道路或其它限定路径上或其附近。其中路径是人行道、飞行路线、水路或其它导航路径的示例性实施方式是可能的。
如果在判决步骤3805中确定视点位于限定路径上或其附近,则处理行进至步骤3815。在步骤3815中,为当前视点附件并且位于与当前视点的路径相同的路径上的视单元分配了相比没有位于相同路径上的视单元而言的相对较高的穿透概率。通过增加位于该路径上的视单元的相对穿透概率,图36的预取方法,步骤3625会易于通过使用相比与非路径视单元对应的VE分组而言较高的流处理速率或优先级次序来优先预取路径视单元的VE分组。
通过优先预取与路径视单元对应的VE分组,图38的方法允许当视点导航限于路径时有较高的视点速度,这是因为以任何给定的可用流处理带宽,将更多的可用流处理用于传递与路径视单元对应的VE分组。
在许多常见情况下,用户自然倾向于遵循贯穿建模环境的限定路径。图38的方法会易于允许这样的路径上的较高导航速度。
如果在判决步骤3805中确定视点没有位于限定路径上,则处理行进至步骤3820。在该情况下,因为在向相邻视单元移动的自由度增加,所以导航的可预测性较低。该情形一般要求对较大VE高速缓存的维护,该维护又需要更多的带宽。如果所要求的带宽超过了可用带宽,则由于实际的视点位置已经超出了与所高速缓存的VE分组对应的视单元的范围,所以可能出现延迟分组到达。在该情况下,视点运动的速度可以减小(如结合在上述共同待决的申请的示例性流程图48中示出的方法所描述的)。
在可选步骤3820中,将偏离路径区的视觉指示显示给用户,该视觉指示表示在这些区中可能出现较低的最大视点速度。在一种示例性实施方式中,偏离路径区包含自然地易于减小导航速度的灌木或其对象。对偏离路径区中的这些类型的对象的显示会用信号通知用户在这些区中速度可能受到限制。
施加导航限制以防止延迟分组到达的方法,其中导航限制伴随有隐形损失的A视觉表示。
在图10的示例性流程图中描述的施加导航限制以防止延迟分组到达的方法承认对导航的任何限制,包括由碰撞或对导航进程的其它妨碍所引起的那些限制。
在隐形损失状态与减小的可见性连贯性一致期间限制导航的方法
图39A是示出了施加导航限制以防止延迟分组到达的方法的示例性流程图,其中所施加的导航限制伴随有隐形损失的视觉表示并且导航限制是由该隐形损失引起的。根据一些实施方式,隐形是指车辆或化身的在建模环境中没有检测到的行进能力。施加导航限制的该方法最适合出于娱乐目的的游戏或SIM流处理。但是,还可以在针对真实世界战术视觉化和自治导航的可见性事件流处理期间使用该导航限制施加。
所施加的导航限制不应打断由可见性事件数据流以任意或不可预测的方式传递的体验的连续性或交互性。示例性流程图的方法使得用户能够预测导航速度可能受到限制的位置(例如,通过在图38的步骤3820中对这样的导航限制的显示,其可以在导航限制之前出现)。
在一些实施方式中,示例性流程图图39A的方法,导航限制的可预测性不束缚于先前在环境中显示的现有限制,而是用户的隐形状态或用户操作的车辆或化身束缚于用户在环境中的移动的导航模型。
在一种示例性实施方式中,隐形与环境中的持续的迅速移动相妥协。关于此,由于与车辆或化身相关联的客户端设备所需的带宽增加了,所以持续的迅速移动增加了延迟到达的可能性。
以下其它示例是可能的:当观察者移动到区而使得观察者变得暴露于来自环境中的面的更多反射光时还被折中的隐形。因为暴露给观察者的表面面积的量是PVS的大小的函数,所以露出表面面积的变化率成反比地与模型的局部连贯性相关。
迅速运动和新面的高露出率都可以造成低的时间可见性连贯性,其能够威胁可见性事件分组的延迟到达。通过在这些条件下使用链接至隐形的导航模型来限制导航,可以以对用户而言为合理并且可预测的方式来防止延迟分组到达。
现转向图39A,在判决步骤3905中确定是否预测延迟分组到达。如果不预测延迟分组到达,则处理流程行进至步骤3910。在步骤3910中, 不显示没有折中显示的指示。在示例性实施方式中,该隐形指示可以包括将化身或车辆显示为半透明、透明或难以看见。还可以显示指示隐形水平的指示计。采用折中的隐形的其它显示的指示的实施方式是可能的。
如果在判决步骤3905中确定预测延迟分组到达,则处理流程行进至步骤3913。在步骤3913中,显示隐形状态被折中的指示。如前面所描述的,在各种实施方式中,该指示可以包括半透明度、透明度、隐形计或对用户而言隐形状态被折中的其它表示的变化。
在步骤3915中,限制导航。该限制可以包括例如由敌人或对手的探测所导致的所施加的导航限制。在一种示例性实施方式中,隐形的损失产生通过使玩家参加攻击或其它妨害来迅速地限制导航的探测结果。例如,隐形的损失可以触发阻止向前行进的AI攻击。以下其它实施方式是可能的:自动地降低用户的化身或车辆的速度以防止探测。
在步骤3920中,显示导航限制的起因。在示例性实施方式中,该起因可以包括使得敌人、陷阱、凝滞场链接至隐形模型或其它可能限制。
图39B1和图39B2是分别示出了隐形仪表和时空连贯性仪表的示例性图,时空连贯性仪表给出了客户端用户延迟可见性事件分组到达的概率的指示。
在一些实施方式中,图37、图38、图39A和图43的方法导致在低的时空可见性连贯性时间段期间的客户端用户体验受限的导航。该受限的导航可以采取减小了的速度的形式(例如,图38和图39A)和/或防止移动到建模环境的某些区(例如,图37和图39A)中的实际限制。根据所描述的方法,对用户导航的预定和自适应的限制施加减小了延迟可见性事件分组到达的概率。通过防止延迟分组到达,这些方法防止了错过图形对象的视觉干扰效果,上述图形对象能够在当它们实际应该已经变得露出时的一段时间后突然“弹出”或出现在场景中。
在一些实施方式中,自适应地施加导航限制的这些方法仅当发送低的细节层次分组(例如,图42A和图43)或小的可见性事件分组(例如,图44)没有防止延迟分组到达时才实施。尽管施加导航限制的这些方法可以防止由延迟分组到达引起的视觉干扰,但是用户相机/控制的结果限制可以干扰客户端用户的控制和沉浸感觉。
一种在对导航施加限制期间防护控制和可预测性的感觉的方法是对客户端用户显示这样的限制由或很快会由用户来体验的指示器。
如在步骤3910中所描述的,针对图39A,其中合理地施加了导航限制的一个环境是隐形游戏或训练应用程序,其中建模环境的某些区(例如,当行进时产生噪声或由运动检测器占据的地形)中的高度度导致了隐形的损失。在一些实施方式中,该隐形的损失导致了产生限制导航的结果(例如,攻击)的检测。
在一些实施方式中,将用户化身或车辆的隐形水平设置为延迟分组到达的概率的函数,在一些实施方式中,将延迟分组到达的概率确定为可见性事件数据流的时空可见性连贯性和/或解码器-客户端处理的可见性事件高速缓存的状态的函数。反映延迟分组达到的概率的仪表被显示为隐形状态的仪表或其它指示器。
图39B1是示出了隐形状态的指示器的示例性图。
在其它类型的游戏如刺客信条(Ubisoft有限公司)中,用户的相机/视点在替代的空间-时间中移动,其中用户化身的导航经受维护一种类型的“同步”,其使得该空间-时间迁移继续。
在图39A的方法的一种实施方式中,用户无限制地导航的能力取决于导航模型而被设置成建模环境中的对化身或车辆的新表面的露出率的逆函数。在该导航模型中,低的空间可见性连贯性的区中的高用户速度固有地折中了“同步”或描述在空间-时间区中未受限制地导航的能力的其它参数。在该实施方式中,将基础的导航模型为设置成与可见性事件传递编解码器具有相同的性能特点,即,两者的性能是可视化的时空可见性连贯性函数。
图39B2是示出了“时空连贯性”仪表的示例性图,用户可以使用该仪表通过以防止该“时空连贯性”仪表的低度数(即,防止实际的低的时空可见性连贯性)的方式来手动地控制速度以预测或防止延迟分组到达和/或所施加的导航限制。使用该视觉指示器,用户可以以避免延迟分组到达并且还避免所施加的导航限制的方式来在环境中可预测地导航。
图40A是示出了与第一当前相机/视点位置的所高速缓存的可见性事件分组对应的视单元的建模环境的俯视正投影图。
图40A示出了建模环境中的从标记为VP1的第一当期相机/视点位置看去潜在地可见的对象。VP1是位于处于客户端用户的交互性控制之下的相机/视点运动轨迹上的相机/视点位置。标记为“向量1”的深色箭头是与VP1对应的相机/视点速度向量。
针对标记为VP1的相机/视点位置,在图40A中示出了包括与由解码器-客户端处理当前高速缓存的可见性事件分组对应的视单元-视单元过渡的视单元。可见性事件分组的预取是由当前相机/视点位置并且在一些实施方式中为加速度向量使用导航预测的简单航位推测法或在一些实施方式中使用结合图36A和图36B描述的导航预测方法来确定的。在图40所示的示例性情况下,视单元矩阵中的第二列中除了视单元[1,2,1]和视单元[1,2,2]以外的视单元没有示出,这是因为在该示例中使用的导航预测已经确定未来特定的时间内超过穿透视单元[1,2,3]的概率很小。与未显示的视单元对应的可见性事件分组还没有被解码器-服务器发送,从而没有在与客户端视点位置VP1对应的可见性事件高速缓存中表示。
在给出能够根据针对示例性相机/视点位置VP1高速缓存的可见性事件分组(包括PVS数据增量并且在一些实施方式中包括标记轮廓周线信息)汇编的可见实体集合(PVS)的情况下,仅图形对象4001和4002是潜在可见的。即,对于图40A所示的视单元,仅对象4001和4002是潜在可见的。
图40C是图40A所示的相同对象的立体图。
图40B是示出了与针对第二当前相机/视点位置所高速缓存的可见性事件分组对应的视单元的建模环境的俯视正投影图。
图40B是示出了建模环境的从标记为VP2第二当前相机/视点位置看去潜在地可见的对象。VP2是位于处于客户端用户的交互性控制之下的相机/视点运动轨迹上的相机/视点位置。标记为“向量2”的深色箭头是与VP2对应的相机/视点速度向量。
针对标记为VP2的相机/视点位置,在图40B中示出了包括与由解码器-客户端处理当前所高速缓存的可见性事件分组对应的视单元-视单元过渡的视单元。可见性事件分组的预取由当前相机/视点位置以及速度和在一些实施方式中为加速度向量使用导航预测的简单航位推测法或在一些实施方式中使用结合图36A和图36B描述的导航预测方法来确定。在图40B的所示的示例性情况下,视单元矩阵的第二列中除了视单元[1,2,4]和视单元[1,2,5]以外的视单元没有示出,这是因为在该示例中使用的导航预测确定在未来特定时间内会超过穿透视单元[1,2,6]的概率很低。此外,与针对早先的相机/视点位置VP1所高速缓存的与视单元[1,2,1]和视单元[1,2,2]相关联的可见性事件分组不再出现在针对VP2的高速缓存中。在该示例性情况下,已经使用高速缓存替换方法将先前所高速缓存的可见性事 件分组视单元[1,2,1]和视单元[1,2,2]替换。在一些实施方式中,高速缓存替换方法如LRU(最近最少使用法)或其它替换方法,上述方法在给出当前相机/视点位置的位置和速度向量的情况下确定具有在特定时间内最不可能被穿透的对应视单元过渡的当前所高速缓存的可见性事件分组。在一些实施方式中,该方法采用高速缓存替换的现有技术,如在示例性出版物“Web Caching and its Applications,Nagaraj,S.2004Kluwer AcademicPublishers,ISBN1-420-8050-6”中所描述的,通过引用将该出版物合并到本文中。与VP2对应的所高速缓存的可见性事件分组包括在一些实施方式中用于构造如图40B所示的一个或更多个视单元的PVS的信息。与VP2的可见性事件高速缓存对应的这些PVS包括对象4003和4004。如由图40A中它们的缺失所示出的,对象4003和4004不包括在与VP1的可见性事件高速缓存对应的PVS中。
对象4003是在一些实施方式中与可以由客户端用户购买并且使用的高速缓存仓库对象对应的摩托车。在一些实施方式中,通过使用光标或十字准线点击对象或选择另外地选择该对象来购买示例性摩托车对象4003。在一些实施方式中,然后使得所购买的高速缓存仓库对象在游戏或SIM程序期间可用(例如,摩托车变得可以用于骑行)。
由于摩托车对象4003从与视点位置VP1的可见性事件高速缓存对应的视单元看不见,而变得从与随后的视点位置VP2的可见性事件高速缓存对应的视单元可看见,所以在与VP1对应的时间之后并且在与VP2对应的时间处或之前通过客户端-服务器处理将图形对象4003传递至客户端-服务器处理。传递该高速缓存仓库项的客户端-服务器处理在一些实施方式中相比正在传递非高速缓存仓库项(例如,4001和4002)的对应的解码器-服务器处理是操作在单独的服务器设备上的解码器-服务器处理。如图35A所示,单独的解码器-服务器处理(3538、3539、3540)将唯一高速缓存仓库可变可见性事件分组在将从单独的解码器-服务器处理3520传递的相同可见性事件内容广播到所有的解码器-客户端处理期间传递至对应的解码器-客户端处理。
对象4004是包括在一些实施方式中与能够由客户端用户选择的广告对象对应的可变消息的广告牌。在一些实施方式中,通过使用光标或十字准线来点击该对象或另外选择该对象来选择示例性广告牌对象4004。在一些实施方式中,选择广告对象还使得所购买的供在游戏或SIM程序期间使用的高速缓存仓库对高速缓存仓库对象可用。
由于广告牌对象4004从与视点位置VP1的可见性事件高速缓存对应的视单元看不见而变得从随后的视点位置VP2的可见性事件高速缓存对应的视单元可看见,所以在与VP1对应的时间之后并且在与VP2对应的时间处或之前通过客户端-服务器处理将图形对象4004传递至客户端-解码器处理。传递该广告对象的客户端-服务器处理在一些实施方式中相比正在传递非广告内容对象(例如,4001和4002)的解码器-服务器处理是操作在单独的服务器设备上的解码器-服务器处理。如图35A所示,单独的解码器-服务器处理(3538、3539、3540)将唯一广告可变可见性事件分组在将来自单独的解码器-服务器处理3520的相同的可见性事件内容广播至所有解码器-客户端处理期间传递至对应的解码器-客户端处理。
可变、广告、高速缓存仓库或电报对象作为可见性事件分组的传递能够非常高效地使用传输带宽和渲染资源,这是因为在一些实施方式中这些可变对象仅在他们要变得对特定的客户端用户可见紧之前被传递到特定解码器-客户端单元。这相比游戏中广告传递的现有方法是更加有效,在现有方法中,不针对各个客户端单元定制化或目标各个客户端用户的广告对象被预先贯穿建模环境来分布并且在没有由可见性事件流处理维护的高精度PVS的益处的情况下被渲染。
图40D是图40B所示的相同对象的立体图。
图40E是图40D所示的相同的立体图,图40E包括表示降低了的可导航性的区的阴影线地面区。
如结合图37、图38、图39A和图38所描述的,在一些实施方式中,在不位于特定导航路径(也称作优选导航路径)上的某些视单元/导航单元中导航的最大速度受到限制。参见图38的步骤3810。
在图40E中,将建模环境的可导航空间的减小最大导航速度的区示为标记为4005的阴影线区。
在一些实施方式中,这样的区可以对应于地面区,地面区在一些实施方式中包括会符合逻辑地减小最大导航速度的灌木、泥或其它建模妨碍。在图38所示的处理的步骤3820中描述了这些建模妨碍的显示。
如在图40E所示的,高速缓存可见性事件数据的视单元的数量在视单元的不包括标记为4005的阴影线妨碍区的列中是较大的。例如,高速缓存视单元[1,1,7]的可见性事件数据,而没有高速缓存视单元[1,2,6]的可见性事件数据即使视单元[1,2,6]相比视单元[1,1,7]距VP2较近。该示例性 高速缓存状态在一些实施方式中是通过图38的步骤3815中示出的处理来实现的,其中,在执行导航预测算法期间,如果视单元位于优选路径上,则给视单元预测穿透分配较高的概率。在图40E的示例中,不包括妨碍区的那些视单元包括在优选路径中。
图40F是图40E所示的相同建模环境的相同立体图,但是没有图40E所示的妨碍可导航性的区。
如在图40E所示的示例性方式中示出的并且根据图38的方法;如在图40E的显示视单元中所反映的当前视点VP2的可见性事件高速缓存的状态示出了:相比受限导航区,在未受限的导航区中有更多个高速缓存的视单元。(参见步骤3815)
图40F示出了其中没有对导航的相对妨碍或阻碍的高速缓存状态。在该示例中,用于确定每个视单元的穿透概率的固有的相对概率权重是相同的,并且任一单元的穿透概率仅由当前视点位置和速度向量来确定。
相比针对图40E示出的首先导航示例,与列视单元[1,2,N]中的视单元对应的可见性事件分组的数量增加,这反映了在该列中缺乏导航阻碍。
相反地,与列视单元[1,1,N]中的视单元对应的可见性事件分组的数量减少,这反映了添加至列视单元[1,2,N]的附加分组。清楚地,导航阻碍的移除以及列视单元[1,2,N]的穿透概率的权重的伴随的减小能够增加当在列视单元[1,1,N]中导航时的延迟分组到达概率。当然,可以通过在如结合图30描述的这些条件下调节细节层次的先前描述的方法来防止预测的延迟分组到达(和/或缓和实际的延迟分组到达)。
在一些实施方式中,在预测的延迟分组到达的情况下可以在运行时应用将较低的权重分配给视单元边界的相对穿透概率;如在图42A和图43的示例性流程图中的步骤1515中示出的。在一个示例中,运行时的导航的相对限制可以对应于在从图40F移动回图40E的图序列中示出的高速缓存状态的变化,其示出了:优选路径列视单元[1,1,N]中的导航是通过对列视单元[1,2,N]施加导航限制来增强的。从而,在列视单元[1,1,N]中减小了延迟分组到达的机会和/或增加了该优选路径区中的可允许的最大速度。
图41示出了以下数据结构:使用在PCT专利申请第PCT/US2011/042309号中指定的和在该申请的图31中描述的以及在本申请的图41中所示出的DeltaGplussubmesh示例性数据结构来存储可见 性事件子分组。在该示例性实施方式中,DeltaGplussubmesh数据结构引用在对应期间变得可见的三角形集合。
在图41中将特定视单元过渡(即,特定的可见性事件)的DeltaGplussubmesh数据结构的数组的索引的二维数组表示为DeltaGplussubmesh_subpackets[M][N](在该示例中M=10并且N=5)。在该二维数组中,第一索引维度是指包括可见性事件分组的10个子分组之一。第二索引维度引用每个子分组的特定版本,其中在该示例性实施方式中将该版本以5个细节层次之一来编码。在图41的子分组数据存储方案中,具有相同M索引的所有子分组表示相同的几何对象。具有相同的N索引的所有子分组表示可见性事件分组的处于细节层次N的版本。
使用多个细节层次处的子分组来防止延迟分组到达的方法。
共同待决的PCT专利申请第PCT/US2011/042309号指定了以下一组方法:以多个细节层次来编码可见性事件分组并且在所威胁到的延迟分组到达的时间段期间发送低细节层次分组。
在该方法中,每个可见性事件分组包括对应视单元过渡的处于特定细节层次的所有数据。对于每个视单元过渡,使用多个可见性事件分组,每个可见性事件分组对应于该视单元过渡的以特定的细节层次编码的完整数据。
图42A是示出了该方法的将每个可见性事件分组分成子分组的变型的示例性流程图,其中每个子分组包括在对应视单元过渡期间变得可见的图形元素(例如,多边形和纹理元素)的特定子集。在本方法中,根据一些实施方式以多个细节层次对子分组进行编码。使用以多个细节层次编码的子分组使得能够在投影的延迟分组到达时间段期间的细节层次与可见性事件分组的预取和按需获取期间的细节层次之间进行较快的自适应切换。
现在转向图42A,在判决步骤4205中确定可见性事件数据的流处理是否采用子分组。如果在判决步骤4205中确定可见性事件分组的流处理不采用子分组,则处理流程行进至步骤4207。在步骤4207中,可见性事件分组的细节层次的自适应调节采用在共同待决的PCT专利申请第PCT/US2011/042309号的图48、图49、图50的方法,其中所选择的用于发送的下一个可见性分组是具有较低细节层次的可见性分组。
如果在判决步骤4205中确定可见性事件数据的流处理采用子分组, 则处理流程行进至步骤4210。
在可见性事件分组的使用子分组的预取流处理方法的一种实施方式中,将每个子分组在下一个子分组处理之前完全流处理至客户端,并且选择子分组流处理的次序以反映要穿透对应可见性事件边界的概率。在该实施方式中,还可以选择子分组的次序以反映总体可见性事件分组的大小,其中对来自较大可见性事件分组的子分组进行加权以使其更加频繁地被选择。
在另一种实施方式中,同时对来自若干子分组的数据进行流处理,其中将特定子分组的流处理速率选择成与要穿透对应的可见性事件边界的概率成比例。在该实施方式中,选择子分组流处理的数据速率使其与对应的可见性事件分组的总体大小成比例(例如,子分组是可见性事件分组的50%)。
在判决步骤4210中确定是否预测延迟到达。如果在判决步骤4210中确定不预测延迟到达,则处理流程行进至步骤4220。
在步骤4220中,以当前选择的细节层次来处理子分组。
如果在判决步骤4210中确定预测延迟分组到达,则处理流程行进至步骤4215。
在步骤4215中,选择所传输的下一个子分组使其具有以下细节层次版本(例如,图41的二维索引数组中的N值),相比当前选择的细节层次,该版本具有较低细节层次。
对子分组的使用时的能够更加迅速地切换至由于减小延迟分组到达的发生的较低细节层次分组。此外,由于在该方法中先前以较高细节层次传输的子分组可以由客户端来使用,所以用于传输给定的可见性事件分组的子分组的完整集合的总体时间减小。这还减小了延迟分组到达的概率。
在步骤4215中,可以针对正在传输的当前子分组或针对要传输的下一个子分组来做出至较低细节层次分组的切换。如果完成处于当前细节层次的当前子分组的传输的时间小于传输处于较低细节层次的全部对应子分组所需的时间,则应该继续处于当前细节层次的当前子分组的传输;并且针对要传输的所调度的下一个子分组做出至较低细节层次子分组的切换。否则,应该放弃当前子分组的传输并且立即开始对应的较低细节层次分组的传输。采用可见性事件子分组和/或另外以与穿透概率成比例的速率同时对来自多个可见事件分组的数据进行流处理的另一个优点是:由于 视点贯穿视单元/导航单元的集合移动,所以视单元边界的穿透概率改变。这些变化通常能够使得先前确定的预取解决方案不太精确。使用较小子分组或较小粒度的其它较精细的分组使得较早的不太精确的预取解决方案能够基于更加当前的导航状态数据来更加迅速地调节。这些调节的较精细的粒度允许对更加准确地反映当前导航参数的可见性事件高速缓存进行动态维护。该更加完全可见性事件高速缓存减小了延迟分组到达的变换并且易于减小维护高速缓存所需的带宽。
通过确定视单元边界的序列和具有用于传输的最小总时间的对应可见性事件分组来完成PVS的方法。
图42B是示出了通过将所有可用的可见性事件流和处理资源用于在最短可能时间内完成当前视单元的PVS来减缓实际的延迟分组到达的方法的示例性流程图。
在共同待决的PCT专利申请第PCT/US2011/042309号和本实施方式中所描述的可见性事件数据预取和高速缓存的方法使用减小延迟分组到达的发生率的预测方法,当构造视单元的完整PVS所需的可见性事件分组到达之前视点进入该视单元时出现延迟分组到达。
如果预测方法导致延迟分组到达,则在完成视单元的PVS所需的所有可见性事件数据到达以前视点就进入了该视单元。这与实际的延迟分组到达的情况对应。在该情况下,将当前视单元的相对穿透概率设置为表示特定穿透的1.0。在该情况下,在一些实施方式中,当前方法通过完全转移至按需获取模式并且将所有可用的可见性事件流带宽用于完成当前视单元PVS来适应于实际的延迟分组到达。如果至少一个相邻视单元(例如,由该视点占据的最后一个视单元)的PVS是完整的,则该按需流处理对应于完成与所占据的最后一个视单元与当前视单元之间的边界对应的可见性事件分组。
但是,在低的时空可见性连贯性的条件下,以下是可能的:所占据的最后一个视单元的PVS也是不完整的。在这些环境下,为了完成当前视单元的PVS,还必须完成所占据的最后一个视单元的PVS。
在一些情况下,可以较快速地完成除了所占据的最后一个视单元以外的相邻视单元的PVS,然后将从将可见性事件分组从该相邻视单元传输至当前视单元。这是可以发生的,这是因为早先将可见性事件分组或子分组数据同时(例如,复用)流处理至多个相邻视单元导致了以下情形:与 相邻和当前视单元PVS完整性组合的可见性事件分组传输完整性的状态能够使得较快速地使用来自相邻视单元而不是来自视点所占据的最后一个视单元的可见性事件分组。
在一种技术中,处理确定哪个相邻单元应该用于产生当前视单元PVS的最迅速的完成。该确定是通过对相邻视单元的PVS的完整性状态和与它们与当前视单元的边界对应的可见性事件分组的未传输部分的大小进行检查来做出的。
在非常低的时空可见性连贯性的条件下,以下是可能的:留下具有不完整的PVS的先前所占据的许多视单元。在该情况下,递归地使用前一技术,从当前视单元向后工作以确定必须传输以形成完成的PVS链的可见性事件分组序列,并且可见性事件分组具有传输的最低总时间,其使得能够最快速地完成当前视单元的PVS。
现转向图42B,在判决步骤4230中确定如果已经将实际的延迟分组到达限定为当前由视点占据的视单元的不完整的PVS。
如果在判决步骤4230中确定实际的延迟分组到达还没有出现,则处理流程行进至步骤4260。在步骤420中,对以与要穿透视单元的概率成比例的速率来对相邻视单元的可见性事件数据进行流处理的先前描述的方法进行保持。
如果在判决步骤4230中确定针对当前所占据的视单元已经出现实际的延迟分组到达,则处理流程行进至步骤4235。
在步骤4235中,将所有可用传输带宽和处理用于完成当前视单元的PVS。中止在未来可能穿透的视单元的可见性事件数据的流处理。
在步骤4240中,对相邻视单元的未传输的可见性事件分组的大小进行确定。
在步骤4245中,确定相邻视单元的PVS的完整性状态。如先前所描述的,在低的时空可见性连贯性的情形中,先前所占据的视单元和其它相邻视单元的PVS也可能是不完整的。
在步骤4250中,将PVS完整性状态和相邻视单元的未传输的可见性事件分组的大小用于对传输可以完成视点当前所占据的视单元的PVS的可见性事件分组的时间进行估计。
在图40C和图40D中示出了该方法的应用说明。例如,在相机/视点 位置从图40C所示的VP1到图40D所示的VP2移动期间,构造视单元[1,2,5]的完整PVS所需的可见性事件分组还没有被解码器-客户端处理完全接受。从而,相机/视点进入到对于当前高速缓存状态的该单元的任何移动可以产生由延迟可见性事件分组到达引起的可见性错误。如果相机/视点在该不完整的高速缓存状态期间突然穿透视单元[1,2,5],则使用图42B,步骤4240的方法、相邻视单元的可见性事件分组的未传输部分(对应于从视单元[1,1,5]至视单元[1,2,5]的过渡的VE分组;以及对应于从视单元[1,2,4]到视单元[1,2,5]的过渡的VE分组)的大小和这些相邻视单元(在该示例中为视单元[1,1,5]和视单元[1,2,4])的PVS的完整性来(在步骤4245中)确定使用哪一个可见性事件分组来完成未完成的PVS(例如,视单元[1,2,5])。在图40C至图40D的示例中,视点运动向量“向量2”连同视单元[1,1,5]位于未阻碍的导航区中(因此,在一些实施方式中,为穿透概率分配较高权重)的事实在一些实施方式中会易于产生相比视单元[1,2,4]的PVS而言更加完整的视单元[1,1,5]的PVS。在该情况下,如果与从视单元[1,1,5]到视单元[1,2,5]的过渡对应的可见性事件分组的未传输部分不太大,则图42B的步骤4250会确定该VE分组应该用于完成不完整的视单元[1,2,5]的PVS。
根据一些实施方式,在相邻视单元的PVS不完整的情况下递归地应用图42B的处理。
在一种替代实施方式中,可见性事件编码包括编码的视单元集合中的一些视单元的完整PVS分组。可以对这些完整PVS集合进行流处理,如果将完整PVS用作完成当前所占据的视单元的PVS的开始集合,则使用有关的可见性事件分组传输完整PVS的时间快于使用部分完整的PVS的现有集合。
图43是示出了在预测的延迟分到达情况下发送降低了层次的详细的增量可见性信息并且使用模糊滤波器或模糊对象来渲染这样的降低了层次的详细信息的服务器处理的框图/流程图。
图43的框图/流程图示出了在另一种实施方式中传递增量可见性信息的客户端-服务器处理的附加细节。在一些实施方式中,这些步骤是客户端和服务器是否实施在由网络连接连接的不同物理设备上,或客户端和服务器处理是否实施在相同的物理设备上。
在图43中,该框图将客户端和服务器功能分离成不同的处理,而不考虑这些处理是否在不同的物理设备上执行。
标记为4302的框包括客户端处理并且标记为4355的框包括服务器处理。
在第一步骤中,客户端处理获得当前视点并且将其存储在数据位置4305中。可以通过连接至包括鼠标、操纵杆、游戏控制器垫或其它输入设备的客户端处理的输入设备来修改给出当前视点位置的数据以修改当前视点位置。在替代实施方式中,可以通过规定的相机路径来确定视点位置。
客户端处理向服务器处理提供对数据位置4305的访问,服务器处理将该数据拷贝到数据位置4310中。该拷贝可以发生在本地存储器或贯穿网络来发生。
在步骤4315中,服务器处理使用当前视点数据来预测视点的未来位置。在一些实施方式中,该预测采用航位推测法和碰撞限制、速度和加速度极限和根据当前视点位置预测未来视点位置的其它方法如通常用于在计算机游戏或其它模拟中确定非玩家战士或人工智能代理的导航的现有技术的寻路方法等。(参见“Tactical Pathfinding Using A*”,Van Der Sterren,William in Game Programming Gems3,Charles River Media2002”,其全部内容通过引用合并到本文中)。
在步骤4320中,使用所预测的未来视点位置来确定预测的视单元过渡,视单元过渡是对视单元边界的穿越。该步骤采用了来自步骤4315的数据和对于该模型的已知视单元布置两者。可以在随后的步骤中通过服务器处理来读取与每个穿过的视单元边界(即,每个视单元过渡)对应的增量可见性数据(也称作可见性事件信息)。
在步骤4325中,对当前视点到达与正在处理的预测视单元过渡对应的视单元边界的最少时间进行确定。该时间是当前视点位置和速度、最大可能的加速度和速度以及局部碰撞和其它导航限制的函数。将该值存储在变量“穿透时间”中。
在步骤4330中,对读取并且传输与正在处理的未来视单元过渡对应的增量可见性信息的最大时间进行确定。该时间是基于对应的增量可见性分组的大小、至客户端的可变传输带宽和可能的其它因子来确定的。将该值存储在变量“传输时间”中。
在后续的判决步骤4335,确定变量“传输时间”是否大于变量“穿透时间”。如果在判决步骤4335中确定变量“穿透时间”大于“传输时间”, 则处理流程行进至步骤4338。
在步骤4338中,向客户端单元发送指令,其指示客户端单元应该使用使得低层次的几何、纹理或阴影细节对观察者不太视觉地明显或令人讨厌的滤波器来渲染低细节层次对象(在后续步骤4340中发送)。在一种实施方式中,使用模糊滤波器。在替代实施方式中,在步骤4338中发送的指令使得客户端渲染单元对在步骤4338中发送的低细节层次对象的前方的模糊对象和/或由在步骤4338中发送的低细节层次对象占据的视口区中的对象进行渲染。以下实施方式是可能的:这些模糊对象包括位于挡风玻璃上的液体或固体(例如,水、油、泥、冰、雾)或位于建模环境中视点与对象之间的护目镜。以下其它实施方式是可能的:客户端单元4302使用滤波器和/或模糊对象自动地渲染降低了细节层次的对象,而不需要接收专门的指令来进行该处理。
在步骤4340中,从外核存储器读取增量可见性数据(例如,增量G+子网格数据)的低细节层次(LOD)版本,并且使得其可用于客户端处理,客户端处理使用该数据来更新与视单元对应的并且存储在标记为4350的数据位置中的可见性图/PVS数据。在实施方式中,该相对低的细节层次增量可见性数据包括具有相对较低的几何细节、较低层次的纹理分辨率或减小了细节的其它方法的数据。例如,规则模型可以包括由超过1百万个网格三角形组成的多边形网格。在一些实施方式中,规则图像的低细节层次版本可以包括网格三角形的仅10%。对于生成处于多个细节层次的模型的现有方法,参见Leubke,David;Reddy,Martinet.al,“Level of Detail for3D Graphics”Morgan Kauffman2003,ISBN:1-55860-838-9,其全部内容通过应用合并到本文中。
如果在判决步骤4335中确定变量“传输时间”不大于变量“穿透时间”,则处理流程行进至步骤4345。
在步骤4345中,从外核存储器中读取增量可见性数据(例如,增量G+子网格数据)的较高细节层次的版本,并且使得其可以用于客户端处理,客户端处理使用该数据来更新与视单元对应的并且存储在标记为4350的数据位置中的可见性图/PVS数据。
步骤4315至4340确保了当当前视点很有可能在更新视单元的PVS所需的增量可见性信息已经由客户端处理接收之前就进入该视单元时才采用增量可见性分组中相对低细节层次的几何和/或纹理信息。
在该情形中使用较低细节层次信息减小了将增量可见性信息读取并且发送至客户端处理所需的时间;从而,减小了视点会在增量地构造视单元的PVS所需的所有增量可见性信息已经被读取/传输之前进入该视单元的可能性。
此外,在该情形下使用该较低细节层次的信息不太会被用户检测到。这是因为所提供的增量可见性信息(例如,增量G+子网格信息)与新近露出的面对应,新近露出的面在该情形下已经露出非常短的时间;并且公知人类视觉系统对于已经露出短暂时间的面具有低的视觉灵敏度。
因此,本方法是以下方法:初始地使用相对低的细节层次的增量可见性信息来更新当前视点很有可能在可以提供对应的较高细节层次以前穿透的视单元的PVS。在实施方式中,随着增量G+子网格面的露出时间的增加,在随后时间处发送相对较高的细节层次的增量可见性信息,该露出时间对应于以下露出时间:用户视觉系统的时变空间灵敏度可以使得用于能够理解较高细节层次的几何和/或纹理信息。在一些实施方式中,发送较高细节层次的可见性信息的时间受到人类感知对象的能力的限制。
相比较高细节层次的信息,低细节层次的图形信息被更快地传递至客户端单元。通过在当图形信息至客户端的延迟到达受到威胁时的过渡时间段期间传递相对低细节层次的信息,本方法充分地防止了图形信息的延迟到达。
因为缺失的图形元素(或它们在随后突然重现)容易地被观察者感知并且是视觉上令人讨厌的,所以可以认为图形信息的延迟到达是基于可见性预取系统的感知地非期望的失败。
通过在这些时间段期间初始地传递低细节层次的图形信息并且后续发送可以用于增加初始图形信息的细节层次的附加图形信息,该方法可以防止图形信息的延迟到达并且当该替换调度匹配或超过针对人类动态视觉灵敏度的视觉灵敏度vs露出时间曲线时仍然能够实现感知上无损的性能恶化。
如果该替换调度近似与针对人类动态视觉灵敏度的视觉灵敏度vs露出时间曲线,则可以由用户来体验感知上优美的性能恶化。在用较高细节层次的图形信息替换较低细节层次的图形信息期间会将该性能恶化体验为分离替换事件。随着替换调度接近针对人类视觉灵敏度的视觉灵敏度vs露出时间曲线,该替换事件会变得对用户而言更加难以感知。在任何 情况下,该替换事件优于可以图形信息的延迟到达引起的图形信息的延迟到达(以及后续的突然出现)。
从而,该方法在可视化期间的过渡地低的时空可见性连贯性的情况下产生了感知上无损或感知上优美的性能恶化。该可视化的过渡地低的时空可见性连贯性可以由模型的其中可见性往往高速变化的区(例如,靠近从室内移动到户外的门的区)中的过渡地高的视点速度或局部地低可见性连贯性导致。该方法对于处理以下情形也是有用的:可用传输带宽是过渡性地减小或服务器性能过渡性地降低。
在一种重要的情形中,高视点速度的情形中,增量G+子网格面的露出时间可以不增加至使得用户能够完全分辨新近露出面的持续时间。这是因为以高视点速度,新近露出的面保持在视口期间的时间可以是短暂的。
图44是示出了在预取模式下发送与父-父视单元过渡对应的并且包括由客户端处理用来生成子PVS数据的标记轮廓周线(或所存储的遮挡边界信息)的可见性事件分组的可见性事件服务器;以及在需求模式下的使用标记轮廓周线信息(或遮挡边界信息)并且传输较小分组来生成较小子PVS或PVS增量分组的相同的可见性事件服务器的示例性框图/流程图。
如在早先在本说明书中并且在PCT专利申请第PCT/US2011/042309号中另外详细地描述的,在一些实施方式中,使用利用本申请的图1至图15中详细描述的楔形构造和可见性图简化来构造的一阶楔形来生成包括当视点从一个视单元移动相邻视单元时变的潜在可见的多边形或多边形分段的PVS增量或可见性事件数据。该PVS增量包括增量G+子网格和增量G-数据,当将上述数据从相应地添加到一个视单元的PVS或将其从该视单元的PVS减去时可以产生另一个视单元的PVS,例如,对于邻接的视单元。
在本申请的图13至图22中所描述的方法描述了通过标记包括在父视单元的PVS中的多边形网格的某些种子三角形和轮廓边来对包含在父视单元中的许多子视单元的PVS增量进行有效的编码的方法示例性实施方式。这些标记的种子三角形用于发起父视单元的PVS的某些子区的运行时宽度优先遍历,该遍历在还在运行时根据标记轮廓周线生成的遮挡边界处终止(图20和图21)。可以使用该遍历来生成与从父视单元到子视单元的过渡对应的PVS增量(增量G-数据),或者直接根据父视单元PVS来生成子视单元的PVS。
因为标记轮廓周线信息(或所存储的遮挡边界信息)具有非常低的存储需求,所以在一些实施方式中,该编码处理减少了PVS数据增量的存储需求。
此外,因为相比子视单元的整个集合的增量的所有PVS数据,标记轮廓周线(或所存储的遮挡边界信息)一般需要更少的传输带宽,该编码通过传输可以用于通过仅发送对应父视单元的PVS数据增量加标记轮廓周线(或所存储的遮挡边界)数据来生成大量子视单元的PVS增量和/或PVS数据的信息,来减小可见性事件流处理的传输带宽需求。
在示例性实施方式中,以下讨论假设父1和父2是仅在视单元边界处相交的两个邻接视单元并且子2视单元包含在视单元2中。
该编码的使用一般导致发送相对大的增量G+子网格数据分组(例如,对于父1到父2的视单元过渡)以及用于在客户端单元上生成大量子视单元(例如,父2的子)的多个PVS增量或PVS的更少量的标记轮廓周线(或所存储的遮挡边界)数据。当传递这些分组(使用基于导航的预取)的解码器-服务器处理操作在标称预取模式下时,以此方式发送所编码的分组是非常困难的。这是因为在预取模式下,如果导航的可预测性相对地低,则与需要维护与当前视点的区中的视单元对应的相对地大的高速缓存PVS数据。使用与大的父视单元之间的视单元过渡对应的可见性事件分组来有效地维护该大的高速缓存(例如,大的父1-大的父2PVS数据增量+父2的子视单元的标记轮廓周线元数据)。
相反地,如果可见性事件信息的传输操作在需求模式下,例如在预测的或实际的延迟分组到达(例如,根据到达没有对应的可见性事件数据已经被客户端接收的视单元处的实际用户视点而导致的)的情况下,则大的父-父视单元分组(加上标记轮廓周线或遮挡边界)能够实际上造成延迟分组到达,这是因为大的分组具有长的传输时间。
在一些实施方式中,在需求模式下,实际上是在服务器单元上执行根据父PVS和标记轮廓周线信息(或所存储的遮挡边界信息)来生成小的子PVS(或PVS增量)分组的解码器处理。这导致了在需求模式下(例如,预测的延迟分组到达的条件)需要较少传输时间的较小分组(相比较大的父-父分组),从而更加有效地防止或最小化延迟分组到达。
现转向图44,将服务器单元标记为“服务器”。该服务器单元传输可见性事件信息(包括PVS增量信息)。在一些实施方式中,该传输基于客 户端用户的输入控制视点运动来与基于导航的预取来驱动。在一些实施方式中,该传输由基于导航的预取来驱动,基于导航的预取由预定的相机/视点运动路径来驱动。在任一情况下,预取可以引起预测或实际的延迟分组到达,例如,由相对于服务器与客户端之间的可用传输带宽的可视化的低的时空可见性连贯性而导致的。
在判决步骤4405中确定是否针对与从视单元父1到邻接的视单元父2的过渡对应的具体可见性事件分组来预测延迟分组到达。
如果在判决步骤4405中确定预测延迟到达,则处理流程行进至步骤4415。
在步骤4415中,使用在一种实施方式中在图18至图22的示例性流程图中示出的解码处理来生成比父1-父2可见性事件分组小的可见性事件分组。该编码可以产生远小于父1-父2VE分组的可见性事件分组,较小的分组在一些实施方式中对应于被预测要由用户视点穿透的子2视单元的PVS。在一些实施方式中,可以通过图18至图22所示出的解码方法根据父2视单元的较大PVS来生成该PVS,该解码方法以对父2PVS的限定子2PVS的连接组件的迅速遍历(例如,采用图21的处理)而结束。该方法利用以下事实:父2视单元的子视单元的PVS是父2的PVS的子集。
在一些实施方式中,所生成的分组是父1视单元与邻接的父2的子2视单元之间的PVS增量。在一些实施方式中,后者分组是通过执行图18至图22所示的包括图21的迅速的暗示遍历处理的处理根据增量G+子网格(父1-父2视单元过渡的可见性事件分组)来生成的。该方法利用以下事实:父1与父2的子2视单元之间视单元过渡的PVS增量是父1与父2视单元之间的视单元过渡的PVS增量的子集。
在步骤4420中,将该较小的分组传输至客户端。相比较大的父1-父2分组,较小的分组需要较少的传输时间,从而相比较大的分组可以更加有效地防止或最小化延迟分组到达。虽然解码步骤4415可以添加至较小分组的传输延迟,但是在需求模式下,传输带宽而不是服务器处理一般是分组传递的瓶颈。此外,如果在编码(如在步骤4425的预取模式下)之前传输分组,则解码步骤在一些实施方式中在处理之前执行在客户端单元上。(在一些实施方式中,可以在受威胁的延迟分组到达期间延缓较大父-父分组的该解码;减少在可以渲染之前所经过的时间,但是增加了帧渲染时间,即,减小了帧速率,这是因为必须渲染整个父PVS而不是较小的 子PVS)。
在图44中,将可见性事件客户端单元标记为“客户端”。在判决步骤4435中确定是否针对父1-父2视单元过渡来预测延迟分组到达。如果在判决步骤4435中确定预测延迟分组到达,则处理流程行进至步骤4435。
在步骤4445中,由客户端单元接收子2PVS(或在一些实施方式中为父1-子2PVS增量)。
在一些实施方式中,在步骤4450中直接使用该小PVS。在替代实施方式中,将小父1-子2PVS增量用于生成子2PVS。
如果在判决步骤4435中确定没有预测延迟分组到达并且已经将包括示例性的父1-父2视单元过渡的可见性事件信息加上标记轮廓周线信息(或遮挡边界信息)传输至客户端单元,则处理流程行进至接收该信息的步骤4455。
在后续步骤4460中,接着使用(由在一些实施方式中为包括图18至图22的方法的方法)随着父1-父2视单元过渡的PVS数据增量传输的标记轮廓周线信息(或在一些实施方式中为所存储的遮挡边界信息)取决于这些子视单元的视点的预测穿透来生成视单元2的子视单元的PVS。
图45A是图44所示的解码器-服务器处理的附加细节的示例性框图/流程图。
在一些实施方式中,图45A所示的处理发生在图45A中标记为“服务器”的服务器单元上。
在判决步骤4505中确定是否针对与从视单元父1到邻接的视单元父2的过渡对应的具体可见性事件分组来预测延迟分组到达。
如果在判决步骤4505中确定预测延迟分组到达,则处理流程行进至步骤4515。
在步骤4515中,选择示例性父1-父2视单元过渡的增量G+子网格数据(PVS增量信息)用于处理。在一些实施方式中,该选择包括从数据仓库读取包括预存储的可见性事件信息的数据,该信息包括增量G+子网格数据和标记轮廓周线信息(和/或,在一些实施方式中为所存储的遮挡边界信息)。将该数据仓库标记为4510。
在后续步骤4520中,使用在步骤4515中读取的可见性事件信息来生成来自标记轮廓周线的遮挡边界段(在一些实施方式中,使用图18和图 19的示例性流程图所示的处理)。在其它实施方式中,将遮挡边界信息直接存储为视单元过渡的可见性事件信息的一部分,并且可以在不需要图18和图19的处理的情况下使用上述遮挡边界信息。在步骤4520中,所使用的标记轮廓周线信息和/或所存储的遮挡边界数据特定于具体的视单元-视单元过渡,在该示例中为视单元父1与子2之间的过渡。
在后续步骤4525中,对表示属于与特定视单元-视单元过渡对应的可见性事件分组的种子三角形(例如,在该情况下属于父1-子2视单元过渡的增量G+子网格)的信息进行选择。该数据是标记为4510的所存储的可见性信息一部分。
在一些实施方式中,在后续步骤4530中使用结果的遮挡边界信息连同标记轮廓周线信息来生成可以以较小的延迟传输至客户端的较小增量G+子网格集合,在步骤4530中对较大的集合(例如,在该示例性情况下为父1-父2视单元过渡的增量G+子网格)进行遍历。在一些实施方式中,步骤4530的遍历采用在图20、图22及有关的图的示例性流程图中示出的快速暗示遍历处理。
在后续步骤中,将所遍历的多边形以及在一些实施方式中在步骤4530中遍历的多边形分段组装成父1-子2视单元过渡的较小增量G+子网格。将该集合标记为TT。
在后续步骤中,将该较小可见性事件分组传输至客户端单元。服务器-解码器处理的处理流程在步骤4540处终止。处理流程从4540经由处理45-1行进至4560(图45B)。
如果在判决步骤4505中确定不预测延迟分组到达,则处理流程行进至步骤4550。在步骤4550中,从数据仓库4510中读取父1-父2视单元过渡的较大的增量G+子网格并且进行传输。在一些实施方式中,在步骤4550中所读取并传输的信息还包括与父2和父2的子视单元之间的一个或更多个视单元过渡对应的标记轮廓周线信息(和/或,在一些实施方式中为所存储的遮挡边界信息)。处理流程从4550经由处理45-2行进至4575(图45B)。
图45B是示出了图44所示的解码器-客户端处理的附加细节的示例性框图/流程图。
在一些实施方式中,图45A所示的处理发生于在图45B中标记为“客户端单元”的客户端单元上。
在判决步骤4555中确定是否针对与从视单元父1到邻接视单元父2的过渡对应的具体可见性事件分组来预测延迟分组到达。
如果在判决步骤4555中确定预测延迟分组到达,则处理流程行进至步骤4560。
在步骤4560中,解码器-客户端处理接收在步骤4540中发送较小可见性事件分组TT(父1-子2视单元过渡的较小增量G+子网格),该处理由服务器来执行。
在步骤4570中,通过将所接收的TT数据添加到先前所高速缓存的父1PVS数据来生成示例性子2视单元的PVS。在一些实施方式中,该添加包括示例性流程图图22的处理,其中将新子网格(父1-子2过渡的增量G+子网格)附加至父1PVS的现有子网格。
这完成了标记为“CHILD2PVS”的子2PVS,其可用于由客户端单元的渲染子处理所进行的渲染。
该解码器-客户端处理在步骤4570处终止。
如果在判决步骤4555中确定没有预测延迟分组,则处理流程行进至步骤4575。
在步骤4575中,解码器-客户端处理接收在由解码器-服务器处理执行的步骤4550中发送的较大的示例性父1-父2增量G+子网格数据连同标记轮廓周线信息(和/或,在一些实施方式中为所存储的遮挡边界信息)。该标记轮廓周线信息或所存储的遮挡边界信息在一些实施方中包括与从父2至父2的一个或更多个子视单元的一个或更多个视单元过渡对应的明显地遮挡的轮廓周线(或所存储的遮挡边界)。
在后续步骤4580中,接着使用(在一些实施方式中由包括图18至图22的方法的方法)随着父1-父2视单元过渡的PVS数据增量传输的标记轮廓周线信息(或在一些实施方式中为所存储的遮挡边界信息)取决于这些子视单元的视点的预测穿透来生成视单元2的子视单元的PVS。
处理流程终止后续步骤4580。
采用可见性事件数据的基于导航的预取的方法,其中预取由客户端单元的实际位置来控制。
图46的示例性流程图示出了可见性事件数据的基于导航的预取方法,其中预取是由真实环境中客户端单元的位置来驱动的,该位置如由 GPS(或其它定位形式)来确定或如由三维地图匹配方法来计算。
在一些实施方式中,基于实际环境的建模环境是根据使用LIDAR或其它测距形式、根据常规的三维建模或获取与手工建模两者的组合。
越来越多地,将使用LIDAR或其它测距技术所获取的三维数据用于生成复杂的密集地被遮挡的实际任务环境如城市剧院的高度详细的3D图形模型。可以使用包括游戏引擎技术的实时图形显示技术来出于分析、任务计划、任务排练的目的而显示这些模型,并且实时地显示真实任务的演化。
遗憾地,这些3D模型一般具有非常大的文件大小。从而,使用现有文件下载方法,会花费非常长的时间来将这些文件从中心命令与控制服务器传输至组网的客户端单元,尤其是在可用传输带宽经常受限的战场环境中。在一些实施方式中使用现有的游戏引擎软件模块(例如,图34)实施的可见性事件编码(图1至图17)、传输(图36至图40)和解码(图18至图22)的方法使得能够将大量3D数据集渐进地、增量地传输至网络客户端单元而不需要很长的下载时间段。
此外,由于这些模型一般表示复杂的密集被遮挡的环境,所以很难使用通常可以用于前向部署的资产的有限图形硬件来以交互性帧速率来渲染它们。可见性事件编码、传输和解码的本方法渐进地并且增量地传递如可见性事件数据等大量的模型,其中不传输并且不渲染大多数被遮挡几何图形(对于当前有关的视单元)。如结合图12A至图13C所描述的以及在PCT专利申请第PCT/US2011/042309中所另外详细描述的,在一些实施方式中,图形透支的该减小使得能够使用在前向部署的客户端单元上可用的廉价图形硬件来以交互性帧速率来对这样的大量3D模型进行渲染。
以此方式,在一些实施方式中执行图1至图7、图36至图40、图18至图22的方法的可见性事件编解码器使得能够用针对战术可视化的目的非常可用的的格式来迅速地传递战术信息。
在由前一段落中列举的示例性图描述的可见性事件编码、传输-控制和解码方法的另一种用途是将表示真实环境的3D数据传递至移动客户端单元,该移动客户端单元在车辆的人类操作者的控制之下导航,或在自治导航算法的控制之下自治地导航。
如果建模环境基于实际的环境,则流处理的可见性事件信息包括基于真实环境中客户端用户的位置与移动流处理至客户端单元的真实环境的 视觉交互性表示。可以使用LIDAR获取、多视点几何方法、根据照片的手动建模以及这些和/或其它方法的组合来根据实际的环境来重新构造建模环境。可以使用如GPS、惯性导航和其它定位方法等形式来确定真实环境中客户端的实际位置。此外,还可以通过解决同步定位与建图(SLAM)问题来确定建模环境中客户端的实际位置,该同步定位与建图问题包括自治导航领域的各种重要方法。(参见Montermerlo,M.,Thrun,S.,FastSLAM,A Scalable Method for theSimultaneous Localization and Mapping Problem in Robotics,Springer Verlag,2007.ISBN-10-3-540-46399-2)。
SLAM问题是自治或机器人导航中的重要问题。自治地导航的机器人车辆经常使用来自外部传感器(例如,LIDAR)的数据来构造周围环境的表示(例如,3D地图)。在一些情况下,例如,当在GPS限定的环境中或确定位置的单独方法不可用的任何环境中操作时,机器人车辆的自治导航算法必须使用根据传感器开发的环境表示来确定机器人在环境内的位置。在这些情况下,将自治导航算法说成是计算SLAM问题的解,这是因为该算法同时构造表示(例如,3D地图)并且使用该构造的表示连同传感器数据来确定机器人在实际环境中的位置。
按照下面所讨论的,如果自治导航算法具有对实际环境的预存储的3D表示的访问,则加速对位置问题的解决,这是因为该算法不必实时地构造整个3D地图。地图匹配是用于确定实际环境中的位置的算法的一般归类,其使用已经预计算到所扫描环境的表示中的并且对自治导航算法可用的预获取的传感器数据。
在一种示例性实施方式中,客户端单元是操作在GPS限定的环境中的自治(即,无人驾驶)车辆或航空器。在该实施方式中,客户端单元的实际位置是通过使用3D地图匹配算法来解决SLAM问题而确定的。地图匹配算法将所存储的环境模型(3D地图或所表示的模型)与在车辆的局部环境中实时获取的数据(例如,LIDAR)进行比较。(参见See Olesk,A.,Wang,J.Geometric and Error Analysis for3D Map Matching,International GlobalNavigation Satellite Systems Society,Symposium2009.Holiday Inn SurfersParadise,Qld,Australia.December1-3,2009,其全部内容通过应用合并到本文中)。地图匹配算法将所存储的表示环境的数据与实时获取的数据进行比较以确定车辆在环境中的位置。因为所存储的地图数据可以与实时获取的数据进行比较,所以地图匹配算法允许对SLAM 问题的特别有效的解。相比由许多其它SLAM算法使用的涉及对实时地构造环境的有用的3D地图(即,3D模型)所需的所有数据进行获取并处理的方法,地图匹配算法固有地更加有效。在一些情况下,可以使用快速的SLAM解来提高或增加具有有限精度(例如,由于造成“精度稀释(dilution of precision)”的因素)的GPS解的精度。
结合图24A的示例性流程图的方法所使用的可见性事件编码(图1-图17)、传输(图36至图40)和解码(图18至图22)的方法提供了将有用的地图数据传递至自治车辆的有效方法,在图24A的示例性流程图的方法中,步骤2420中的“用户位置”是使用地图匹配确定的自治车辆的位置。该有效性部分地是由于使用在共同待决的PCT专利申请第PCT/US2011/042309号中指定并且在本申请中进一步指定的流预取和高速缓存方法所导致,可以通过经常出现在战场环境中的间歇和有限网络(Tactical Edge Characterization Framework”Volume3,Evolution and Application of the Framework.MITRE TechincalReport080310,September2008)来传递可见性事件分组。因为将可见性事件分组解码成PVS数据,所以产生使用数据的附加效率。像渲染算法,地图匹配算法仅需要使用地图的从车辆看去潜在地可见的部分来与实时地获取的测距数据进行比较。由于PVS数据为地图匹配算法提供总体建模环境的精确子集(其通常远大于任何单个PVS),所以地图匹配算法需要处理更少的数据。
现转向图46,将服务器单元标记为4610而将客户端单元标记为4615。在涉及客户端单元与服务器单元之间的双向通信链接的固有循环处理中,处于说明的目的,处理从判决步骤4620处开始。
在示例性实施方式中,客户端单元可以是有人驾驶车辆(包括航空器)。在这样的实施方式中,流处理至客户端单元的可见性事件数据使得能够将所表示的环境的高保真3D表示显示给人类用户。
在其它示例性实施方式中,客户端单元可以是无人驾驶车辆,对于该无人驾驶车辆,导航完全或部分地由包括地图匹配的自治导航算法来控制。
在判决步骤4620中,确定客户端单元的位置/速度是否通过GPS或不需要3D地图匹配解的其它形式来获取的。如果在判决步骤4620中确定客户端单元的位置和/或速度是通过GPS或不需要3D地图匹配解的其它形式来获取的,则处理流程行进至步骤4625。
在步骤4625中,将由GPS或不需要3D地图匹配解确定的实际位置和或速度传输至服务器单元。
在步骤4630中,服务器单元接收并且使用由客户端单元在步骤4625中传输的信息来在服务器单元上驱动存储在标记为4605的数据仓库中的可见性事件数据的基于导航的预取。该基于导航的预取采用在共同待决的PCT专利申请第PCT/US2011/042309号中指出的方法并且还可以采用本说明书的图34、图36A、图36B、图37、图38、图42A和图42B的方法。
步骤4630的基于导航的预取使得能够读取存储在数据仓库4605中的可见性事件数据或PVS数据增量并且将上述数据作为标记为4635的可见性事件数据流发送至客户端单元。
在步骤4635中,使用从服务器单元传输至客户端单元的可见性事件分组来维护与客户端的当前位置附近的视区对应的一个或更多个PVS。
如果客户端单元是有人驾驶的车辆,则可以对该数据进行渲染并且将该数据显示给操作车辆的人。该显示数据可以提供光、热、LIDAR或其它成像受限条件下的环境的3D表示。
如果在判决步骤4620中确定客户端单元的位置和/或速度是由受益于3D环境的预获取的模型或地图的地图匹配或其它SLAM解来确定,则处理流程行进至4655。
在步骤4655中,使用在步骤4640中根据可见性事件数据组装的PVS数据(标记为4645)连同由客户端获取并且存储在数据仓库4650中的LIDAR、多视点几何图形或其它测距数据来使用地图匹配或将表示周围环境的存储数据(数据仓库4645)与通过客户端单元实时地或接近实时地获取的测距数据进行比较的其它方法来确定客户端单元的位置。
在步骤4660中,将通过地图匹配算法确定的客户端位置和/或速度数据发送至服务器单元。
步骤4665采用在步骤4655中确定的位置和/或速度数据来驱动结合步骤4630描述的基于导航的预取。在图46的方法的一种示例性实施方式中,使用LIDAR或其它测距数据来根据通过侦察资产获取的数据开发所存储的可见性事件数据4605。使用多边形将该数据从点云表示转换到边界表示,并且使用在共同待决的PCT专利申请第PCT/US2011/042309号中指出的从区域看的可见性预计算方法来确定并编码可见性事件分组。
该示例性实施方式使得能够在会使用不太可消耗的攻击资产的交战 任务之前立刻部署大量的相对廉价的侦察资产。该侦察资产可以远程地操作或可以采用非地图匹配导航算法,其不太计算地高效并且可以限制侦察车辆的速度。
将侦察资产所获取的数据传输至编码器,该编码器使用在共同待决的PCT专利申请第PCT/US2011/042309号中指出的从区域看的可见性预计算方法来生成存储在数据仓库4605中的可见性事件数据。
在一些实施方式中,使用从区域看的可见性确定的方法来确定4605的可见性事件数据仓库,该从区域看的可见性确定采用如结合图1至图12描述的保守线性化阴影事件表面(CLUES)。在一些实施方式中,将CLUES数据用于生成包括PVS数据增量的可见性事件数据和包用于在客户端单元上运行时生成PVS数据的附加元数据(标记为明显遮挡的轮廓周线)。如在图16和图17的编码处理以及在图18至图22的解码处理中所描述的包括标记轮廓周线数据的方法降低了可见性事件分组传输的带宽需求。该提高了的带宽效率在高带宽连接通常不可用的战场环境中是非常有用的。
该可见性事件数据可以高效地流处理至攻击资产,正当攻击资产在通往任务区的途中时。如前面所描述的,由于仅需要3D地图(PVS)的小子集来与攻击资产区中实时获取的数据进行比较,所以根据流处理的可见性事件数据(在步骤4640中)构造的PVS数据可以加速由攻击资产执行的地图匹配算法。自治导航解决方案的加速能够使得攻击资产以比受人类操作者的控制下的那些可能速度大的速度准确地航向复杂的密集被遮挡的环境。
当来自主服务器的可见性事件流不可访问时访问来自本地单元上的高速缓存数 据的可见性事件流的方法
当以图24A所示的方式来利用可见性事件编解码器时,其中在步骤2420中指出的用户位置是真实环境中客户端单元的实际位置,则该编解码器实现基于客户端的位置来更新的流交互3D虚拟地图。
在该情况下,在一些实施方式中由位于距客户端一定距离处的主服务器来提供可见性事件数据。例如,该主服务器与客户端单元之间的连接采用卫星通信。
图47是示出了即使当与主服务器的通信链接丢失时通过其维护可见性事件数据的处理的示例性流程图。
在判决步骤4710中,确定与主服务器的可见性事件流是否完整。如果在判决步骤4710中确定可见性事件流从主服务器不访问,则处理流程行进至步骤4715。
在步骤4715中,当前客户端访问来自其它客户端的高速缓存的可见性事件数据。位于当前客户端的地理学附近的其它客户端单元很可能具有存储在高速缓存中由当前客户端使用的可见性事件信息。将客户端单元用作辅助服务器的该方法实施了完全连接的网络拓扑结构,该网络拓扑结构提高了与主服务器的通信丢失的情况下的传输的可靠性。
如果在判决步骤4710中确定可从主服务器访问可见性事件分组,则处理流程行进至步骤4720,其中客户端继续从主服务器接收可见性事件分组。
图48是示出了获取实际环境中的3D数据,将该数据传输至可见性事件编码器以及基于实际环境中的攻击资产移动来将编码的可见性事件数据流处理至交战或攻击资产的前向部署的侦察资产车辆的示例性框图/流程图。
图48是示出了图46所示的方法一种示例性实施方式的示例性框图/流程图。
在一些实施方式中,标记为4805至4808的单元表示获取关于实际环境的3D数据的侦察资产或车辆。在一些实施方式中,使用LIDAR、多视点几何图形(例如,Multiple ViewGeometry in Computer Vision Second Edition,Hartley,R.,Zisserman A.CambridgeUniversity Press2003.ISBN0521540518,其全部内容通过引用合并到本文中)或可以获得可以用于构造实际环境的三维表示的数据的其它方法来获取由侦察资产4805至4808获取的3D数据。在一些实施方式中将结果的3D数据存储为点云数据。在一些实施方式中,还将点云数据处理成多边形或多边形网格表示。
相比使用单个侦察资产时的可能情况,使用多个侦察单元使得能够更加迅速地获取3D数据,可以将该3D数据组装成更完整的3D表示(也称为3D重构)。3D表示的完整性取决于从多个相机/传感器位置获取3D数据,使用多个侦察单元有利于该获取。在一些实施方式中,侦察单元包括相对廉价可消耗的资产,其包括远程操作或自治的可以操作在包括建筑物内和其它密集遮挡环境的受限空间中的小型航空器或地面车辆。在图48的示例性框图/流程图中,将作为侦察主体(例如,出于执行交战或攻 击任务的目的)的实际环境标记为4850。
在一些实施方式中,将侦察单元4805至4808所获取的数据发送至在图48中标记为4810的可见性事件编码器处理。在一些实施方式中,从侦察资产流处理至可见性事件编码单元的3D数据是实时或接近实时地处理的,因此侦察车辆的丢失不造成明显的数据丢失。
在一些实施方式中,首先将从侦察资产接收的原始点云数据或多边形数据转换成多边形网格或流形多边形网格数据。可以获得用于将点云数据转换成多边形网格数据的商品软件,例如,来自华盛顿贝尔维尤市的VirtualGrid公司的VRMesh软件应用程序。在一些实施方式中,可见性事件编码器采用图1至图14的的方法(以及在一些实施方式中为在美国临时申请61/382,056中描述的其它可见性事件编码和压缩方法)来创建经由可见性事件服务器流处理至攻击资产的可见性事件分组。
将所得到的可见性事件数据存储在图48的数据仓库4812中。该可见性事件数据在一些实施方式中与存储在图33的数据仓库3305和图25的数据仓库2515中的PVS增量/可见性事件数据相同。
在一些实施方式中,使用标记为4820的命令中心资源的计算资源来实施可见性事件编码器处理4810,可见性事件解码器-服务器处理,上述命令中心资源包括命令和控制单元,其中将来自多个侦察资产和不同类型的侦察资产的数据结合到所侦察的实际环境的统一3D重构中。在一些实施方式中,可见性事件编码器处理4810和可见性事件解码器-服务器处理托管在不同的设备上。
存储在数据仓库中的可见性事件数据由标记为4815的可见性事件解码器-服务器使用基于导航的预取来读取,该基于导航的预取在一些实施方式中由标记为4830的攻击或交战资产的移动来驱动。在一些实施方式中,实际的交战资产是自治的并且采用GPS、3D地图匹配或确定位置的其它方法。将交战资产位置数据从交战资产发送至可见性事件解码器-服务器处理4815中,如由虚连接线4835示出的。如果该位置或其它导航数据是使用地图匹配来确定的,则通信信道4835在一些实施方式中等同于由将图33的处理3360(客户端单元)连接至处理3365(服务器单元)的单向连接线表示的通信信道。如果使用除了地图匹配以外的方法来确定该位置或其它导航数据,则通信信道4835在一些实施方式中等同于由将图33的处理3325(客户端单元)连接至处理3330(服务器单元)的单向连接线表示的通信信道。
在一些实施方式中,将由可见性事件解码器-服务器处理4815接收的位置和其它导航数据用于驱动可见性事件数据4812的从标记为4815的可见性事件解码器-服务器处理到标记为4840的可见性事件解码器-客户端处理的基于导航的预取,其中在交战资产4830上实施处理4840。在图48的示例性框图/流程图中,将该可见性事件数据的传递示为标记为4845的通信信道。
如结合图46的描述所描述的,对于使用对SLAM问题的3D地图匹配解来确定解码器-客户端单元位置的实施方式,因为以消除了处理无关数据(即,不属于对应视单元的PVS)的需要的形式来传递结果的3D地图,所以提供作为可见性事件数据的3D地图的方法考虑到特别高效的解。通过使用3D地图匹配中的PVS数据而获得计算效率使得能够在自治导航期间有较高的速度,其可以使得交战任务更加有效。
图46和图48所示的示例性实施方式不仅使得在自治导航任务期间有较高的速度,而且能够通过允许当交战资产正在途中时在客观目标附近获取的3D地图数据的实时传递来增加这样的任务的分派。此外,在一些实施方式中,将任何附加或更新的侦察数据流处理至解码器-客户端单元4840,上述侦察数据是由侦察资产(4805至4808)获取的并且在交战任务期间由可见性事件编码器(4810)传输并存储。该附加数据可以用于提高所传输的3D地图的精度,从而增强交战资产任务的准确性。
存储在数据仓库4812中的可见性事件数据在一些实施方式中还用于分析、客观目标区的战术可视化以及任务计划。在一些实施方式中,任务计划包括机器人路径计划。在人物的该阶段,选择自治导航交战资产的优选导航路径。在一些实施方式中,传递至解码器-客户端单元的可见性事件数据流是由在该任务计划阶段期间决定的优选的主或辅助导航路径确定的。在一些实施方式中,路径计划取决于侦察阶段期间在目标环境的特定区中所获取的3D数据的量。
在一些实施方式中,出于训练和娱乐的目的,可见性事件数据包括用于控制虚拟相机的相机/视点运动数据。例如,在图24A的示例性SIM实施方式中,将描述规定的相机运动路径的数据从可见性事件解码器-服务器单元发送至可见性事件解码器-客户端单元,其中,该数据在对具有受限交互性的可见性事件内容流进行显示期间驱动虚拟相机。在图48的示例性实施方式中,在一些实施方式中使用用于实现交战资产沿着期望路径的导航的车辆位置/速度控制指令来取代相机运动控制。在这样的实施 方式中,单元4820用作集成的命令和控制系统,该系统支持战术可视化、分析、机器人任务计划和通过由可见性事件分组的基于导航的预取驱动的双向可见性事件流的任务执行。
图49A是示出了两个侦察资产的立体图,上述侦察资产获取实际环境的三维表示并且将该表示作为可见性事件数据发送至编码器进行编码。
标记为4905和4906的对象是在一些实施方式中获取关于实际环境的3D数据的侦查资产。在一些实施方式中,侦察资产4905和4906是小的相对廉价的航空器,使用采用没有地图匹配的SLAM的自治导航解决方案来远程操作或导航该航空器,因此,相比地图匹配的可能情况,其以较低的速度操作。该较低速度使得目标更加容易受到攻击。
在图49A中示出了包括建筑物4901和4902以及目标车辆4950的实际环境。在该示例中,车辆4950是作为侦察资产4905和4906的目标/主体的敌方车辆(以及在图49B中描述的攻击资产4908的目标)。
在图49A的示例中,侦察资产将关于实际环境的3D数据(例如,使用LIDAR、多视点几何图形或其它方法获得)作为可见性事件数据使用结合图48描述的编码器处理4810发送至命令中心单元以用于编码。在一些实施方式中,编码器处理远离侦察区,例如在命令和控制单元中。将数据通过在图49A标记为“至编码器的3D数据”的通信信道来传递至可见性事件编码器。
此外,在图49A示出的是与已经对可见性事件数据进行了编码(例如,通过图48的处理4810)的视单元对应的一组视单元。
图49B是示出了接收表示实际环境的可见性事件数据流并且在自治导航的高效3D地图匹配SLAM解决方案中使用该可见性事件数据的自治交战/攻击资产的立体图。
标记为4901、4902和4905的对象是基于实际环境中的对象的建模对象,上述建模对象是使用由图49A的侦察资产4905和4906获取的3D数据通过3D重构来建模的,并且由图48的4810的处理来编码。
对象4908是攻击资产的描绘。在一些实施方式中,攻击资产是自治车辆如诺斯罗普-格鲁曼公司的MQ-8火力侦察兵枢转翼航空器。
在图48中,攻击资产对象4908被示为接收可见性事件数据流并且使用来自该可见性事件数据流的解码的PVS数据来利用地图匹配计算高效的SLAM解。这使得攻击资产能够进行高速自治导航。该高操作速度 使得攻击资产不太容易受到进攻性或防卫性客观目标的攻击,例如,在图49中标记为4950的对象。
图49B还示出了具有与作为攻击资产的解码器-客户端处理的可见性事件高速缓存的一部分的可见性事件分组对应的视单元边界的一组视单元。
使用在图1至图17中描述的高效可见性事件编码处理,在一些实施方式中将在图49A中描绘的侦察任务期间获取的3D数据迅速地转换成以很小的延迟处理至图49所描绘的攻击资产,即使当该攻击资产正在通往客观目标的途中。高效的可见性事件编码还能够将在正在进行的侦察获取期间获得数据迅速地传递至攻击资产,以提供在客观目标的区中的战术情形的频繁更新的表示。因此,来自该3D数据的攻击资产能够确定环境中的实际位置和摆在攻击资产面前的其它危险,即使在GPS限定的环境中。
在一些实施方式中,通过位于物理交战资产(图48的4830)上的处理装置来执行可见性编码处理(例如,图48的处理4815)以及解码器-服务器处理(图48的4815)和解码器-客户端处理(图48的4840)。
图50是处理器5000的框图。在一些实施方式中,处理器5000实施在可见性事件服务器中并且被配置成执行由服务器执行的任一上述方法。在另外的实施方式中,处理器5000实施在客户端中并且被配置成执行由客户端设备执行的任一上述方法。
在一种实施方式中,处理器5000包括CPU5080,其对存储在主存储器5040和/或ROM5050中的数据和指令进行处理。CPU5080还处理存储在磁盘5010或CD-ROM5020上的信息。例如,CPU5080是来自美国IBM的IBM系统X,其采用了至少一个来自美国英特尔Xenon处理器或来自美国AMD的Opteron处理器。因此,与移动设备中的处理对应的指令存储在磁盘500、CD-ROM5020、主存储器5040或ROM5050中的任何一个上。
在一种实施方式中,处理器5000还包括如来自美国英特尔公司的英特尔以太网PRO网络接口卡的网络接口5075、如来自美国NVIDIA公司的NVIDIA GeForce GTX图形适配器等用于显示器5002连接的显示控制器5030,显示器5002如Hewlett Packar HP L2445wLCD监视器。处理器5000还包括与键盘5095和如滚动球或鼠标等定点设备5085连接的I/O接口5090。根据一些实施方式,磁盘控制器5060与磁盘5010互连,如 闪存设备的硬盘驱动和具有总线5070驱动的CD-ROM5020或DVD驱动,该总线是ISA、EISA、VESA、PCI或将服务器5000的所有组件互连的类似物。出于简要,省略了对显示器5002、键盘5095和定点设备5085以及显示器控制5030、磁盘控制器5060、网络接口5075和I/O接口5090的一般的特征和功能的描述,因为这些特征都是公知的。当然,其它处理器和硬件厂商和类型在本领域中是已知的,如Freescale ColdFire,即,来自美国Freescale公司的ARM处理器。
图50的示例处理器5000是如PC的计算设备的硬件平台,并且CPU5080是因特尔奔腾处理器或本领域中已知的其它所期望的处理器。将存储在主存储器5040、ROM5050、磁盘5010或CD-ROM5020中任何一个上的计算机可读指令提供为实用应用程序、背景端口监控程序或操作系统的组件或者其组合,结合CPU5080和如微软VISTA、UNIX、Solaris、LINUX、苹果MAC-OS以及本领域技术人员已知的其它系统来执行上述指令。
主存储器5040是随机存取存储器(RAM)、闪存、EEPROM存储器等,而ROM5050是只读存储器,如PROM。处于简要,省略对主存储器5040和ROM5050的进一步描述,因为这样的存储器都是已知的。
在另外的实施方式中,客户端设备是智能电话如iPhone,其被配置成执行由客户端设备执行的任何上述方法。在另外的实施方式中,客户端设备是平板电脑如iPad,其被配置成执行由客户端设备执行的任一上述方法、。例如,可以将应用程序下载至iPhone或iPad中,其中该应用程序使得iPhone或iPad与可见性事件服务器进行通信并且执行由客户端设备执行的任一上述方法。
显然,鉴于以上教示,可以对本进步进行各种修改和变型。因此,应当理解,除非在本文中具体地描述,否则可以在所附权利要求范围内实现所述进步。

Claims (38)

1.一种在服务器上执行的用于将可渲染的图形信息发送至客户端设备的方法,所述图形信息表示三维表面,并且所述图形信息包括不被第二视区遮挡而被第一视区遮挡的至少一个图形信息集合,所述方法包括:
确定视点经历从所述第一视区到所述第二视区的移动的可能性;以及
当确定所述视点经历从所述第一视区到所述第二视区的移动的可能性大于预定阈值时,发送所述至少一个图形信息集合,所述移动是根据预定运动路径来确定的。
2.根据权利要求1所述的方法,其中,所述至少一个图形信息集合包括不被所述第二视区遮挡而被所述第一视区遮挡的网格多边形或所述网格多边形的片段的集合,所述第一视区和所述第二视区具有多个视区顶点,所述网格多边形形成多边形网格,所述至少一个图形信息集合是根据不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段来确定的,并且通过以下步骤来确定不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段:
a1)确定所述多边形网格的至少一个一阶轮廓边,所述至少一个一阶轮廓边为所述多边形网格的具有以下项的边:
共有所述至少一个一阶轮廓边的第一多边形和第二多边形,
所述第一多边形背面面对所述第二视区的所述多个视区顶点中的每个视区顶点,
所述第二多边形正面面对所述第二视区的所述多个视区顶点中的至少一个视区顶点,以及
所述第一多边形和所述第二多边形相对于彼此具有背面面对取向,
a2)确定所述第二视区与所述多边形网格之间的至少一个支撑多边形,所述至少一个支撑多边形是在所述第二视区与所述至少一个一阶轮廓边的至少一个顶点之间确定的;
a3)根据所述至少一个支撑多边形来构造至少一个楔形,所述至少一个楔形远离所述第二视区延伸至少超出所述多边形网格;
a4)确定所述至少一个楔形与所述网格多边形的一个或更多个相交部;以及
a5)使用所述至少一个楔形与所述多边形网格的所述确定的一个或更多个相交部,确定不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段的集合。
3.根据权利要求2所述的方法,其中所述可渲染的图形信息包括表示程序性表面的信息,根据所述表示程序性表面的信息能够生成多边形。
4.根据权利要求2所述的方法,其中,不被第二视区遮挡而被第一视区遮挡的所述至少一个图形信息集合包括表示广告的图形信息。
5.根据权利要求4所述的方法,其中,发送表示广告的至少一个图形信息集合的步骤包括:仅在确定数据库包括表示所述表示广告的图形信息应该将目标对准所述客户端设备的用户的目标信息时,发送表示广告的所述至少一个图形信息集合。
6.根据权利要求5所述的方法,其中,所述目标信息包括表示所述客户端设备的所述用户对广告做出的先前响应的信息。
7.根据权利要求4所述的方法,其中,从所述第一视区至所述第二视区的所述移动是根据预定移动路径确定的。
8.根据权利要求4所述的方法,其中,表示广告的所述至少一个图形信息集合包括用于生成所述多边形网格的指令。
9.根据权利要求4所述的方法,其中,表示广告的所述至少一个图形信息集合包括用于构造参数化几何模型的参数。
10.根据权利要求4所述的方法,其中,表示广告的所述至少一个图形信息集合包括图示符信息和用于根据所述图示符信息构造三维符号的参数。
11.一种在服务器上执行的用于将可渲染的图形信息发送至客户端设备的方法,所述图形信息表示三维表面,并且所述图形信息包括不被第二视区遮挡而被第一视区遮挡的第一图形信息集合,并且所述图形信息包括不被所述第二视区遮挡而被所述第一视区遮挡的第二图形信息集合,所述第二图形信息集合包括表示广告的图形信息,所述方法包括以下步骤:
当确定视点从所述第一视区移动至所述第二视区的可能性大于预定移动阈值时,发送所述第一图形信息集合,所述移动是根据对于所述客户端设备的用户输入来确定的;以及
当确定所述视点从所述第一视区移动至所述第二视区的可能性大于所述预定移动阈值时,并且当确定从所述服务器至所述客户端设备的可用传输带宽超过预定带宽阈值时,发送所述第二图形信息集合,所述移动是根据对于所述客户端设备的用户输入来确定的。
12.根据权利要求11所述的方法,其中,发送表示广告的所述至少一个图形信息集合的步骤包括:仅在确定数据库包括表示所述广告应该将目标对准客户端设备的用户的目标信息时,发送表示广告的所述至少一个图形信息集合。
13.根据权利要求12所述的方法,其中,所述目标信息包括表示所述客户端设备的所述用户对广告做出的先前响应的信息。
14.根据权利要求12所述的方法,其中,所述至少一个图形信息集合包括不被所述第二视区遮挡而被所述第一视区遮挡的网格多边形或所述网格多边形的片段的集合,所述第一视区和所述第二视区具有多个视区顶点,所述网格多边形形成多边形网格,所述至少一个图形信息集合是根据不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段来确定的,并且通过以下步骤来确定不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段:
a1)确定所述多边形网格的至少一个一阶轮廓边,所述至少一个一阶轮廓边为所述多边形网格的具有以下项的边:
共有所述至少一个一阶轮廓边的第一多边形和第二多边形,
所述第一多边形背面面对所述第二视区的所述多个视区顶点中的每个视区顶点,
所述第二多边形正面面对所述第二视区的所述多个视区顶点中的至少一个视区顶点,以及
所述第一多边形和所述第二多边形相对于彼此具有背面面对取向,
a2)确定所述第二视区与所述多边形网格之间的至少一个支撑多边形,所述至少一个支撑多边形是在所述第二视区与所述至少一个一阶轮廓边的至少一个顶点之间确定的;
a3)根据所述至少一个支撑多边形来构造至少一个楔形,所述至少一个楔形远离所述第二视区延伸至少超出所述多边形网格;
a4)确定所述至少一个楔形与所述网格多边形的一个或更多个相交部;以及
a5)使用所述至少一个楔形与所述多边形网格的所述确定的一个或更多个相交部,来确定不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段的集合。
15.根据权利要求14所述的方法,其中,表示广告的所述至少一个图形信息集合包括用于生成所述多边形网格的指令。
16.根据权利要求11所述的方法,其中,表示广告的所述至少一个图形信息集合包括用于构造参数化几何模型的参数。
17.根据权利要求12所述的方法,其中,表示广告的所述至少一个图形信息集合包括图示符信息和用于根据所述图示符信息构造三维符号的参数。
18.根据权利要求12所述的方法,其中,所述图形信息包括能够由观察者选择的图形信息,并且所述方法还包括以下步骤:
从所述客户端设备接收表明选择表示所述广告的所述至少一个图形信息集合的信息;
当从所述客户端设备接收到表明选择表示所述广告的所述至少一个图形信息集合的信息时,发送至少一个第二图形信息集合,所述至少一个第二图形信息集合表示与所述广告相关联的相关产品或服务。
19.根据权利要求12所述的方法,其中,所述图形信息包括能够由观察者选择的图形信息,并且所述方法还包括以下步骤:
从所述客户端设备接收表明选择表示所述广告的所述至少一个图形信息集合的信息;
当从所述客户端设备接收到表明选择表示所述广告的所述至少一个图形信息集合的信息时,发送至少一个第二图形信息集合,所述至少一个第二图形信息集合表示在建模环境中能够由客户端用户使用的对象。
20.根据权利要求19所述的方法,还包括以下步骤:
根据所述选择对所述客户端用户进行收费。
21.根据权利要求11所述的方法,其中,当确定视点从所述第一视区移动至所述第二视区的可能性大于预定移动阈值并且当确定从所述服务器至所述客户端设备的可用传输带宽超过预定带宽阈值时,执行所述发送所述至少一个图形信息集合的步骤。
22.根据权利要求11所述的方法,其中,从所述第一视区至所述第二视区的所述移动是根据对于所述客户端设备的用户输入确定的。
23.根据权利要求12所述的方法,其中,从所述第一视区至所述第二视区的所述移动是根据对于所述客户端设备的用户输入确定的。
24.一种在客户端设备上执行的用于从服务器接收可渲染的图形信息的方法,所述图形信息表示三维表面,并且所述图形信息包括不被第二视区遮挡而被第一视区遮挡的第一图形信息集合,所述方法包括以下步骤:
向所述服务器发送数据,所述数据表示对于所述客户端设备的用户输入,所述用户输入控制所述视点位置;当确定所述视点从所述第一视区移动至所述第二视区的可能性大于预定移动阈值时,从所述服务器接收所述第一图形信息集合,所述移动是根据对于所述客户端设备的用户输入来确定的。
25.根据权利要求24所述的方法,其中,所述至少一个图形信息集合包括不被所述第二视区遮挡而被所述第一视区遮挡的网格多边形或所述网格多边形的片段的集合,所述第一视区和所述第二视区具有多个视区顶点,所述网格多边形形成多边形网格,所述至少一个图形信息集合是根据不被所述第二视遮挡的所述网格多边形或所述网格多边形的片段来确定的,并且通过以下步骤来确定不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段:
a1)确定所述多边形网格的至少一个一阶轮廓边,所述至少一个一阶轮廓边为所述多边形网格的具有以下项的边:
共有所述至少一个一阶轮廓边的第一多边形和第二多边形,
所述第一多边形背面面对所述第二视区的所述多个视区顶点中的每个视区顶点,
所述第二多边形正面面对所述第二视区的所述多个视区顶点中的至少一个视区顶点,以及
所述第一多边形和所述第二多边形相对于彼此具有背面面对取向,
a2)确定所述第二视区与所述多边形网格之间的至少一个支撑多边形,所述至少一个支撑多边形是在所述第二视区与所述至少一个一阶轮廓边的至少一个顶点之间确定的;
a3)根据所述至少一个支撑多边形来构造至少一个楔形,所述至少一个楔形远离所述第二视区延伸至少超出所述多边形网格;
a4)确定所述至少一个楔形与所述网格多边形的一个或更多个相交部;以及
a5)使用所述至少一个楔形与所述多边形网格的所述确定的一个或更多个相交部,来确定不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段的集合。
26.根据权利要求24所述的方法,其中,不被第二视区遮挡而被第一视区遮挡的所述至少一个图形信息集合包括表示广告的图形信息。
27.一种用于接收可渲染的图形信息的方法,所述图形信息表示三维表面,并且所述图形信息包括被第一视区遮挡而不被第二视区遮挡的至少一个图形信息集合,所述方法包括以下步骤:
在客户端设备上接收表示用户输入的数据,所述用户输入控制视点位置;以及
当确定所述视点位置从所述第一视区移动至所述第二视区的可能性大于预定移动阈值时,在所述客户端设备上接收所述至少一个图形信息集合,使用所接收的表示用户输入的数据进行所述确定,所述移动是根据预定运动路径来确定的。
28.根据权利要求27所述的方法,其中,所述至少一个图形信息集合包括不被所述第二视区遮挡而被所述第一视区遮挡的网格多边形或所述网格多边形的片段的集合,所述第一视区和所述第二视区具有多个视区顶点,所述网格多边形形成多边形网格,所述至少一个图形信息集合是根据不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段来确定的,并且通过以下步骤来确定不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段:
a1)确定所述多边形网格的至少一个一阶轮廓边,所述至少一个一阶轮廓边为所述多边形网格的具有以下项的边:
共有所述至少一个一阶轮廓边的第一多边形和第二多边形,
所述第一多边形背面面对所述第二视区的所述多个视区顶点中的每个视区顶点,
所述第二多边形正面面对所述第二视区的所述多个视区顶点中的至少一个视区顶点,以及
所述第一多边形和所述第二多边形相对于彼此具有背面面对取向,
a2)确定所述第二视区与所述多边形网格之间的至少一个支撑多边形,所述至少一个支撑多边形是在所述第二视区与所述至少一个一阶轮廓边的至少一个顶点之间确定的;
a3)根据所述至少一个支撑多边形来构造至少一个楔形,所述至少一个楔形远离所述第二视区延伸至少超出所述多边形网格;
a4)确定所述至少一个楔形与所述网格多边形的一个或更多个相交部;以及
a5)使用所述至少一个楔形与所述多边形网格的所述确定的一个或更多个相交部,来确定不被所述第二视区遮挡的所述网格多边形或所述网格多边形的片段的集合。
29.根据权利要求28所述的方法,其中,不被第二视区遮挡而被第一视区遮挡的所述至少一个图形信息集合包括表示广告的图形信息。
30.根据权利要求29所述的方法,其中,接收表示广告的至少一个图形信息集合的步骤包括:仅在确定数据库包括表示所述表示广告的图形信息应该将目标对准所述客户端设备的用户的目标信息时,接收表示广告的所述至少一个图形信息集合。
31.根据权利要求30所述的方法,其中,所述目标信息包括表示由所述客户端设备的所述用户对广告做出的先前响应的信息。
32.根据权利要求27所述的方法,其中,仅当确定从服务器至所述客户端设备的可用传输带宽超过预定带宽阈值时,执行所述接收所述至少一个图形信息集合的步骤。
33.根据权利要求28所述的方法,其中,从所述第一视区至所述第二视区的所述移动是根据预定运动路径来确定的。
34.根据权利要求27所述的方法,其中,从所述第一视区至所述第二视区的所述移动是根据对于所述客户端设备的用户输入来确定的。
35.根据权利要求28所述的方法,其中,从所述第一视区至所述第二视区的所述移动是根据对于所述客户端设备的用户输入来确定的。
36.根据权利要求29所述的方法,其中,表示广告的所述至少一个图形信息集合包括用于生成所述多边形网格的指令。
37.根据权利要求29所述的方法,其中,表示广告的所述至少一个图形信息集合包括用于构造参数化几何模型的参数。
38.根据权利要求29所述的方法,其中,表示广告的所述至少一个图形信息集合包括图示符信息和用于根据所述图示符信息构造三维符号的参数。
CN201180054647.7A 2010-09-13 2011-09-13 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体 Active CN103221993B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010662407.6A CN111833424A (zh) 2010-09-13 2011-09-13 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体
CN201611005881.1A CN107093201B (zh) 2010-09-13 2011-09-13 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US38205610P 2010-09-13 2010-09-13
US61/382,056 2010-09-13
US38428410P 2010-09-19 2010-09-19
US61/384,284 2010-09-19
US201161452330P 2011-03-14 2011-03-14
US61/452,330 2011-03-14
US201161474491P 2011-04-12 2011-04-12
US61/474,491 2011-04-12
US201161476819P 2011-04-19 2011-04-19
US61/476,819 2011-04-19
USPCT/US2011/042309 2011-06-29
PCT/US2011/042309 WO2012012161A2 (en) 2010-06-30 2011-06-29 System and method of from-region visibility determination and delta-pvs based content streaming using conservative linearized umbral event surfaces
PCT/US2011/051403 WO2012037129A2 (en) 2010-09-13 2011-09-13 System and method of delivering and controlling streaming interactive media comprising predetermined packets of geometric, texture, lighting and other data which are rendered on a reciving device

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN202010662407.6A Division CN111833424A (zh) 2010-09-13 2011-09-13 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体
CN201611005881.1A Division CN107093201B (zh) 2010-09-13 2011-09-13 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体

Publications (2)

Publication Number Publication Date
CN103221993A CN103221993A (zh) 2013-07-24
CN103221993B true CN103221993B (zh) 2017-02-15

Family

ID=45832201

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201180054647.7A Active CN103221993B (zh) 2010-09-13 2011-09-13 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体
CN202010662407.6A Pending CN111833424A (zh) 2010-09-13 2011-09-13 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体
CN201611005881.1A Active CN107093201B (zh) 2010-09-13 2011-09-13 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202010662407.6A Pending CN111833424A (zh) 2010-09-13 2011-09-13 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体
CN201611005881.1A Active CN107093201B (zh) 2010-09-13 2011-09-13 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体

Country Status (4)

Country Link
US (1) US9489762B2 (zh)
EP (2) EP2617025B1 (zh)
CN (3) CN103221993B (zh)
WO (1) WO2012037129A2 (zh)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US9177313B1 (en) * 2007-10-18 2015-11-03 Jpmorgan Chase Bank, N.A. System and method for issuing, circulating and trading financial instruments with smart features
US8381108B2 (en) * 2010-06-21 2013-02-19 Microsoft Corporation Natural user input for driving interactive stories
US9053562B1 (en) 2010-06-24 2015-06-09 Gregory S. Rabin Two dimensional to three dimensional moving image converter
US10109103B2 (en) * 2010-06-30 2018-10-23 Barry L. Jenkins Method of determining occluded ingress and egress routes using nav-cell to nav-cell visibility pre-computation
EP3660663B8 (en) 2012-10-31 2024-05-22 Outward Inc. Delivering virtualized content
US10462499B2 (en) * 2012-10-31 2019-10-29 Outward, Inc. Rendering a modeled scene
US9164653B2 (en) 2013-03-15 2015-10-20 Inspace Technologies Limited Three-dimensional space for navigating objects connected in hierarchy
US9361665B2 (en) * 2013-11-27 2016-06-07 Google Inc. Methods and systems for viewing a three-dimensional (3D) virtual object
US10891780B2 (en) 2013-11-27 2021-01-12 Google Llc Methods and systems for viewing a three-dimensional (3D) virtual object
US9344733B2 (en) * 2013-12-27 2016-05-17 Samsung Electronics Co., Ltd. Feature-based cloud computing architecture for physics engine
JP2015191630A (ja) * 2014-03-28 2015-11-02 富士通株式会社 情報処理装置、変更検出方法および変更検出プログラム
US10154072B2 (en) * 2014-09-17 2018-12-11 Microsoft Technology Licensing, Llc Intelligent streaming of media content
WO2016049729A1 (en) * 2014-09-30 2016-04-07 Cae Inc. Rendering plausible images of 3d polygon meshes
US9691177B2 (en) 2014-12-12 2017-06-27 Umbra Software Ltd. Techniques for automatic occluder simplification using planar sections
US10347038B1 (en) 2015-02-20 2019-07-09 Amazon Technologies, Inc. Determining visibility in virtual environments
US10803089B1 (en) * 2015-02-20 2020-10-13 Amazon Technologies, Inc. Grid based pathfinding
US9616773B2 (en) 2015-05-11 2017-04-11 Uber Technologies, Inc. Detecting objects within a vehicle in connection with a service
US9836895B1 (en) 2015-06-19 2017-12-05 Waymo Llc Simulating virtual objects
US10091542B1 (en) * 2015-09-04 2018-10-02 Adap.Tv, Inc. Systems and methods of dynamic optimization of data element utilization according to objectives
US10102549B1 (en) * 2015-09-02 2018-10-16 Millennial Media Llc Systems and methods of dynamic optimization of viewability rate utilizing pre-bid client-side detection
US10077984B2 (en) * 2015-09-25 2018-09-18 International Business Machines Corporation Indoor positioning system training
US10712160B2 (en) 2015-12-10 2020-07-14 Uatc, Llc Vehicle traction map for autonomous vehicles
US9841763B1 (en) 2015-12-16 2017-12-12 Uber Technologies, Inc. Predictive sensor array configuration system for an autonomous vehicle
US9840256B1 (en) 2015-12-16 2017-12-12 Uber Technologies, Inc. Predictive sensor array configuration system for an autonomous vehicle
US9990548B2 (en) 2016-03-09 2018-06-05 Uber Technologies, Inc. Traffic signal analysis system
US10026230B2 (en) * 2016-03-30 2018-07-17 Daqri, Llc Augmented point cloud for a visualization system and method
US10459087B2 (en) 2016-04-26 2019-10-29 Uber Technologies, Inc. Road registration differential GPS
US9672446B1 (en) * 2016-05-06 2017-06-06 Uber Technologies, Inc. Object detection for an autonomous vehicle
US9786027B1 (en) 2016-06-16 2017-10-10 Waygate, Inc. Predictive bi-adaptive streaming of real-time interactive computer graphics content
US10565786B1 (en) * 2016-06-30 2020-02-18 Google Llc Sensor placement interface
US10852744B2 (en) 2016-07-01 2020-12-01 Uatc, Llc Detecting deviations in driving behavior for autonomous vehicles
US11526521B2 (en) * 2016-07-15 2022-12-13 Microsoft Technology Licensing, Llc Prefetching using dynamic user model to reduce latency
US10553029B1 (en) * 2016-09-30 2020-02-04 Amazon Technologies, Inc. Using reference-only decoding of non-viewed sections of a projected video
US10367645B2 (en) * 2016-10-26 2019-07-30 International Business Machines Corporation Proof-of-work for smart contracts on a blockchain
US10609356B1 (en) 2017-01-23 2020-03-31 Amazon Technologies, Inc. Using a temporal enhancement layer to encode and decode stereoscopic video content
US20190026207A1 (en) * 2017-07-19 2019-01-24 Vmware, Inc. Metric transmission
US10958747B2 (en) 2017-08-24 2021-03-23 Google Llc Digital component transmission
IL272651B (en) 2017-09-01 2022-08-01 Magic Leap Inc Creating a new frame using processed and unprocessed content from a previous perspective
US10192353B1 (en) * 2017-10-10 2019-01-29 8i Limited Multiresolution surface representation and compression
WO2019086115A1 (en) * 2017-11-02 2019-05-09 MAX-PLANCK-Gesellschaft zur Förderung der Wissenschaften e.V. Real-time potentially visible set for streaming rendering
US10504251B1 (en) * 2017-12-13 2019-12-10 A9.Com, Inc. Determining a visual hull of an object
US10504280B2 (en) * 2018-01-10 2019-12-10 Qualcomm Incorporated Accelerated occlusion computation
CN108537872B (zh) * 2018-03-07 2022-02-15 海信视像科技股份有限公司 一种图像渲染方法、移动设备和云端设备
CN108510430A (zh) * 2018-03-27 2018-09-07 长沙景嘉微电子股份有限公司 基于分块渲染的gpu中一种资源共享的实现方法
CN110719497B (zh) * 2018-07-12 2021-06-22 华为技术有限公司 点云编解码方法和编解码器
CN109410332B (zh) * 2018-09-17 2022-12-23 广西大学 基于点线面的三维空间几何虚拟模型细节层次裁剪方法
JP7331088B2 (ja) * 2018-09-24 2023-08-22 マジック リープ, インコーポレイテッド 3次元モデル共有のための方法およびシステム
KR102138977B1 (ko) * 2018-10-10 2020-07-28 민코넷주식회사 클라우드 컴퓨터를 이용한 게임 플레이 동영상 제공 시스템
US10846042B2 (en) * 2018-10-31 2020-11-24 Hewlett Packard Enterprise Development Lp Adaptive rendering for untethered multi-user virtual reality
US11051206B2 (en) 2018-10-31 2021-06-29 Hewlett Packard Enterprise Development Lp Wi-fi optimization for untethered multi-user virtual reality
US11461942B2 (en) * 2018-12-21 2022-10-04 Koninklijke Kpn N.V. Generating and signaling transition between panoramic images
US11393097B2 (en) * 2019-01-08 2022-07-19 Qualcomm Incorporated Using light detection and ranging (LIDAR) to train camera and imaging radar deep learning networks
CN110047085B (zh) * 2019-04-17 2023-03-31 泰山学院 一种针对肺ct图像阈值分割结果的肺膜粘连结节区域精确修复方法
US11315326B2 (en) * 2019-10-15 2022-04-26 At&T Intellectual Property I, L.P. Extended reality anchor caching based on viewport prediction
US11115688B2 (en) * 2019-12-16 2021-09-07 Netflix, Inc. Global approach to buffering media content
EP3883235A1 (en) 2020-03-17 2021-09-22 Aptiv Technologies Limited Camera control modules and methods
US11195024B1 (en) * 2020-07-10 2021-12-07 International Business Machines Corporation Context-aware action recognition by dual attention networks
US11895170B2 (en) * 2021-03-09 2024-02-06 Cisco Technology, Inc. Synchronicity for virtual reality/augmented reality interactive sessions in wireless networks
CN112995636B (zh) * 2021-03-09 2022-03-25 浙江大学 基于边缘计算和主动缓存的360度虚拟现实视频传输系统及参数优化方法
CN113188520B (zh) * 2021-04-30 2023-04-18 成都睿铂科技有限责任公司 一种区域分块环绕型航线的规划方法、系统及航摄方法
CN113849697B (zh) * 2021-09-10 2024-04-26 上海得帆信息技术有限公司 一种轻量的基于dom的流程图渲染方法
CN113786615B (zh) * 2021-09-28 2023-06-16 腾讯科技(深圳)有限公司 互动方法、装置、终端
WO2023063835A1 (en) * 2021-10-12 2023-04-20 Victoria Link Limited Multi resolution subsampled saliency
CN116863100A (zh) * 2022-03-28 2023-10-10 腾讯科技(深圳)有限公司 网格模型处理方法、装置、设备以及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6259452B1 (en) * 1997-04-14 2001-07-10 Massachusetts Institute Of Technology Image drawing system and method with real-time occlusion culling
US6326964B1 (en) * 1995-08-04 2001-12-04 Microsoft Corporation Method for sorting 3D object geometry among image chunks for rendering in a layered graphics rendering system

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0591325B1 (en) 1991-06-28 2007-12-05 LIM, Hong Lip Improvements in visibility calculations for 3d computer graphics
US6219045B1 (en) 1995-11-13 2001-04-17 Worlds, Inc. Scalable virtual world chat client-server system
US6057847A (en) 1996-12-20 2000-05-02 Jenkins; Barry System and method of image generation and encoding using primitive reprojection
US6111582A (en) 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US6028608A (en) 1997-05-09 2000-02-22 Jenkins; Barry System and method of perception-based image generation and encoding
JP3383563B2 (ja) * 1997-12-18 2003-03-04 富士通株式会社 物体移動シミュレーション装置
DE69841158D1 (de) * 1998-05-06 2009-10-29 Thomson Multimedia Sa Verfahren zum Umwandeln des Bildformates
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6636633B2 (en) 1999-05-03 2003-10-21 Intel Corporation Rendering of photorealistic computer graphics images
US6897863B2 (en) * 2001-11-30 2005-05-24 Caterpillar Inc System and method for hidden object removal
US6791549B2 (en) * 2001-12-21 2004-09-14 Vrcontext S.A. Systems and methods for simulating frames of complex virtual environments
US7348989B2 (en) * 2003-03-07 2008-03-25 Arch Vision, Inc. Preparing digital images for display utilizing view-dependent texturing
US6933946B1 (en) 2003-05-07 2005-08-23 At&T Corp. Method for out-of core rendering of large 3D models
CA2563478A1 (en) * 2004-04-16 2005-10-27 James A. Aman Automatic event videoing, tracking and content generation system
JP4328311B2 (ja) * 2005-04-14 2009-09-09 株式会社東芝 三次元画像表示用多視点画像の作成方法およびプログラム
CN100438406C (zh) * 2006-01-23 2008-11-26 北京航空航天大学 一种基于远程渲染的三维模型网络发布方法
DE102007033239A1 (de) * 2007-07-13 2009-01-15 Visumotion Gmbh Verfahren zur Bearbeitung eines räumlichen Bildes
US9111285B2 (en) * 2007-08-27 2015-08-18 Qurio Holdings, Inc. System and method for representing content, user presence and interaction within virtual world advertising environments
CA2705403A1 (en) * 2007-12-07 2009-07-02 France Telecom Method of managing a set of virtual environment control entities, device, and corresponding computer program product
US20090289955A1 (en) 2008-05-22 2009-11-26 Yahoo! Inc. Reality overlay device
JP5238440B2 (ja) * 2008-10-02 2013-07-17 株式会社東芝 画像表示装置及び画像表示方法
CN101527865B (zh) * 2009-01-05 2010-09-01 清华大学 一种投影式高分辨率多视点自由立体显示系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6326964B1 (en) * 1995-08-04 2001-12-04 Microsoft Corporation Method for sorting 3D object geometry among image chunks for rendering in a layered graphics rendering system
US6259452B1 (en) * 1997-04-14 2001-07-10 Massachusetts Institute Of Technology Image drawing system and method with real-time occlusion culling

Also Published As

Publication number Publication date
CN111833424A (zh) 2020-10-27
EP2617025A2 (en) 2013-07-24
CN107093201B (zh) 2021-02-12
WO2012037129A2 (en) 2012-03-22
CN107093201A (zh) 2017-08-25
EP3543958B1 (en) 2020-11-11
EP2617025B1 (en) 2019-05-08
US9489762B2 (en) 2016-11-08
CN103221993A (zh) 2013-07-24
US20130215115A1 (en) 2013-08-22
WO2012037129A3 (en) 2012-08-09
EP3543958A1 (en) 2019-09-25
EP2617025A4 (en) 2016-06-29

Similar Documents

Publication Publication Date Title
CN103221993B (zh) 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体
US6538651B1 (en) Parametric geometric element definition and generation system and method
Anderson et al. Developing serious games for cultural heritage: a state-of-the-art review
US10109103B2 (en) Method of determining occluded ingress and egress routes using nav-cell to nav-cell visibility pre-computation
US20080231630A1 (en) Web Enabled Three-Dimensional Visualization
CN113781626B (zh) 遍历在射线追踪中使用的数据的技术
CN103080984A (zh) 使用保守的线性化本影事件面来确定从区看去的可见性和进行基于增量pvs的内容流处理的系统及方法
CN113808245B (zh) 用于遍历光线追踪加速结构的增强技术
CN113808241B (zh) 共享顶点的射线追踪图元的硬件加速
Cohen-Or et al. Visibility streaming for network-based walkthroughs
Paulin et al. Review and analysis of synthetic dataset generation methods and techniques for application in computer vision
Mulloni et al. Interactive walkthrough of large 3D models of buildings on mobile devices
CN115485718A (zh) 从单个图像确定可穿越空间
Robles-Ortega et al. Efficient visibility determination in urban scenes considering terrain information
Rudomin et al. Gpu generation of large varied animated crowds
Zara et al. Virtual campeche: A web based virtual three-dimensional tour
Zara Concise Tour to the Virtual Old Prague.
Sunar et al. Crowd rendering optimization for virtual heritage system
Koldaş Efficient visibility estimation for distributed virtual urban environments
Moreira et al. i-om: Intelligent optimization: For computer graphics and visualization
Rodrigues et al. A real time lighting technique for procedurally generated 2d isometric game terrains
Goswami Snow and Ice Animation Methods in Computer Graphics
Aliaga Automatically reducing and bounding geometric complexity by using images
Mehta Virtual reality applications in the field of architectural reconstructions
Cheng GPU-accelerated Crowd Simulation with User-guidance and Multi-level Uncertainty

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant