三维图像处理
技术领域
本发明涉及一种在第一设备上准备目标文件的方法,该目标文件用于在第二设备上渲染(rendering)三维物体的二维图像。目标文件包括定义表示至少一个三维物体的多边形基元(polygon primitive)的数据。重新安排目标文件中的数据,以便确定渲染顺序,其中所述多边形基元可能被渲染,从而解决隐藏面问题。本发明还涉及一种移动通信终端,包括图像处理装置,用于在显示器上渲染三维物体的图像。本发明也涉及一种通过处理定义具有减少数量的顶点数据的多边形基元的数据从而渲染三维物体的二维图像的方法。本发明还涉及一种移动通信终端,包括图像处理装置,用于在能够以减少数量的顶点数据为基础显示图像的显示器上渲染三维物体的图像。
背景技术
直到最近,动画三维图形仅被应用在具有相对高处理能力的设备上,例如,在计算机辅助设计和计算机辅助制造期间在工作站或PC机上从多个角度的物体外观的生成显示、在电子视频大型游戏机(arcade game)中,或者在驾驶或飞行模拟器中。
三维图形现在也可以在相对低处理能力的设备中找到它们的痕迹,例如,移动电话、个人数字助理(PDA)和手持视频游戏机。
为了提供动画,必须以接近每秒20到30帧的速率更新图像(在一些应用中可以接受更低的速率),使观看者能够观看到连续变化的图像而不是静态图像链。
设备可以执行的,与最小可接受的帧速率相关的计算速度,限制了可被执行以生成每个图像的计算数量。
在三维动画中,必须为每个图像计算三维物体在二维上的投影。对于复杂的图像,需要进行大量的计算。
图像合成通常这样完成,即将物体表示为许多由顶点定义的多边形基元,将多边形基元投影到图像平面上,然后处理每个多边形基元,以便为投影的多边形的每个像素定义像素颜色。
渲染三维图形的主要问题是隐藏面的去除。从观察点来看,离观察者稍近的表面遮挡了后面的部分。
通常的方法是,当渲染给定的像素时,不管它位于前面(所以遮挡后面)或者后面(所以被遮挡),检测已经位于图像缓冲器中的像素(如果有的话)。因此,需要给每个像素分配一个深度值。该技术称为“z缓冲算法”。该技术在技术上是一种简单的方法,但是它在存储和处理能力方面耗费资源,因为它包括实时操作的大量的比较操作(相当于图像缓冲器中的像素数量)。
“画家算法(Painter’s Algorithm)”检查多边形的顶点坐标,并按照离观察点从远到近的顺序对多边形进行排队。然后以距离减少的顺序渲染多边形,所以最远的多边形的像素首先被写入图像缓冲器中,需要时被那些较近的多边形覆盖。然而,每次观察点改变时该技术需要重复所有多边形的排序操作,所以,需要大量的实时计算。
在一项已知技术中,多边形被看成具有两个面:一个面面向物体的内部(“后”面),一个面面向物体的外部(“前面”)。对于一个立体物体,多边形的“后”面永远不会被看到;所以只需要显示面向前的多边形。因此,在渲染图像之前确定,从观察角度来看,给出的多边形是显示其前面(外部)还是后面(内部),并且只渲染那些面向前面的多边形。这种去除后面的方法减少了隐藏面去除的问题,但是没有解决所有的问题。
还有一项已知技术,称为“二叉空间剖分”(BSP)。在该技术中,在动画之前执行一个预处理步骤,在该步骤中,在存储器中建立树型结构模型,树上的每个节点代表空间剖分平面上的一个多边形,并指向后继节点和前继节点(如果有的话)。一个节点包含严格由在剖分平面一侧的多边形组成的树,另一个节点包含剩下的。然后可以递归地对树进行处理(从离像机近的节点到远的节点),然后以从后到前的顺序提供多边形。
还有一项已知技术是多边形分解(polygon stripping),也就是将独立的三角形或多边形转换为三角形条带(strip)。在该技术中,第一个识别的三角形以顺时针或逆时针方向卷曲(winding),然后,三角形条带中所有的后来三角形交替卷曲。条带一直继续直至三角形条带越出物体的边缘或者进入已经成为另一个条带的一部分的多边形中。
一般来说,由于系统资源的大量消耗,三维图像引擎属于例如具有强能力处理器和大容量存储器的工作站的高性能系统。有限的计算能力带来的局限在不能提供最快处理器的设备中更加明显。这类设备的例子有移动电话、个人数字助理(PDA)和手持视频游戏机。所以有必要提供有效的算法以便三维实时动画图形可以被在上述设备中所具有的处理能力所处理。
发明内容
在这一背景下,本发明的目的是提供一种在第一设备上准备目标文件的方法,该目标文件用于在第二设备上渲染三维物体的二维图像,以便确定渲染顺序,其中所述三角形基元可能被渲染,以生成二维图像,其中隐藏面被去除,这允许在相对低处理能力的设备上渲染实时的三维图像。
该目的根据权利要求1而实现,其中提供一种在第一设备上准备目标文件的方法,通过处理包括定义表示至少一个三维物体的三角形基元的数据的目标文件,以确定渲染顺序,该目标文件用于在第二设备上渲染三维物体的二维图像,其中所述三角形基元可能以上述渲染顺序渲染,以生成二维图像,其中隐藏面被去除,该方法包括以下步骤:
a)将对应于所述至少一个物体的多个表面部分的多个平面三角形基元存储到一个目标文件中,其中所述多个三角形基元由根据原始顺序排列的顶点数据表示,
b)选择一个不会潜在地遮挡任何未经处理的三角形的三角形以便开始三角形条带,
c)选择一个邻居三角形以加入到所述三角形条带的最后三角形,
d)确定所选择的三角形是否可以潜在地遮挡任何未经处理的三角形,
e)如果所选择的三角形不可能潜在地遮挡任何未经处理的三角形,将所选择的三角形加入到条带中,并返回步骤c),
f)如果所选择的三角形可以潜在地遮挡任何未经处理的三角形,返回步骤b),以开始新的三角形条带,以及
g)重复步骤b)至f),直到目标文件中的所有三角形均被处理。
这样,在三角形条带中目标文件得以重新安排,能够以生成的顺序显示,其中解决了隐藏面问题,也就是说,接收到这样准备的目标文件的设备可以以其存储在目标文件中的顺序简单地显示三角形条带和三角形,而不需要进行计算以解决隐藏面问题。这样,通过对顶点数据进行预排序,使得在三角形条带中的三角形基元的渲染顺序是正确的,也就是说,不管观察方向和像机位置,隐藏表面都正确地去除,使得图像处理装置执行的计算量得以大幅度的降低。这样,第二设备仅需要计算物体的渲染顺序,然后,对于动画的每一帧,以其存储在目标文件中的顺序渲染物体的前向三角形基元。与例如Z-缓冲方法相比较,由于不需要对像素的以前的Z值进行比较,所以可以获得所需计算量的大幅降低。
优选地,所述方法的步骤b)包括一个启发式的搜索以便优选地通过选择不具有许多未经处理的邻居的三角形识别出用以启动一个可以潜在地允许形成长条带的条带的那些三角形。
对于一些物体,由于冲突的遮挡优先顺序,没有其中三角形基元可以放置并且对于所有的观察方向均可以正确地去除隐藏面的顺序。这样,就需要将那样的物体分为二个物体,并且预排序每个这样生成的物体的三角形基元。
优选地,所述方法在所述第一设备上还包括步骤:
如果在步骤b)中不可能找到一个不遮挡其它仍然未经处理的三角形的三角形,就将目标文件分为两个文件。
优选地,使用一个剖分平面对物体进行分割,这样至少一个其可以潜在地遮挡的未经处理的三角形的三角形留在了另一侧。
优选地,使用一个任意的未经处理三角形的平面,并且该三角形在分割平面的外侧被关联,这样,将所有其可能覆盖的多边形留在了另一侧。
当将多边形分为两套时,可能必须对横跨切割平面的多边形进行切割。通常,最好这样将多边形分割为两套,使得两套中的多边形数量尽可能的相等。
优选地,所述方法还包括在目标文件中确定三角形的前侧和三角形平面,其中,确定所选择出的三角形是否可以遮挡任何未经处理的三角形的确定步骤包括:
g)确定所选择的三角形在任何未经处理的三角形的平面的前侧是否具有一个或多个的顶点,以及
h)确定在步骤g)中识别为肯定的任何未经处理的三角形在所选择的三角形平面的后面是否具有一个或多个顶点。
所述方法在所述第一设备上在步骤b)之前还可以包括下述步骤:
i)确定物体在物体空间的XY平面中是否对称,
j)存储所确定的对称平面,以及
k)在目标文件中去除确定的对称平面的一侧所有的顶点,以及对物体空间的XZ平面和YZ平面重复步骤i)至k)。
优选地,所述方法包括步骤:
l)在步骤f)或k)之后将所述目标文件从所述第一设备转移到第二设备,并且在所述第二设备上存储目标文件。
优选地,第一设备包括例如用在PC机或工作站中的较高性能的图像处理装置,优选地,所述第二设备包括例如用在移动通信终端或PDA中的较低性能的处理装置。
这样,图像渲染过程的计算密集部分可以预先在具有高处理能力的设备上执行,如工作站或PC机,动画三维图形可以实时地在如移动电话、PDA或手持视频游戏机等具有相对低处理能力的设备上渲染。
本发明的另一个目的在于提供一种在所述第二设备上显示通过上述方法得到的目标文件的方法。该发明目的根据通过提供这样一种方法的权利要求8得以实现,包括步骤:
m)确定观察方向,
n)确定物体顺序,优选地使用画家算法以及在所述第二设备上显示所述物体。
优选地,所述方法还包括步骤:
o)挑选出所有的相对于所述视觉方向面向后面的三角形。
所述方法最好包括步骤:
p)重新找回存储在目标文件中的对称平面,
q)创建目标文件中的顶点数据的副本,所述顶点数据的副本具有与原来的顶点数据相同的顺序并且存储在目标文件中,在原来的顶点数据之后,以及改变在分别与重新找到的所复制的顶点的对称平面相垂直的轴上的顶点的值的符号。
仅在对称平面为x=0、y=0或z=0时,才可以通过改变坐标的符号重新创建顶点。如果平面为,例如x=1,并且存在顶点0,1,2,通过改变x分量的符号不能获得映射对。相反,必须相对于坐标x=1进行映射,映射对应该为2,1,2。所以所述方法可以包括转换和旋转物体步骤以便使得对称轴与x=0,y=0或z=0相匹配。在渲染操作期间,在整个物体上执行相反的步骤。
所述方法还可以包括步骤:
r)以与其创建时相同的顺序显示三角形条带,
s)以与其被加至三角形条带的相同的顺序显示在三角形条带中三角形。
这样,可以按照它们存储入目标文件,直接显示三角形,不管观察方向和像机位置,第二设备不需要执行计算以解决隐藏面问题。
优选地,第二设备包括如用在移动通信终端或PDA中的较低性能的处理装置,最优选地,第二设备为移动电话。
优选地,由设备的主CPU执行图像渲染过程,并且所有另外的图像渲染装置都内含软件。
本发明的另一个目的是提供一种能够显示实时渲染的动画三维图形的移动通信终端。这一目的根据权利要求16得以实现,即提供一种移动通信终端,包括:
用于存储包含三角形条带的目标文件的装置,
用于以创建的顺序显示所述三角形的装置,优选地,该顺序对应于三角形条带在目标文件中存储的顺序。
可以与其加至三角形条带时相同的顺序显示在三角形条带中三角形,优选地,该顺序对应于在三角形条带中其存储的顺序。
优选地,用二叉空间剖分方法确定物体的渲染顺序。目标文件的渲染顺序基于当前的观察方向和距离排序,使远端的物体的首先被渲染。
所述移动通信终端可以包括用于挑出相对于观察方向面向后面的所有三角形的装置。
所述移动通信终端可以进一步包括:
用于重新找回在目标文件中存储的对称平面的装置,以及
用于复制存在于目标文件中的所有顶点数据并为新创建的三角形改变在与各个对称平面垂直的轴上的顶点的值的符号的装置。
优选地,由设备的主CPU执行图像渲染过程,并且所有另外的图像渲染装置都内含软件。
本发明的另一个发明目的在于提供一种在第一设备上准备目标文件的方法,通过处理定义表示至少一个三维物体的三角形基元数据,该目标文件用于在第二设备上渲染三维物体的二维图像。该方法减少了所需的计算量,所以允许在相对低的处理能力的设备上进行三维图像的渲染。该发明目的根据权利要求22得以实现,即提供这样的一种方法,在所述第一设备上包括步骤:
a)存储对应于所述至少一个物体的多个表面部分的多个平面三角形基元,其中所述多个三角形基元以顶点数据表示,
b)确定所述三维物体的对称平面,
c)把对称平面数据存储到目标文件中,
d)从每个所述对称平面的一侧中挑选出所有的顶点数据,
e)将所述目标文件从所述第一设备中转移到所述第二设备,以及
f)通过对关于所述对称平面的所述顶点数据进行映射在所述第二设备上显示所述图像并且渲染所述图像。
优选地,忽略与物体坐标系统的X、Y或Z轴均不正交的对称平面。做为选择,可以旋转或转换物体以便使对称轴与平面X=0、Y=0或Z=0的一个或更多个排列成行。
第一设备可以包括例如用在PC机或工作站中的更高性能的图像处理装置,以及所述第二设备可以包括例如用在移动通信终端、PDA或手持视频游戏机中的较低性能的处理装置。
优选地,第二终端为移动电话。
本发明的另一个目的在于提供一种能够使用减少的计算量显示三维物体的二维图像的移动通信终端。这一目的根据权利要求26得以实现,即提供一种移动通信终端,包括用于在显示器上渲染三维物体的图像的图像处理装置,用于存储顶点数据的装置,用于存储对称平面数据的装置以及用于在对称平面中映射顶点数据的装置。
根据本发明方法和移动通信终端的更进一步的目的、特征、优点和属性将从详细描述中变得清楚。
附图说明
在下面本说明书的详细说明部分,参照附图中所示的实施方式,将更加详细地解释本发明,其中:
图1表示三角形的前面,
图2表示在第一设备上创建三维物体的目标文件的两个阶段的流程图,
图3表示通过去除映射的顶点利用减少的顶点数据创建目标文件的步骤的详细流程图,
图4表示在第一设备上创建三角形条带的步骤的详细流程图,
图5表示确定是否所选择的三角形可以潜在地遮挡未经处理的三角形的过程的详细流程图,
图6表示在第二设备上将三维物体显示为二维图像的步骤的流程图,
图7表示恢复在图3所示的步骤中去除的三角形的步骤的详细流程图,
图8表示移动电话的方框图。
具体实施方式
三维图形系统提供一种虚拟的三维(3-D)环境,其中物体、光源和视点位置可以在想象的三维空间中进行处理。该视点位置提供通往虚拟三维世界的窗口,经常被称为“世界空间”。这个世界空间本身仅以定义三维坐标和其它如颜色和反射率的变量的数据形式存在。在想象的窗口上出现的二维图像必须在一种称为渲染的过程中通过对三维图像数据进行处理而创建。
已知系统中,三维空间中的物体由该物体表面上所选择的点的坐标位置表示。
然而,渲染包括将图片元素值分配至图像的二维区域。所以,通过有效地用直线连接,这些坐标点被转换进想象的区域中,以便提供由若干顶点定义的平面三维网和二维三角形。本发明将通过使用三角形进行说明,但是本领域的读者应该理解所述的技术也可用于其它的平面多边形。
图片元素值在三角形连着三角形(triangle-by-triangle)的基础上生成,直到整个物体都已经被分成格状,也就是被分割成三角形。这样生成的顶点数据以原有的顺序存储在目标文件中。
三角形以定义标识三角形前面(立体物体总是具有一个前面和一个后面,后者永远不能被看到)的法向向量的方式保存。“前”面由与三角形表面正交的向量定义,该向量的方向(也就是前面的方向)由通过三角形三个顶点的右手规则(或者,可选地,左手规则)确定,通过三个顶点的顺序由它们存储入三角形数据结构中的顺序确定。例如,在图1中,三个点22,23和24确定法向向量25的方向,因此,三角形21的侧被定义为前面26。法向向量25,例如,被沿三角形边缘的两个向量的向量积所确定。上述步骤均在工作站、PC机或类似的高性能计算机上执行。
由渲染过程生成的图片元素值保存在工作站上。为了在显示器上显示三角形时维持立体三维物体的幻觉,重要的是以一种确保遮挡它们的三角形之前先渲染被遮挡的三角形的方式对三角形进行排序。三角形的实时排序在具有相对低性能的硬件用于处理数据如移动电话上并不可行。在现有技术中,这个问题部分地通过准备预定的渲染顺序得以解决,然而,该渲染顺序会随着观察方向或视点位置的改变而改变。正如这里将要说明的,根据本发明的技术克服了这个问题。
这里使用的术语“物体”包括单个物体,也包括多个单个物体的集合,只要该集合中的物体在动画的过程中互相之间不发生移动,例如,桌子和旁边的花盘和椅子如果它们之间不相互移动就可看作为一个物体。如果在动画的过程中,椅子移动了,它就不能和桌子作为同一个物体。
图2表示在工作站或其它具有很强计算能力的计算机(图中未标出)上提供三维图形环境的步骤。首先,准备定义物体的数据。这样,在步骤35,建模第一个物体。类似地,在步骤40,建模第二个物体,这样一直到步骤45,建模第N个物体。参考其自已的坐标集建模每个物体,该坐标集经常被作为其自已的建模空间。这样,每个物体数据集定义了一个形状,在图形环境中渲染所述形状所需要数据以顶点数据的形式存入目标文件中。
下个阶段包括步骤50、52、55和60,这组成了预处理阶段部分。在步骤50,读取目标文件,该目标文件以三角形顶点的形式定义了物体的形状和三角形表面特征。
在步骤52,通过处理由目标文件定义的数据创建三角形条带。三角形条带通过这样的方式创建,以便在所有可能的观察方向上解决隐藏表面问题,也就是说,使得目标文件具有隐藏表面去除容忍性(HSR容忍性),从而当创建三角形条带时,不需要去在意解决隐藏面问题,不管怎样的观察方向和像机位置。通常当满足上述标准时以这种方式处理整个目标文件是可能的,然而,有时不可能以这种方式为整个物体创建三角形条带,因为在物体的三角形之间的所需的渲染顺序中存在冲突。在这种情况下,将物体分割为两个新的物体,像其它物体一样单独地处理这些新的物体。
在下一个步骤即步骤55中,判断物体是否具有对称平面(该信息通常在建模过程之后可以从目标文件中得到)。去除位于对称平面的一侧的所有三角形,以及,如果已经没有了,就将对称平面存到目标文件中。
可能许多物体需要进行上述步骤,因此在步骤60就提问是否还需要处理另一个物体。当回答是肯定的,重复步骤50、52和55,直到处理完所有的物体。所有的步骤35至60在第一设备上完成,典型的该第一设备为具有强大图形处理能力的装置的工作站,一旦完成了对所有目标文件的处理,将它们传送到第二设备上以便显示,该第二设备具有稍低的图形处理能力,其典型地为移动终端,在本实施方式中为移动电话1。
图4为更详细地对图2中的步骤52进行说明的流程图。在步骤76中,读取物体的所有三角形1-n的顶点数据,从顶点的数量、三角形的数量、顶点数据和三角形数据开始。在步骤77中,基于顶点数据,一个接一个地计算每个三角形1-n的三角形平面。
在步骤78中,通过选择不遮挡任何未经处理的三角形开始新的三角形条带。第一个三角形的选择可以以一种贪婪的方式(greedystyle)进行,即简单地在未经处理的三角形集中选择第一个三角形。
根据本发明的可选实施方式,可以使用启发式搜索技术来识别那些潜在地遮挡最小数量的保留的未经处理的三角形的三角形,例如,通过选择不具有许多未经处理的邻居的三角形。以这样识别出的三角形开始一个新的三角形条带将导致每个物体的更少和更长的三角形条带。
有多个已知技术可以执行这样的启发式搜索,所以在这里就不对它们进行详细描述了。
将已经选择出来以开始三角形条带的三角形与未经处理的三角形集中的三角形进行比较以便判断所选出的三角形是否会潜在地遮挡任何未经处理的三角形。下面有参照图5对执行这一判断的过程进行的描述。
在步骤80中,选择出一个将被加入到三角形条带中的邻近的三角形。然后在步骤81中将该选出的三角形与未经处理的三角形集中的三角形进行比较以便判断所选出的三角形是否会潜在地遮挡任何未经处理的三角形。下面有参照图5对这一判断过程进行的进一步描述。如果步骤81中的判断结果为否,则在步骤85中将所选出的三角形加入到条带中。然后在步骤86中从未经处理的三角形集中去除所选出的三角形。在步骤87中,询问未经处理的三角形集是否为空。如果在步骤87中提出的问题的回答为是,那么目标文件中的所有三角形已经被处理了,并且向步骤60给出控制(图2)。如果在步骤87中提出的问题的回答为否,那么向步骤80给出控制,选择一个新的邻居三角形加入到三角形条带中。
如果步骤81中提出的问题的回答为是,在步骤83中检测冲突,也就是说,检测是否存在遮挡循环,即当第一个三角形会潜在地遮挡第二个三角形,第二个三角形会潜在地遮挡第三个三角形,第三个三角形会潜在地遮挡第一个三角形。这样就不可能创建一个目标文件使得其中的渲染顺序对于所有可能的观察方向都是正确的。如果冲突检测为否,在步骤78中开始一个新的三角形条带。如果冲突检测为是,就用二叉空间剖分技术对物体进行分割,例如,在最近选出的三角形的表面上将物体分割为二部分。然后向步骤52给出控制(图2),并且同任何其它的物体的一样对该两个“新”物体进行处理。通过判断是否可以选出不潜在地覆盖任何其它未经处理的三角形的三角形进行冲突检测。如果这一判断为否,就需要对物体进行分割。
正如图5中的流程图所示的,以步骤91开始,可以将选出的三角形与未经处理的三角形进行比较,在步骤91中,参数X的值设置为1,参数Y的值设置为等于未经处理的三角形集中三角形的数量。
在步骤92中,询问在未经处理的三角形集中的三角形X的平面的前面,选择的三角形是否具有一个或更多的顶点。如果步骤92中的回答为是,在步骤93中询问在所选择的三角形的平面的后面,三角形X是否具有一个或更多个顶点。如果步骤93中的回答也为是,就向步骤83给出控制(图4)。
如果在步骤92或93中的回答为否,在步骤94中将参数X的值加1,并且在步骤95中询问参数X的值是否等于参数Y的值。当步骤95中提出的问题的回答为否时,重复步骤92、93、94和95直到步骤95中提出的问题的回答为是。然后向步骤85给出控制以将所选出的三角形加至三角形条带。
重复上述过程直到未经处理的三角形集为空,并且目标文件的格式满足:其中三角形的排序是这样的,即不需要解决隐藏表面问题而将其显示。另外,三角形被安排在三角形条带中,所以显示物体的计算量进一步得以降低。
下一个步骤即步骤55,对本实施方式来说并不是必须的,在图3中的流程图中对其进行了详细的描述。在步骤64中,对物体是否关于XY平面对称进行判断。这个数据通常可从目标文件中得到,特别当使用图形程序等创建目标文件时。在目标文件不包括这样的数据的特殊情况下,例如,因为目标文件反映一个扫描物体,就有可能通过假定一个Z=0的对称平面识别对称平面,并且用一个正的Z值为每个顶点检测是否存在具有与Z值相同但为负的相同的顶点,重复对Y=0和X=0的对称平面进行同样的操作。虽然没有显示,也可能包括旋转和变换物体的步骤,从而任何对称轴与X=0、Y=0或Z=0平面的一个或多个排列成行。
当存在关于XY平面的对称时,在步骤65中将对称平面存储到目标文件中,在步骤66中将具有负Z轴的值的所有顶点从目标文件中挑选出来。这里,重新排序顶点索引以便对称平面下的每个映射顶点跟在在对称平面以上的其对端的后面,然后,将对称平面以上的顶点作上标记从而使它们具有映射的副本。
步骤65之后,或者当在XY平面中没有检测到对称时,在步骤67中判断物体是否在XZ平面上对称。
当在XZ平面中存在对称时,在步骤68中将对称平面存到目标文件中,在步骤69中将具有负Y轴的值的所有顶点从目标文件中挑选出来。
步骤69之后,或者当在XZ平面中没有检测到对称时,在步骤70中判断物体在YZ平面中是否对称。
当在YZ平面中存在对称时,在步骤71中将对称平面存到目标文件中,在步骤72中将具有负X轴的值的所有顶点从目标文件中挑选出来。
步骤72之后,或者当在YZ平面中没有检测到对称时,将控制转移到图2中的步骤55。根据物体的对称平面的数量,这样,在目标文件中顶点数据的数量可以减少接近8倍。在实践中,几乎所有用在计算机图形中的物体具有至少一个、经常为二个对称平面,这样可以使顶点数据的数量减少2倍到4倍。将动画3-D图形存储到例如图8中所示的移动电话1中时这尤为重要,因为该移动电话1的存储容量相对有限。
当在步骤60中作出所有的物体1-N已经这样被处理过的结论时,就可以将目标文件从工作站传送到移动电话1以便显示。
从工作站到移动电话的数据传送可以通过IR信号(IrDA)或RF信号,(蓝牙)通过空中作为消息(SMS或MMS)、电缆、本地(在生成处)或者任何其它适合的媒介。
正如图6中所示的,在步骤100中将目标文件1-N装载到移动电话上并存储在移动电话1的随机存取存储器(RAM)17上(参考图8)。移动电话配备有处理器(CPU)10,其能够将数据写入RAM17及从RAM17读出数据。CPU10控制与麦克风14和扬声器15相连的数字信号处理器12。移动电话1还配备有用户识别模块(SIM卡)16。RF收发电路18也与CPU10相连接。内含软件的3-D引擎20驱动LCD或等离子显示屏30。
由于在步骤52中已经减少了工作站上目标文件1-N中的三角形的数量,数据量已经足够小,从而可以存在移动电话1的相对有限容量的RAM17中。目标文件是以适当的渲染顺序(HSR容忍性)准备的,这样就可能在确定物体顺序之后立即进入渲染阶段。在步骤101(图6)中接收主要定义光线和视觉参数的输入指令。随即,在步骤102中确定物体的渲染顺序,优选地,通过使用二叉空间剖分技术。在步骤103中读取要渲染的第一物体(大部分被遮挡)的数据。在步骤104中,存储从对称表面的一侧所去除的三角形。该过程在图7所示的流程图中有详细描述。
在步骤120中,询问在目标文件中是否存储有XY表面中的对称平面。如果步骤120中所提问题的回答为肯定,然后在步骤122中通过复制存在于目标文件中的所有顶点数据并对新创建的顶点改变Z轴值的符号创建新的顶点集,从而恢复先前被去除的顶点,同时控制转移到步骤124。如果步骤120中的回答为否,控制直接转移到步骤124。
在步骤124中,询问在目标文件中是否存储有XZ表面中的对称平面。如果步骤124中的回答为肯定,在步骤126中通过复制存在于目标文件中的所有顶点数据并在新创建的顶点上改变Y轴值的符号创建新的顶点集,从而恢复先前被去除的顶点,同时控制转移到步骤128中。如果步骤124中的回答为否,控制就直接转移到步骤128中。
在步骤128中,询问在目标文件中是否存储有YZ表面中的对称平面。如果步骤128中的回答为肯定,在步骤130中通过复制存在于目标文件中的所有顶点数据并在新创建的顶点上改变X轴值的符号创建新的顶点集,从而恢复先前被去除的顶点,同时控制转移到步骤105中(图6)。如果步骤128中的回答为否,控制就直接转移到步骤105中(图6)。这样,在步骤52中在工作站上的目标文件中去除的所有顶点得以重新恢复。
在步骤105中,确定给定三角形的预定义的前面是否在当前观察方向上是可见的。这里,通过计算观察方向向量和各个三角形的法向向量的点积,比较目标文件中三角形1-n的前面的方向与观察方向。当该点积为负数时将所述三角形挑选出来,因为其前面在当前观察方向上不可见。这样,统计上,三角形的数量减少了50%。
作为选择,一种通常更加准确,经常甚至更快(因为不需要计算法线,并且朝向像机方向因每个三角形而变化)的检测后面三角形的方法是投影后计算其在屏幕上的面积。如果屏幕面积为负值,则该三角形为后面的。
在步骤106中,使用矩阵向量相乘将三角形顶点从建模空间(也就是目标文件的参照坐标系统)转换到设备空间(也就是显示器或屏幕坐标系统)。顶点转换的方法和算法在本领域中是公知的,所以这里就不详细进行描述了。
当在步骤106中顶点已经被转换时,在步骤107中将顶点数据发送至显示器以便观看。在步骤107中,以其被创建的顺序渲染三角形条带,在本实施方式中其对应于它们在目标文件中存储的顺序。三角形以其加至各自的三角形条带的顺序显示,在本实施方式中其对应于其在目标文件中存储的顺序。因此,可以以其存储在目标文件中的顺序显示三角形,而不需要在显示三角形时解决隐藏面问题。
在步骤108中,询问是否另一个物体要显示。如果步骤108中的回答为肯定,控制转移至步骤103,在步骤103中读取下一个目标文件的数据。这样,重复步骤103至107直至所有的物体已经显示。当所有的物体已经显示时,显示下一帧并且控制给出至步骤101以便接收下一帧的输入指令。
根据本发明的另一个实施方式,如图3的流程图中所示,将映射的顶点去除,但是没有分解多边形,也就是说,省略了图2中的步骤55。这样,获得了减小了大小的目标文件,其可能可以很容易地存储在移动电话中,但是当显示三角形时需要解决隐藏面问题。这里,可以在移动电话1上使用画家算法或Z缓冲技术,尽管移动电话处理能力的限制将会相对快地达到。
本发明的有效率的技术允许在具有相对有限的图像处理硬件的设备上的实时动画3-D图形,该设备如移动电话、PDA和手持视频游戏机。所以本发明不限于在优选实施方式中描述的设备(带有SIM卡的移动电话),本发明可以应用于任何其它类型的移动电话或上述设备。
虽然为了说明的目的已经对本发明进行了详细的描述,但是应当理解这样的描述仅为该目的,在不偏离本发明的范围的情况下,本领域的技术人员可以进行各种变形。