用于改进多姿态3d渲染的速度和视觉保真度的方法_2

文档序号:8207778阅读:来源:国知局
形子系统的工作站中出现的情形。当然,CPU 20可以是或者包括一个或多个现场可编程门 阵列(FPGA)、数字信号处理器(DSP)和/或专用集成电路(ASIC)。
[0045] 在图1的示例实施方式中,客户端设备12是个人计算机(PC)。然而,一般地,客户 端设备12可以是任意适当的静态计算设备或者诸如平板PC、智能电话等的便携式计算设 备。虽然客户端设备12在图1的示例中包括存储和处理组件,但是在其他实施例中,客户 端设备12可以是所谓的瘦客户端,其在某些计算和/或存储功能上依赖于其它计算设备。 例如,在一个这样的实施例中,非易失性存储器24处于客户端设备12之外并且经由网络链 接而连接至客户端设备12。另外,客户端设备12可以耦合至输入设备26和输出设备28。 输入设备26例如可以包括诸如鼠标的指示设备、键盘、触摸屏、轨迹球设备、数字输入板或 麦克风,以及输出设备28可以包括LCD显示监视器、触摸屏或另一种适当的输出设备。使 用输入设备26和输出设备28,用户能够访问客户端设备12的图形用户界面(GUI)。
[0046] 在操作中,对客户端设备12进行操作的用户可以使用浏览器应用30。在一个实施 例中,浏览器应用30是存储在非易失性存储器24和/或加载到RAM 22中并且能够由CPU 20执行的独立应用。经由整合到浏览器30中或者由软件插件32(即,向浏览器应用30添 加功能的软件组件)实现的编程,浏览器应用30实现能够由CPU 20执行的观看应用34。 特别地,浏览器应用30可以实现解释引擎,其能够在浏览器应用30内解释并运行小的指令 集(即,小型程序)。指令集可以贯穿本申请被称作小程序。小程序可以由客户端设备12 作为浏览器应用30所请求的网页36的一部分而接收,并且一旦被下载就作为文件36存储 于RAM 22和/或非易失性存储器24中。如以下所描述的,处理器CPU 20执行的小程序可 以使得观看应用34在显示器28上显示用于观看和操控多姿态3D渲染的用户界面。观看 应用34实现的用户界面可以包括用于对在多姿态3D渲染中建模或描绘的三维形状的姿态 进行旋转、倾斜、缩放、依序选择以及以其它方式调整其的控件集合。
[0047] 服务器14实现许多与客户端设备12相同的组件,包括例如用于执行计算机可读 指令的中央处理单元(CPU)40,用于在操作期间存储数据和指令的随机访问存储器(RAM) 单元42,以及用于存储软件应用、诸如动态链接库(DLL)的共享软件组件、CPU 40执行的其 它程序以及数据的非易失性存储器44。作为示例,非易失性存储器24可以在经由总线耦合 至CPU 20的硬盘驱动器(HDD)上实现。替选地,非易失性存储器44可以被实现为固态驱 动器(未示出)。一般来讲,组件40、42和44可以以任何适当方式来实现。例如,虽然在图 1中被描绘为单个单元,但是CPU 40可以是处于一个或多个物理封装中的一个或多个处理 器,其可以是单核或多核处理器,或者可以是通用处理单元和图形处理器。此外,CPU 40可 以划分在服务器14的一个或多个子系统之间,诸如可能在具有通用处理器和包括专用处 理器的图形子系统的工作站中出现的情形。当然,CPU 40可以是或者包括一个或多个现场 可编程门阵列(FPGA)、数字信号处理器(DSP)和/或专用集成电路(ASIC)。
[0048] 另外,服务器14可以耦合至输入设备47和输出设备49。输入设备47例如可以 包括诸如鼠标的指示设备、键盘、触摸屏、轨迹球设备、数字输入板或麦克风,以及输出设备 49可以包括LCD显示监视器、触摸屏或另一种适当输出设备。使用输入设备47和输出设备 49,用户能够访问客户端设备14的图形用户界面(GUI)。
[0049] 在操作中,服务器14可以实现服务器软件46,其存储在非易失性存储器44中并且 当被中央处理单元40执行时存储在RAM 42中。当被CPU 40执行时,服务器软件46可以 使得网页48从服务器14经由网络18传送至客户端设备12。在一些实施例中,网页48可 以存储在非易失性存储器44和/或数据库16中,而在其它实施例中,服务器软件46可以 使得网页48根据从客户端设备12接收并且存储在RAM 42中的信息得以创建。网页48可 以是实现多姿态3D渲染的显示的任意网页,作为示例而非限制,其包括涉及在线商户的网 页或涉及3D建模软件应用的网页。服务器14特别是非易失性存储器44或RAM 42还可以 存储用于观看应用34的程序(即,机器可执行指令),该观看应用可以响应于对观看应用 34的请求或者作为网页48中的一个网页的一部分而被传送至客户端设备12。服务器14 还可以存储可以由3D建模应用所使用的模块48。
[0050] 除其它之外,数据库16可以存储与多姿态3D渲染相关的记录50。在一个实施例 中,记录50中的一个或多个包括可以由3D建模应用使用或者在3D表示中使用的3D模型 52,诸如3D地图。记录50还包括模型52的多个2D渲染54。每个渲染54从不同角度描绘 模型52所表示的对象。与记录50相关联的渲染54的数量可以是大于1的任意数量,但是 其通常处于4至40的范围之内。在一些实施例中,渲染54可以在对象旋转时全部从相似 或相同的高度描绘模型52所表示的对象。也就是说,36个图像可以以从一个图像54到下 一个植染54的10度旋转差异来描绘对象。在其它实施例中,植染54可以从处于一个高度 的多个旋转优势位置(rotational vantage)(即,旋转角)、从多个不同高度(即,倾斜角) 和/或从处于若干高度中的每一个的多个旋转位置描绘模型52所表示的对象,以提供该对 象的完整视图。以这种方式,观看渲染的用户(例如,使用在客户端设备12上操作的观看 应用34)可以能够观看对象而无需客户端设备12执行渲染实时3D图像的软件应用。替代 地,用户能够"转动"和/或"倾斜"对象并且从任何可用角度看到对象,这为用户给出了交 互式3D的错觉,而实际上此时除了当前显示的2D图像之外什么都没有改变。
[0051] 图2A-2L图示了诸如在执行观看应用34时可能由显示设备28所显示的显示60 的示例。显示60描绘了其上具有两个标记64、66的球形3D对象62。处于显示60底部的 控制栏68允许用户例如通过激活(例如,利用作为输入设备26的诸如鼠标的指示设备进 行"点击")分别用于选择前一个或下一个图像的控件70和72或者通过移动滑动块控件 74而对对象62的视图进行控制。在图2A-2L的示例性显示60中,对象62通过12个相对 应的2D渲染以12个姿态进行描绘。每个相对应的2D渲染都从单个高度描绘对象62,但 是旋转至不同的角度。在每个连续2D渲染中,对象62进行旋转而看上去已经被旋转了 30 度(整圈旋转的1/12)的增量。通过依序观看2D渲染,对象62看上去适当进行旋转而使 得用户能够从不同角度看到对象62。在一些实施例中,滑动块74可以包括用于示出当前在 显示哪个2D渲染的数字指示器76。在一些实施例中,用户可以使用输入设备26对对象进 行"点击和拖动"而以交互式的速度旋转对象。在一些实施例中,12个2D渲染处于高度压 缩格式而使得(多个)相关联文件的大小最小化。在各个实施例中,12个2D渲染可以以彩 色或灰度来描绘对象62。
[0052] 当然,将要理解的是,虽然图2A-2L描绘了其中使用12个2D渲染构建了 3D对象 62的多姿态渲染的示例实施例,但是3D对象的多姿态渲染可以从向三个或四个那么少到 40个或更多的那么多的各个数量的2D渲染进行构建。
[0053] 无论用来创建多姿态3D渲染的2D渲染的数量如何,在所公开的方法和系统的第 一方面,添加覆盖图像以改进多姿态3D渲染的视觉保真度,即使在2D渲染采用了明显图像 压缩的情况下。该覆盖图像包含出现在每个其它2D渲染中的边缘线条的渲染。该覆盖图像 是双色图像,其具有透明背景(第一颜色)和边缘线条的单色(第二颜色)渲染。在一个实 施例中,边缘线条的渲染为黑色,虽然例如根据所建模的对象也可以使用其它颜色(例如, 如果对象使用非常暗的颜色一例如黑色一进行建模,则可能优选地使用白色来渲染附加图 像中的边缘线条)。
[0054] 该覆盖图像不是仅描绘了对应于2D渲染中的单独一个的边缘线条,而且替代地 描绘了对应于每个其它2D渲染的边缘线条。因此,再次参考图2A-2L中所示的其中多姿态 3D渲染经由12个2D渲染实现的示例,在一个实施例中,覆盖图像包括12个边缘线条渲染, 其中每一个对应于12个2D渲染中的一个。12个边缘线条渲染中的每一个在覆盖图像内具 有特定位置。在客户端设备12上执行的观看应用34进行操作以针对12个2D渲染中的每 一个显示覆盖图像的相对应部分以将边缘线条渲染覆盖在该2D渲染上。
[0055] 图3-5图示了使用边缘线条覆盖图像的概念如何针对单个2D图像进行操作。在 图3中,单个2D纹理渲染80描绘了矩形3D对象82。该纹理渲染80可以是从各个角度描 绘对象82的这样图像群组中的一个,使得当渲染被依序观看时渲染形成对象82的多姿态 3D渲染。在纹理渲染80中,对象82具有三个可见的面84、86和88。面84、86和88的纹 理在图3中通过不同方向的剖面线进行描绘。图4描绘了边缘线条覆盖图像的相对应部分 90。相对应部分90包括对象82的边缘线条渲染92,其设置在透明背景94 (在图4中由剖 面线96表示)上。边缘线条97A-97D对面88的边缘进行高亮显示,其中边缘线条97B和 97C分别高亮显示面88和84的相交以及面86和88的相交。类似地,边缘线条97E-97G, 利用边缘线条97C高亮显示面86的边缘,利用边缘线条97E高亮显示面84和86的相交。 边缘线条97H和971,利用边缘线条97B和97E高亮显示面84的边缘。
[0056] 当被客户端设备12的CPU 20执行时,观看应用34可操作来选择覆盖图像的相对 应部分90,并且将该相对应部分90覆盖在2D纹理渲染80上。图5示出了当观看应用34 显示通过将2D渲染覆盖有边缘线条渲染的相对应部分90而生成的复合图像102时由观看 应用34所生成的显示100。也就是说,3D对象82在纹理渲染80中进行描绘,并且边缘线 条渲染部分90被层叠在渲染80的顶端而使得边缘线条97A-97I与渲染80中所描绘的面 84、86和88的边缘对准。通常,在一些实施例中,这可以通过创建纹理渲染80和边缘线条 渲染部分90以具有相同的像素尺寸(例如,400x400、500x500、400x300等)而使得纹理渲 染80的每个像素在边缘线条渲染部分90中具有相对应的像素来实现,该边缘线条渲染部 分90为透明颜色(即,不改变或遮挡纹理渲染80中的相对应像素)或边缘线条颜色(即, 遮挡纹理渲染80中的相对应像素)。
[0057] 有利地,尽管基本渲染80进行了压缩,但是所产生的显示100以外观更为清晰的 复合图像102描绘了 3D对象82。此外,由于覆盖图像可以以GIF或PNG文件格式进行保存 而且仅是双色的,所以允许最大的无损压缩。在相同颜色像素的长的水平线条处,在PNG和 GIF文件格式中使用LZW压缩方法是特别有效的。因此,可以使得文件大小(和相对应的文 件传输时间)最小化。另外,在一些实施例中,覆盖图像的边缘线条渲染可以一可能有选择 地一在没有基本纹理渲染的情况下进行显示以呈现出仅有边缘的视图(也被称作"线框" 视图)。此外,在一个实施例中,覆盖图像在其余2D渲染之前被传输至客户端设备12(例如, 由客户端设备12下载),而使得用户可以在其余2D渲染已经被完全下载之前操控(例如, 转动)该对象。在一些实施例中,覆盖图像尤其是边缘线条颜色的透明程度是可变的(例 如,利用显示应用34的滑动块控件)以对边缘看上去有多明显进行控制。
[0058] 在一些实施例中,使用可缩放矢量图形(SVG)代替渲染像素来创建覆盖图像以实 现与利用以GIF或PNG文件格式保存的覆盖图像所获得的相同或相似的(多种)效果。还 将要理解的是,虽然以上被描述为单个图像文件的多个部分,但是覆盖图像可以均为从服 务器14传送至客户端12的个体文件。
[0059] 图6图示了在其中每个2D渲染和每个边缘线条渲染为个体文件中的图像的实施 例中进行操作的第一方面的原则。图6中的顶部行的图像描绘了一系列的六个纹理渲染 80,它们可以被观看应用34依序显示以创建多姿态3D渲染。图6中的中间行的图像描绘 了一系列的六个边缘线条渲染92A,其中每一个对应于直接处于其上方的纹理渲染80。边 缘线条渲染92A在这里被单独描绘,因为它们可能存储在个体文件中(与被划分为多个部 分90的单个文件相对)。图6中的底部行的图像描绘了一系列的六个复合图像102,它们 分别通过将顶部行中的纹理渲染80与中间行中的边缘线条渲染92A进行层叠而产生。
[0060] 在所公开的方法和系统的第二方面,添加覆盖图像以改进多姿态3D渲染的视觉 保真度。该覆盖图像是出现在每个其它2D渲染中的阴影的渲染。与以上所描述的覆盖图 像相同,第二方面中的覆盖图像是双色图像,具有透明背景和单色的阴影渲染。在一个实施 例中,阴影渲染为黑色,虽然如以上关于边缘线条所描述的也可以使用其它颜色。
[0061] 在第二方面,覆盖图像不是仅描绘对应于其它2D渲染中的单独一个的阴影,而且 还描绘对应于其它2D渲染中的每一个的阴影。就像边缘线条覆盖图像那样,阴影覆盖图像 包括图2A-2L的示例实施例中的12个阴影渲染,其中12个阴影渲染中的每一个对应于一 个2D渲染。12个阴影渲染中的每一个在覆盖图像内具有特定位置。在客户端设备12上执 行的观看应用34进行操作以针对12个2D渲染中的每一个显示覆盖图像的相对应部分而 将阴影渲染覆盖于该2D渲染之上。
[0062] 图7-9图示了使用阴影覆盖图像的概念如何针对单个2D渲染进行操作。在图7 中,单个2D纹理渲染80 (来自图3)描绘了矩形3D对象82。同样,纹理渲染80可以是从各 个角度描绘对象82的这样图像群组中的一个,使得当渲染被依序观看时渲染形成对象82 的多姿态3D渲染。图8示出了阴影覆盖图像的相对应部分112。该相对应部分112包括对 象82的阴影渲染114,其设置在透明背景116 (在图8中由剖面线118所指示)上。阴影 115在相对应部分112中由点刻区域进行描绘。
[0063] 当被客户端设备12的CPU 20执行时,观看应用34可操作来选择覆盖图像的相对 应部分112,并且将该相对应部分112覆盖在2D纹理渲染80上。图9示出了当观看应用 34显示通过将2D渲染覆盖有阴影渲染的相对应部分112而生成的复合图像120时由观看 应用34生成的显示120。也就是说,3D对象在纹理渲染80中进行描绘,并且阴影渲染部分 114被层叠在渲染80的顶端而使得阴影115与渲染80对准。一般地,在一些实施例中,这 可以通过创建纹理渲染80和阴影渲染部分114以具有相同的像素尺寸(例如,400x400、 500x500、400x300等)而使得纹理渲染80的每个像素在阴影渲染部分114中具有相对应 的像素来实现,该阴影渲染部分为透明颜色(即,不改变或遮挡纹理渲染80中的相对应像 素)或阴影颜色(即,变暗或遮挡纹理渲染80中的相对应像素)。
[0064] 有利地,尽管基本渲染80进行了压缩,但是所产生的显示120以外观更为清晰的 复合图像122描绘了 3D对象82。此外,由于覆盖图像以GIF或PNG文件格式进行保存而且 仅是双色的,所以允许最大的无损压缩。因此,可以使得文件大小(和相对应的文件传输时 间)最小化。在一些实施例中,覆盖图像尤其是阴影颜色的透明程度是可变的(例如,利用 显示应用34的滑动块控件)以对阴影看上去有多明显进行控制。
[0065] 在一些实施例中,使用可缩放矢量图形(SVG)代替渲染像素来创建覆盖图像以实 现与利用以GIF或PNG文件格式所保存的覆盖图像获得的相同或相似的(多种)效果。
[0066] 虽然以上所描述的覆盖图像被描述为其中每一个在其中包括对应于多姿态3D渲 染的所有2D渲染的区域的单个图像,但是可能针对多姿态3D渲染的每个相对应2D渲染使 用单独的覆盖图像(虽然如将会理解的,其效率较低)。
[0067] 在所公开的方法和系统的第三方面,通过将多个2D渲染组合为单个图像文件来 改进下载多姿态3D渲染所需的时间。现在参考图10,描绘了其中从36个2D渲染130创建 多姿态3D渲染的示例性实施例。当然,虽然图10的实施例从36个2D渲染130创建多姿 态3D渲染,但是如同图2A-2L中所描绘的多姿态3D渲染的情形那样,可以使用其它数量的 2D渲染。在任意情况下,在图10的实施例中,36个2D渲染130在存储在单个文件中的单 个图像132中水平排列。在图10中,虚线A和G分别指示单个图像132的最左侧边缘和最 右侧边缘,而虚线B-F则指示图像132的连续边界。也就是说,虚线B排成一行,虚线C排 成一行,而使得36个2D渲染130将形成单个水平定向的图像132。
[0068] 因此,现在转向图11,单个文件将会存储单个图像132。在图11所描绘的示例性 单个图像132中,单个图像132被划分为36个部分134,其中每个部分对应于2D渲染中的 一个。部分134被排列为跨单个水平行;也就是说,部分134被排列为行,并且每个部分134 具有等于单个图像132的总宽度的1/36的宽度。例如,如果每个部分136具有500像素的 宽度和375像素的高度,则单个图像132的总宽度为18000像素(500x36)并且单个图像 132的总高度为375像素。
[0069] 因此,代替请求并下载36个独立2D渲染中的每一个,观看应用34仅请求并下载 单个图像132。结果,有关文件大小和带宽的开销明显降低。另外,由于许多浏览器具有可 操作来每次仅下载1-4个文件的下载队列,所以消除了下载许多个体图像的问题,有
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1