CN101553847A - 用于在对象空间中执行用户定义剪辑的方法和装置 - Google Patents
用于在对象空间中执行用户定义剪辑的方法和装置 Download PDFInfo
- Publication number
- CN101553847A CN101553847A CNA2007800331619A CN200780033161A CN101553847A CN 101553847 A CN101553847 A CN 101553847A CN A2007800331619 A CNA2007800331619 A CN A2007800331619A CN 200780033161 A CN200780033161 A CN 200780033161A CN 101553847 A CN101553847 A CN 101553847A
- Authority
- CN
- China
- Prior art keywords
- montage
- space
- matrix
- object space
- apex coordinate
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/30—Clipping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
Abstract
一种用于在对象空间中执行和处理用户定义剪辑以减少剪辑操作所需的计算的数目的方法和装置。所述方法和装置还将顶点坐标的模型视图变换与投影变换进行组合。对象空间中的用户定义剪辑通过避免在没有照明的情况下产生眼坐标来提供较高的性能和较少的功率消耗。所述装置包含驱动器,其用于所述对象空间中的所述用户定义剪辑,以在照明功能被停用时在对象空间中且在所述照明功能被启用时在眼空间中执行双模式用户定义剪辑。
Description
技术领域
本发明涉及三维图形处理。
背景技术
一般来说,三维(3D)图形应用程序在二维(2D)空间(例如,显示器屏幕)中显示3D对象。2维图形中的像素具有位置、颜色和亮度的特性。另一方面,3D像素增加了深度特性,其指示点在假想Z轴上所处的位置。当每一者具有其自己的深度值的3D像素被组合时会产生纹理。
将关于3D对象的信息转换成可显示的位图被称为渲染,且要求相当大的存储器和处理能力。在过去,3D图形仅在强大的工作站上可用,但现在3D图形加速器在个人计算机(PC)中是常见的。图形加速器含有存储器和专用微处理器以处理3D渲染操作中的许多操作。用于桌上型计算机的开放式(Open)(开放式图形库)为产生3D和2D计算机图形的写入应用程序界定应用程序编程接口(API)。API包含用于从图元绘制复杂的三维场景的数百个功能。
用户定义的剪辑平面允许对非可见多边形的高效早期剔除,从而增加性能并节省功率。用户定义剪辑通常在PC图形系统中的硬件中进行。用户定义剪辑是手持式装置中相对较新的特征。开放式ES是桌上型计算机开放式GL的子集,其创建软件与图形之间的接口。此外,用户定义剪辑在移动电话中的软件中或硬件中进行。如果用户定义剪辑在软件中进行,那么用户定义剪辑通常在眼坐标中进行。顶点(顶点坐标)首先从对象空间变换到眼空间中。对照眼空间中的用户定义剪辑平面来测试经变换的顶点。将顶点装配成图元。如果图元部分位于剪辑平面的半空间中,那么所述图元将由所述剪辑平面剪辑。然而,需要大量计算来将大量顶点从对象空间变换到眼空间。
举例来说,在例如开放式ES或开放式的3D图形应用程序中,用户可指定多个剪辑平面。剪辑平面是3D空间中的任意平面。每一平面界定一半空间。任何对象或对象的任何部分如果不位于所述半空间中,那么将被剪辑。将对照所有剪辑平面来测试场景中的任何对象。此过程被称为用户定义剪辑。另一类型的剪辑被称为平截头体剪辑(frustum clipping),其针对眼平截头体而剪辑对象。本文将不描述平截头体剪辑。
当前的挑战是使用在手持式3D成像装置中找到的3D软件引擎来实施用户定义剪辑而不具有较弱的性能。手持式3D成像装置具有有限的电池电力和处理能力。需要大量计算来将许多顶点从对象空间变换到眼空间,这些计算降低了3D成像装置的性能。
在图1所示的眼空间中的常规用户定义剪辑过程(例如由开放式ES引擎提供)中,使用步骤S24处的模型视图变换过程来变换步骤S22的表示为V_对象的顶点对象坐标。在步骤S24处,将顶点对象坐标V_对象转换到眼空间中以形成表示为V_眼睛的顶点眼坐标,其中使顶点对象坐标V_对象乘以用于坐标的模型视图矩阵M。顶点眼坐标V_眼睛在步骤S28(如果是多边形)、S30(如果是线段)和S32(如果是点)中的一者处经受图元装配。在步骤S28处针对多边形以及在步骤S30处针对线段的图元装配进一步在步骤S34处经受平坦着色过程(flat shading process)。如果着色模型是平坦着色,那么将用三角形或线的最后一个顶点的颜色来代替每一顶点的颜色。来自步骤S34的平坦着色过程或步骤S32的点装配过程的输出在步骤S40处经受眼空间中的用户定义剪辑过程(如果启用的话)。稍后将详细描述启用步骤S40处的剪辑过程。
图元可以是多边形、线段或点,且可使用图1所示的常规用户定义剪辑过程来对图元进行剪辑。可在步骤S40处针对用户剪辑平面来对这些图元进行剪辑。在剪辑坐标中,步骤S44的视见体积由以下不等式界定:
-wc≤xc≤wc
-wc≤yc≤wc
-wc≤zc≤wc
其中xc、yc和zc是剪辑坐标。
视见体积可进一步受用以产生剪辑体积的多达n个用户定义剪辑平面限制,其中n取决于实施方案。每一用户定义平面指定一半空间。剪辑体积是所有此些半空间与视见体积的交集(步骤S44)。应注意,在普通的开放式GL中,用户剪辑可在眼空间中或在投影空间中进行。然而,步骤S44假定用户剪辑在投影空间中进行。然而,如果在步骤S38处未启用用户定义剪辑平面,那么剪辑体积是步骤S44处的视见体积。因此,来自平坦着色过程S34(如果图元是多边形或线段)或步骤S32的点装配过程的输出经受步骤S42处的投影变换而不经受步骤S40的用户定义剪辑过程。
在步骤S12处用函数
剪辑平面(平面,eqn[4])
来指定用户定义剪辑平面,其中第一自变量(平面)的值是符号常数剪辑_平面i,其中i是0与n-1之间的整数,指示n个用户定义剪辑平面中的一者;且eqn[4]是四个单精度浮点值的阵列。(开放式要求双精度浮点。)所述四个单精度浮点值是步骤S14的平面等式P在对象坐标中的系数,表示为p1、p2、p3和p4。在步骤S18处,为剪辑平面P存储表示为Mc的当前模型视图矩阵。在步骤S20处,经由逆矩阵过程获得或计算出用于剪辑平面P的当前模型视图矩阵Mc的逆矩阵。所得逆矩阵表示为Inv_Mc。当在步骤S16处指定这些系数时,经由乘法将Inv_Mc应用于这些系数,从而如下得出P_眼睛:
P_眼睛=(p′1p′2p′3p′4)=(p1p2p3p4)Mc-1
其中Mc为当前模型视图矩阵;Mc-1为Inv_Mc;所得平面等式在Mc为奇异的情况下是不明确的,且在Mc为病态(poorly-conditioned)的情况下可能是不准确的;且P_眼睛为步骤S16(后面接着是步骤S40)处的眼坐标中的平面等式系数。在步骤S40处,具有满足
P_眼睛T*V_眼睛>=0或
(p′1*xe+p′2*ye+p′3*ze+p′4*we)>=0
的眼坐标(xeyezewe)T的所有点均位于由平面界定的半空间中;不满足此条件的点不位于所述半空间中,其中T为转置;且*表示矩阵或向量的乘法。
在步骤S36处,可用启用命令来启用用户定义剪辑平面。或者,可用停用命令来停用剪辑。在步骤S38处,作出启用还是停用用户定义剪辑平面的确定。如果所述确定为“是”(意为启用),那么来自平坦着色过程S34(如果是步骤S28的多边形或S30的线段装配)或点装配过程S32的输出在眼空间中经受步骤S40处的剪辑。任一命令的自变量的值为剪辑_平面i,其中i是0与n之间的整数,指定i的值会启用或停用具有指数i的平面等式。常数服从剪辑平面I=剪辑平面0+i。
关于步骤S32,如果考虑中的图元是点,那么在图元位于剪辑体积内的情况下,剪辑使所述图元通过而不对其进行改变;否则丢弃所述图元。如果图元是步骤S30处的线段,那么在图元完全位于剪辑体积内的情况下,剪辑不对所述图元做任何处理,且在所述图元完全位于所述体积外的情况下丢弃所述图元。如果线段部分位于所述体积内且部分位于所述体积外,那么对所述线段进行剪辑,且为一个或两个顶点计算新的顶点坐标。经剪辑线段端点既位于原始线段上也位于剪辑体积的边界上。
步骤S40处的剪辑过程针对每一经剪辑顶点得出一值0≤t≤1。如果经剪辑顶点的坐标为D,且原始顶点的坐标为D1和D2,那么t由以下等式给出
D=tD1+(1+t)D2
其中t的值在颜色和纹理坐标剪辑等中使用。
如果图元是步骤S28处的多边形,那么在图元的每一边缘均完全在剪辑体积内的情况下使所述图元通过,且否则剪辑或丢弃所述图元。多边形剪辑可能导致多边形边缘被剪辑,但因为必须维持多边形连接性,所以这些经剪辑的边缘由沿剪辑体积的边界的新边缘连接。因此,剪辑可能要求将新的顶点引入多边形中。边缘旗标与这些顶点相关联,使得通过剪辑而引入的边缘被标记为边界(边缘旗标真(TRUE)),且使得多边形的在这些顶点处被切断的原始边缘保持其原始旗标。
如果恰好多边形与剪辑体积的边界的边缘相交,那么经剪辑多边形必须包含位于此边界边缘上的点。此点必须位于所述边界边缘与原始多边形的顶点的凸包(convex hull)的交集中。
顶点具有带不同正负号的wc值的线段或多边形可在剪辑之后产生多个经连接组件。一些实施方案不被要求处理此情形。即,仅图元的位于wc>0的区域中的部分需要通过剪辑来产生。
以剪辑平面渲染的图元必须满足补充标准。假设启用具有系数(p′1p′2p′3p′4)的单个剪辑平面(或许多以类似方式指定的剪辑平面),且绘制一系列图元。接下来,假设以系数(-p′1-p′2-p′3-p′4)重新指定原始剪辑平面(且对应地针对任何其它剪辑平面),且再次绘制所述图元。在此情况下,图元不得丢失任何像素,也不能在那些图元被剪辑平面切割的区域中两次绘制任何像素。
剪辑需要平面等式(每一者由四个单精度浮点系阵列成)和指示这些用户定义平面等式中的哪些等式被启用的对应位。在初始状态下,所有用户定义平面等式系数均为零,且所有平面均被停用。
鉴于上文对眼空间中的用户定义剪辑过程的描述,需要减少具有3D图形软件和/或硬件引擎的3D成像装置中对用户定义剪辑的计算。
还需要在对象空间中执行用户定义剪辑以避免将顶点从对象空间变换到眼空间中。3D游戏内容处理中的多数情况要求用来将少数用户定义剪辑平面从眼空间变换到对象空间的计算少于用来将许多顶点从对象空间变换到眼空间的计算。
此外,需要避免在照明被停用的情况下产生眼坐标。
发明内容
鉴于上述内容,本发明的目标是在对象空间中提供用户定义剪辑,其在具有有限电力容量的移动或手持式通信或计算装置中消耗较少电力。
本发明的另一目的是在对象空间中提供用户定义剪辑以避免将顶点从对象空间变换到眼空间中,从而减少眼空间中的用户定义剪辑通常所需的计算的数目。
本发明的另一目的是在3D游戏内容中的多数情况下提供与将许多顶点从对象空间变换到眼空间所需的计算相比较少的用来将少数用户定义剪辑平面从眼空间变换到对象空间的计算。
本发明的上述和其它目的是通过一种对象空间用户定义剪辑驱动器来实行的,所述对象空间用户定义剪辑驱动器包括:图元装配模块,其可操作以对对象空间中的顶点坐标进行图元装配;以及用户定义剪辑模块,其可操作以使用所述对象空间中的剪辑平面(P_对象)和所述对象空间中的所述经图元装配的顶点坐标来在所述对象空间中创建经剪辑的顶点坐标。
通过一个向量到矩阵乘法来将对象空间中的经剪辑和未经剪辑的顶点坐标从对象空间直接变换到投影空间中。当照明被停用且用户定义剪辑被停用或启用时,可将所述两个变换(模型视图和投影)组合成一个4×4矩阵而不是两个4×4矩阵。
驱动器可以软件、硬件或硬件与软件的组合的形式实施。
或者,直到紧接投影变换之前,对象空间中的经剪辑顶点坐标才从对象空间变换到眼空间。
本发明的另一方面是提供一种可由处理器执行且具有程序指令的程序代码,所述程序指令在执行时可操作以对对象空间中的顶点坐标进行图元装配。所述代码还可操作以执行用户定义剪辑以使用所述对象空间中的剪辑平面(P_对象)和所述对象空间中的所述经图元装配的顶点坐标来在所述对象空间中创建经剪辑的顶点坐标。
本发明的另一方面是提供一种3D图形引擎,其包括:对象空间用户定义剪辑驱动器,其可操作以在照明功能在所述3D图形引擎中被停用时,对对象空间中的顶点坐标执行用户定义剪辑。所述3D图形引擎还包含图形核心,其用于将对象空间中的经剪辑的顶点坐标变换到投影空间中。
本发明的又一方面是提供一种可由处理器执行的具有程序指令的程序代码,其中在执行时所述程序指令可操作以在照明被启用时对眼空间中的顶点坐标执行顶点坐标处理,且在照明被停用时对对象空间中的顶点坐标执行顶点坐标处理。
所述可操作以在对象空间中执行顶点处理的程序指令可操作以使用所述对象空间中的顶点坐标和对象空间中的用户定义剪辑来在所述对象空间中执行图元装配。
所述可操作以在眼空间中执行顶点处理的程序指令可操作以使用所述眼空间中的顶点坐标和眼空间中的用户定义剪辑来在所述眼空间中执行图元装配。
本发明的又一方面是提供一种3D成像装置,其包括:确定装置,其用于确定照明功能被启用还是被停用;眼空间处理装置,其用于在照明功能被启用时处理眼空间中的顶点坐标;以及对象空间处理装置,其用于在照明功能被停用时处理对象空间中的顶点坐标。
所述对象空间处理装置使用对象空间中的顶点坐标和对象空间中的用户定义剪辑来在所述对象空间中执行图元装配。
所述眼空间处理装置使用眼空间中的顶点坐标和眼空间中的用户定义剪辑来在所述眼空间中执行图元装配。
所述对象空间处理装置包含用于通过一个向量到矩阵乘法来将对象空间中的经剪辑和未经剪辑的顶点坐标直接变换到投影空间中的装置。当照明被停用且用户定义剪辑被停用或启用时,所述两个变换(模型视图和投影)可组合成一个矩阵而不是两个矩阵。
本发明的另一方面是一种用于处理对象空间用户定义剪辑的方法,其包括以下步骤:将眼空间中的剪辑平面(P_眼睛)转换为对象空间中的剪辑平面(P_对象);以及使用所述对象空间中的所述剪辑平面(P_对象)和所述对象空间中的顶点坐标来执行用户定义剪辑,以在所述对象空间中创建经剪辑的顶点坐标。
本发明的又一方面是一种用于双模式处理用户定义剪辑的方法,其包括以下步骤:确定照明功能被启用还是被停用;当照明功能被停用时,执行具有对象空间用户定义剪辑的对象空间顶点坐标处理以在对象空间中创建经剪辑的顶点坐标;以及当照明功能被启用时,执行具有眼空间用户定义剪辑的眼空间顶点坐标处理以在眼空间中创建经剪辑的顶点坐标。
所述用于双模式处理用户定义剪辑的方法进一步包括以下步骤:将对象空间中经剪辑的顶点坐标和所述对象空间中未经剪辑的顶点坐标直接变换到投影空间中。
本发明的优点是通过在照明被停用的情况下避免产生眼坐标而获得的较高性能和较少功率消耗。
附图说明
当结合附图阅读时将更好地理解上述发明内容以及本发明优选实施例的以下具体实施方式。出于说明本发明的目的,图中展示目前为优选的实施例。然而应理解,本发明不限于所展示的精确布置。在图中:
图1说明眼空间中的常规用户定义剪辑过程的流程图;
图2说明具有眼空间中的用户定义剪辑的常规顶点过程流程的流程图;
图3说明根据本发明的对象空间中的用户定义剪辑过程的流程图;
图4说明根据本发明的具有对象空间中的用户定义剪辑的顶点过程流程的流程图;
图5A说明根据本发明实施例的具有以软件形式实施的对象空间用户定义剪辑驱动器的三维(3D)成像装置的框图;
图5B说明根据本发明实施例的具有以硬件形式实施的对象空间用户定义剪辑驱动器的三维(3D)成像装置的框图;
图6说明存储在图5A或图5B中的装置的存储单元中的项目的框图;
图7A说明图5A中的装置的对象空间用户定义剪辑驱动器的大体框图;
图7B说明图5B中的装置的对象空间用户定义剪辑驱动器的大体框图;以及
图8说明根据本发明的双模式用户定义剪辑方法的流程图。
具体实施方式
虽然本发明容许有许多不同形式的实施例,但本说明书和附图仅揭示某些形式作为本发明的使用的实例。不希望本发明限于如此描述的实施例,且本发明的范围将在所附权利要求书中指出。
下文以对一种用于在对象空间中进行用户定义剪辑的方法的特定应用来描述根据本发明的3D成像装置的优选实施例。3D成像装置可以是个人计算机(PC)3D图形系统、例如个人数字助理(PDA)的手持式计算装置,或使用3D图形应用程序的移动电话。然而所属领域的技术人员将了解,本发明还很适用于其它类型的具有3D图形应用程序(例如游戏应用程序、模拟器图形和虚拟现实图形)的计算装置。本发明的实施方案适合3D软件引擎中的用户定义剪辑过程。
现在详细参看图式,其中相同标号始终用于指示相同元件,图3中展示根据本发明的用于对象空间中的用户定义剪辑的方法(在100处大体指明)的实施例。
如图4中最佳展示,用于对象空间中的用户定义剪辑的方法100包含顶点过程流程150,其在照明被停用时具有对象空间中的用户定义剪辑。方法100在步骤S112处识别用于表示为V_对象的顶点对象坐标的数据。其后,顶点对象坐标V_对象在步骤S118(如果是多边形)、S120(如果是线段)和S122(如果是点)中的一者处经受图元装配。步骤S118处针对多边形和步骤S120处针对线段的图元装配在步骤S124处经受平坦着色过程。如果着色模型是平坦着色,那么将用三角形或线的最后一个顶点的颜色来代替每一顶点的颜色。来自步骤S124的平坦着色过程或步骤S122的点装配过程的输出经受用户定义剪辑过程(如果由步骤S126启用的话)。
视见体积可进一步受多达n个用户定义剪辑平面限制以在剪辑过程S130中产生剪辑半空间,其中n取决于实施方案。每一用户定义平面指定一半空间。剪辑体积是所有此些半空间与视见体积的交集(步骤S134)。然而,如果在步骤S126处未启用用户定义剪辑平面,那么剪辑体积是步骤S134处的视见体积(经受组合式模型视图与投影变换)。
剪辑需要平面等式(每一者由四个单精度浮点系阵列成)和指示这些用户定义平面等式中的哪些等式被启用的对应位。在初始状态下,所有用户定义平面等式系数均为零,且所有平面均被停用。
如果剪辑平面被停用,那么步骤S128后面接着是步骤S132。在步骤S132处,来自平坦着色过程S124(如果图元是多边形或线段)或步骤S122的点装配过程的输出在步骤S132处经受模型视图和投影变换两者,而不经受步骤S130的用户剪辑。步骤S132后面接着是步骤S134,其中发生视见体积剪辑过程,由以下不等式界定:
-wc≤xc≤wc
-wc≤yc≤wc
-wc≤zc≤wc
其中xc、yc和zc是剪辑坐标。步骤S134结束方法100。
现在参看图2,在具有眼空间中的用户定义剪辑的常规顶点过程流程50中,流程50包含步骤S22(后面接着是步骤S24)的顶点对象坐标。在步骤S24处,发生模型视图变换过程,其中将对象空间中的顶点对象坐标转换到眼空间。其后,步骤S24后面接着是图元装配过程S27,其一般来说包含步骤S28、S30、S32和S34。图元装配过程S27后面接着是用户剪辑过程S40(假定剪辑被启用),而用户剪辑过程S40后面接着是步骤S42处的投影变换过程。步骤S42后面接着是步骤S44,其中可发生用于视见体积剪辑的过程。步骤S44结束流程50。
另一方面,如在图4中最佳可见,具有对象空间中的用户定义剪辑的顶点过程流程150被分为两个部分,其中驱动器218A(图7A)在步骤S117处在对象空间中执行图元装配,随后在步骤S131处在对象空间中执行用户定义剪辑过程(假定已接收到启用命令)。步骤S117包含步骤S118、S120、S122和S124,且步骤S131包含步骤S102、S104、S106、S108、S110、S114、S116、S126、S128和S130。3D图形引擎220可实施为软件图形引擎或硬件图形引擎,且提供图形核心。将3D图形引擎220A展示为与程序指令216A分离,但3D图形引擎220A将包含合适的程序指令(未图示)。在图4、图5A和图7A所示的实施例中,驱动器218A大体上实施为软件。在3D图形引擎220A中,步骤S112′的顶点对象坐标仍在对象空间中,但为经剪辑的顶点对象坐标,表示为CV_对象,且需要使用步骤S132的组合式模型视图与投影变换过程来变换为投影空间顶点坐标,如稍后将使用单个矩阵(例如单个4×4矩阵)更详细地描述。通过用户剪辑步骤S131的一些顶点坐标(V_对象)由于平面被停用(步骤S128到S132)或在步骤S130中的条件不满足的情况下没有被剪辑。这些顶点坐标是对象空间中未经剪辑的顶点坐标(V_对象)。因此,步骤S112′的顶点坐标可向步骤S132提供既是CV_对象又是V_对象的数据。
或者,组合式模型视图与投影变换过程S132可包含步骤S132A处所表示的两步骤过程(以幻像展示),其与图1的步骤S24使用相同的等式。步骤S132A的模型视图变换与步骤S24处的模型视图变换相同。步骤S132A将经剪辑的顶点对象坐标转换到眼空间中,紧接其后的是步骤S132B的投影变换过程(以幻像展示)。此两步骤过程需要两(2)个单独的矩阵。步骤S132或S132B后面接着是步骤S134的视见体积剪辑过程。
现在参看步骤S132的组合式模型视图与投影变换过程,假定以下:
V_眼睛=V_对象*MVT_矩阵
其中MVT_矩阵是模型视图变换矩阵。由于用于用户剪辑的V_眼睛未被使用,因此将MVT_矩阵和投影_矩阵组合成一个矩阵MVTPRJ_矩阵。可将投影坐标计算为
V_投影=CV_对象*MVTPRJ_矩阵或
V_投影=V_对象*MVTPRJ_矩阵
其中CV_对象是对象空间中经剪辑的顶点坐标;且V_对象是对象空间中未经剪辑的顶点坐标;V_投影是投影空间中的所有顶点坐标;且MVTPRJ_矩阵是经组合的MVT_矩阵与投影_矩阵。
流程150在对象空间中执行用户定义剪辑以避免将顶点从对象空间变换到眼空间中。在3D游戏内容中的多数情况下,流程150要求的用来将少数用户定义剪辑平面从眼空间变换到对象空间的计算少于用来将许多顶点从对象空间变换到眼空间的计算。
此外,在流程150中,模型视图变换可与步骤S132处所表示的投影变换组合。在此情况下,在步骤S131的用户定义剪辑过程之后,通过一个向量到矩阵乘法而不是两个向量到矩阵乘法,将经剪辑的顶点坐标从对象空间直接变换到投影空间中。在普通的开放式中,可在照明和用户定义剪辑两者被停用时组合两个变换。在示范性实施例中,只要照明被停用,就可组合所述两个变换。因此,可停用或启用用户定义剪辑。如可了解,使用单个矩阵减少了用来实现经剪辑顶点坐标到投影空间中的计算。
再次参看图3,用户可在步骤S102处指定多个剪辑平面。剪辑平面是3D空间中的任意平面。每一平面界定一半空间。在用户定义剪辑中,任何对象或对象的任何部分将在其不位于所述半空间的情况下被剪辑。将对照所有剪辑平面来测试场景中的任何对象。
在步骤S102处,通过调用
剪辑平面(平面,eqn[4])
的函数来指定用户定义剪辑平面,其中第一自变量(平面)的值是符号常数剪辑_平面i,其中i是0与n-1之间的整数,指示n个用户定义剪辑平面中的一者;且eqn[4]是四个浮点值的阵列。所述四个浮点值是步骤S104的平面等式P在对象坐标中的系数,表示为p1、p2、p3和p4。在步骤S108处,为剪辑平面存储表示为Mc的当前模型视图矩阵。在步骤S110处,经由逆矩阵过程获得或计算用于剪辑平面的当前模型视图矩阵Mc的逆矩阵。将逆矩阵表示为Inv_Mc。当在步骤S106处指定这些系数时,经由乘法将Inv_Mc应用于这些系数,从而得出由以下等式界定的P_眼睛:
P_眼睛=(p′1p′2p′3p′4)=(p1p2p3p4)Mc-1
其中Mc是当前模型视图矩阵;Mc-1是矩阵Mc的逆矩阵,表示为Inv_Mc;所得平面等式在Mc为奇异时是不明确的,且在Mc为病态时可能是不准确的;且P_眼睛是眼坐标中的平面等式系数。
使用模型视图矩阵坐标M来将步骤S106的眼空间中的平面等式系数P_眼睛转换到步骤S114处的对象空间。步骤S116的模型视图矩阵坐标M与步骤S26的矩阵坐标相同。此外,对于步骤S132A,模型视图变换可与步骤S26相同。眼空间中的平面等式系数到对象空间的转换由以下等式界定:
P_对象=(p′1p′2p′3p′4)TM或
P_对象=P_眼睛T*M=(po1po2po3po4)
其中P_对象是对象空间中的平面等式系数;T表示矩阵或向量的转置;且*表示矩阵乘法。
步骤S114后面接着是步骤S130,其中具有满足
P_对象T*V_对象>=0
的顶点对象坐标V_对象=(xoyozowo)的所有点均位于由平面界定的半空间中;不满足此条件的点不位于所述半空间中。
在步骤S126处,用启用命令来启用用户定义剪辑平面。或者,用户可用停用命令来停用剪辑平面。在步骤S128处,作出是启用还是停用用户定义剪辑平面的确定。如果所述确定为“是”(意为启用),那么来自平坦着色过程S124(如果是步骤S118的多边形或S120的线段装配)或点装配过程S122的输出在对象空间中经受步骤S130处的剪辑。任一命令的自变量的值是剪辑_平面i,其中i是0与n之间的整数;指定i的值启用或停用具有指数i的平面等式。常数服从剪辑平面i=剪辑平面0+i。
现在参看步骤S130,在对象空间中而不是在眼空间中应用用户定义剪辑过程。代替将所有顶点坐标从对象空间变换到眼空间以用于剪辑的是,将步骤S104处所指定的用户定义剪辑平面从眼空间变换到对象空间,并对其应用剪辑。以此方式,多个顶点坐标的变换中所需的计算被用来将步骤S106处的剪辑平面变换到对象空间的较少计算代替。在多数情况下,顶点坐标的量远远大于所指定的用户定义剪辑平面的量。通过将用户定义剪辑移动到对象空间,节省了许多计算循环,且因此降低了具有3D成像能力的移动或手持式装置中的功率消耗。
眼空间中的常规用户剪辑由P_眼睛T*V_眼睛确定。根据以下变换,
P_眼睛T*V_眼睛=P_眼睛T*(M*V_对象)
=(P_眼睛T*M)*V_对象
=P_对象T*V_对象
其中P_对象T=P_眼睛T*M。
因此,可以P_对象T*V_对象来进行步骤S130的用户剪辑过程,这是方法100的关键。
由于基于顶点的照明过程是基于眼空间中的顶点的,因此在对象空间中执行剪辑的方法100将不适用于在照明被启用时节省计算。代替的是,应在照明被启用的情况下使用常规方法10。在开放式和开放式ES中具有用以(例如)使用gl启用(GL枚举量,阵列)来启用和停用照明的应用程序编程接口(API)。
现在参看图8,展示双模式用户定义剪辑方法160分别用于图5A的3D成像装置200A或图5B的3D成像装置200B中,且开始于作出照明是否已被停用的确定的步骤S164。如果步骤S164处的确定为“是”,那么步骤S164后面接着是步骤S166,其中具有用户定义剪辑的顶点处理根据图3或图4的流程图而在对象空间中发生。另一方面,如果步骤S164处的确定为“否”,那么步骤S164后面接着是步骤S168,其中具有用户定义剪辑的顶点处理在眼空间中发生,如图1和2中所揭示。因此,驱动器218A或218B仅需要在照明被启用时操作。
图4的基于顶点的处理是在图形流程中的每顶点操作的内环路中。通过移除每顶点的模型视图变换,系统将更快地处理顶点数据。基于顶点的处理对每顶点的数据进行处理。在步骤S134的视见体积剪辑和屏幕上的视见区之后,所述处理在每像素等级上进行。基于一多边形的每一顶点中的数据,将绘制/填充所述多边形内的所有像素。节省的计算可直接转变成功率减少。
由于用户剪辑较早进行,即,用户剪辑在对象空间中而不是在眼空间中进行,因此有可能在将顶点坐标发送到数字信号处理器(DSP)或基于硬件的图形核心中之前,以软件形式应用用户定义剪辑过程作为预处理,如图4中最佳可见。通过这样做,DSP或硬件图形核心中的图形流程的复杂性减小,且有可能启用预开发图形系统中的用户剪辑特征。顶点坐标在S117中装配且在S131中由用户定义剪辑平面剪辑。将对象中的经剪辑顶点坐标发送到3D图形引擎220A中,以用于步骤S132处的进一步处理以变换到投影空间中。
点
现在参看步骤S117的图元装配,如果图元是点,那么对象空间S112中的顶点对象坐标是V_对象。眼空间中的顶点坐标是V_眼睛,那么
V_眼睛=M*V_对象。
S104处对象空间中的任何输入剪辑平面为P。S108中用于剪辑平面的模型视图变换矩阵为Mc。那么,眼空间中的剪辑平面P_眼睛为
P_眼睛=Inv_Mc*P。
在步骤S114处,通过用于点的模型视图变换矩阵M来将平面P从眼空间变换到所述点的对象空间。所述点的对象空间中的剪辑平面P_对象为
P_对象=P_眼睛T*M。
接着,根据步骤S130或S131来在所述点的对象空间中执行剪辑。作为下文所陈述的证明,在且仅在P_眼睛T*V_眼睛>=0的情况下,P_对象T*V_对象>=0。所述证明由以下等式界定:
P_对象T*V_对象
=(P_眼睛T*M)*V_对象
=P_眼睛T*(M*V_对象)
=P_眼睛T*V_眼睛
其中眼空间中的点的顶点坐标V_眼睛是通过M从对象空间中的坐标转变而来的,且由以下等式界定:
V_眼睛=M*V_对象。
线段
如果图元是线,那么所述线可由端部处的两个顶点描述。在对象空间中,所述两个顶点为V_对象1和V_对象2。为了通过模型视图变换矩阵M将所述线变换到眼空间中,
V_眼睛1=M*V_对象1;且
V_眼睛2=M*V_对象2。
S104处对象空间中的任何输入剪辑平面为P。S108中用于剪辑平面的模型视图变换矩阵为Mc。那么,眼空间中的剪辑平面P_眼睛由以下等式界定:
P_眼睛=Inv_Mc*P。
在步骤S114处,通过用于线的模型视图变换矩阵M来将平面P从眼空间变换到所述线的对象空间。所述线的对象空间中的剪辑平面P_对象由以下等式界定:
P_对象=P_眼睛T*M。
接着,根据步骤S130或S131来在所述线的对象空间中执行剪辑。
显然,在且仅在线段完全位于眼空间中的剪辑体积内或外的情况下,所述线段才完全位于对象空间中的剪辑体积内或外。下文陈述证明眼空间中所计算出的剪辑点是从对象空间中所计算出的剪辑点变换而来的同一剪辑点的证据。
为了证明剪辑点在对象空间和眼空间两者中是相同的,将对象空间中的剪辑点定义为C_对象,且将眼空间中的剪辑点定义为C_眼睛。假定t是被剪辑到平面中的线中剪辑点的比率。那么在对象空间中,
t_对象=P_对象T*V_对象2/(P_对象T*V_对象2+P_对象T*V_对象2)
且在眼空间中,
t_眼睛=P_眼睛T*V_眼睛2/(P_眼睛T*V_眼睛2+P_眼睛T*V_眼睛2)。
对象空间中的剪辑点,
C_对象=t_对象*V_对象1+(1-t_对象)*V_对象2。
眼空间中的剪辑点,
C_眼睛=t_眼睛*V_眼睛1+(1-t_眼睛)*V_眼睛2。
如果t_眼睛=t_对象,那么眼空间中的剪辑点应为通过线的模型视图变换矩阵M变换的对象空间中的剪辑点。对C_眼睛的证明由以下等式界定:
C_眼睛
=t_眼睛*V_眼睛1+(1-t_眼睛)*V_眼睛2
=t_对象*(M*V_对象1)+(1-t_对象)*(M*V_对象2)
=M*(t_对象*V_对象1+(1-t_对象)*V_对象2)
=M*C_对象。
多边形
由于多边形的每一边缘均如上所述被处理为线段,因此如果上述情况对线来说是真的,那么对多边形来说也是真的。
鉴于前述内容,在常规方法与本发明之间存在三个主要差异。第一,在本发明中,顶点坐标直到刚好在步骤S132B处的投影变换之前才从对象空间变换到眼空间,或者直接转换到投影空间中。第二,在本发明中,用户定义剪辑平面是从眼空间变换到对象空间的。第三,在本发明中,剪辑是由IF(P_对象T*V_对象)>=0而不是IF(P_眼睛T*V_眼睛)>=0确定的。
再次参看图5A和图6,现在将详细描述三维(3D)成像装置200A。装置200A可以是移动电话或其它手持式计算装置,其具有用于许可双向有线或无线通信的通信装备(未图示),例如个人数字助理(PDA),以及具有视频能力的移动、蜂窝式或卫星电话。装置200A可以是PC、膝上型计算机或其它无线计算装置。装置200A包含处理器210和用于在屏幕上显示2D位图的显示器212。存储单元214为顶点对象坐标236、对象空间中的经剪辑顶点坐标(CV_对象)236′、剪辑平面230以及用于平面的模型视图矩阵232和用于坐标的模型视图矩阵234、投影变换矩阵240以及MVTPRJ_矩阵242提供必要的存储。存储单元214还包含体积剪辑238。存储单元214包含供所述类型的装置200A中使用的一个或一个以上合适的计算机可读存储媒体。
装置200A进一步包含程序指令216A,其具有对象空间用户定义剪辑驱动器218A或预处理级,以及3D图形应用程序模块222,例如(但不限于)具有用于玩游戏的游戏内容、模拟器、CAD、虚拟现实图形。眼空间用户定义剪辑模块224是用于顶点处理的软件,其中图1和图2所示的眼空间中的用户定义剪辑被整合到程序指令216A中以供双模式用户定义剪辑方法160中使用。然而,对于双模式操作,眼空间用户定义剪辑模块224还可以是基于硬件的,且将从216B的程序指令中去除。
现在参看图5B,三维(3D)成像装置200B描绘对象空间用户定义剪辑驱动器218B的硬件实施方案。类似于装置200A,装置200B可以是移动电话或其它手持式计算装置,其具有用于许可双向有线或无线通信的通信装备(未图示),例如个人数字助理(PDA),以及具有视频能力的移动、蜂窝式或卫星电话。装置200B可以是PC或膝上型计算机。装置200B包含处理器210和用于在屏幕上显示2D位图的显示器212,以及存储单元214。
装置200B进一步包含程序指令216B,其具有3D图形应用程序模块222(以幻像展示),例如(但不限于)具有用于玩游戏的游戏内容、模拟器、CAD、虚拟现实图形。眼空间用户定义剪辑模块224是用于顶点处理的软件,其中图1和图2所示的眼空间中的用户定义剪辑被整合到程序指令216B中,以供双模式用户定义剪辑方法160中使用。
在硬件实施方案中,3D图形引擎220B与基于硬件的对象空间用户定义剪辑驱动器218B整合或介接。然而,对于双模式操作,眼空间用户定义剪辑模块224还可以是基于硬件的,且将从216B的程序指令中去除。
具体参看图7A,在将顶点坐标发送到3D图形引擎220A的DSP或硬件图形核心之前,用户剪辑作为预处理级或驱动器218A以软件形式较早完成。基于软件的对象空间用户定义剪辑驱动器218A包含对象空间中的顶点对象坐标240(以幻像展示)。驱动器218A进一步包含图元装配模块242A和对象空间用户定义剪辑模块244A。图元装配模块242A包含多边形装配子模块242AA、线段装配子模块242AB、点装配子模块242AC以及平坦着色子模块242AD。图元装配模块242A包含用于实行步骤S118、S120、S122和S124的过程的程序指令。驱动器218A还包含3D图形引擎软件接口246A以使驱动器218A与3D图形引擎220A介接。
具体参看图7B,在将顶点坐标发送到3D图形引擎220B的DSP或硬件图形核心中之前,用户剪辑作为预处理级或驱动器218B以硬件形式完成。基于硬件的对象空间用户定义剪辑驱动器218B包含对象空间中的顶点对象坐标240(以幻像展示)。驱动器218B进一步包含图元装配模块242B和对象空间用户定义剪辑模块244B。图元装配模块242B包含多边形装配子模块242BA、线段装配子模块242BB、点装配子模块242BC以及平坦着色子模块242BD。图元装配模块242B实行步骤S118、S120、S122和S124的过程。驱动器218B还包含3D图形引擎硬件接口246B以使驱动器218B与3D图形引擎220B介接。
所属领域的技术人员将了解,根据本发明的用于在对象空间中执行用户定义剪辑的方法和装置通过避免在没有照明的情况下产生眼坐标而具有较高的性能且需要较少的功率消耗。
已出于说明和描述的目的而呈现了对本发明实施例的上述描述。不希望所述描述是详尽的或使本发明限于所揭示的精确形式,且依据上文的教示,修改和变化是可能的,或可从本发明的实践中获得修改和变化。选择并描述上述实施例是为了阐释本发明的原理及其实际应用,以使所属领域的技术人员能够在各种实施例中利用本发明,并作出适合于所预期的特定用途的各种修改。希望本发明的范围由所附权利要求书及其等效物界定。
Claims (66)
1.一种对象空间用户定义剪辑驱动器,其包括:图元装配模块,其可操作以对对象空间中的顶点坐标进行图元装配;以及用户定义剪辑模块,其可操作以使用所述对象空间中的剪辑平面(P_对象)和所述对象空间中的所述经图元装配的顶点坐标在所述对象空间中创建经剪辑的顶点坐标。
2.根据权利要求1所述的驱动器;其中所述图元装配模块包含多边形装配子模块、线装配子模块以及点装配子模块中的至少一者。
3.根据权利要求1所述的驱动器;其中所述图元装配模块包含多边形装配子模块、线装配子模块、点装配子模块以及用于处理来自所述多边形装配子模块和所述线装配子模块的输出的平坦着色子模块。
4.根据权利要求1所述的驱动器;其进一步包括三维(3D)图形引擎接口,所述三维(3D)图形引擎接口用于将所述用户定义剪辑模块的输出介接到3D图形引擎的图形核心,使得所述对象空间中的所述经剪辑顶点坐标可变换到投影空间中。
5.根据权利要求1所述的驱动器;其中所述驱动器以软件形式实施。
6.根据权利要求1所述的驱动器;其中所述驱动器以硬件形式实施。
7.根据权利要求1所述的驱动器;其中所述驱动器在照明功能被停用时操作。
8.根据权利要求1所述的驱动器;其中所述用户定义剪辑模块将眼空间中的剪辑平面(P_眼睛)转换为所述对象空间中的所述剪辑平面(P_对象),所述转换由以下等式界定:
P_眼睛=Inv_Mc*P;且
P_对象=P_眼睛T*M
其中P是输入剪辑平面;Mc是用于所述剪辑平面的模型视图矩阵;Inv_Mc是所述Mc的逆矩阵;M是用于坐标的模型视图矩阵;T是矩阵或向量的转置;且*表示矩阵乘法。
9.根据权利要求8所述的驱动器;其中所述用户定义剪辑模块在
P_对象T*V_对象>=0
的情况下执行剪辑,其中P_对象是待剪辑的所述对象空间中的所述剪辑平面;V_对象是所述对象空间中的所述顶点坐标;T是矩阵或向量的转置;且*表示矩阵乘法。
10.一种对象空间用户定义剪辑驱动器,其包括:图元装配装置,其用于对对象空间中的顶点坐标进行图元装配;以及用户定义剪辑装置,其用于使用所述对象空间中的剪辑平面(P_对象)和所述对象空间中的所述经图元装配的顶点坐标在所述对象空间中创建经剪辑的顶点坐标。
11.根据权利要求10所述的驱动器;其中所述图元装配装置包含用于对所述顶点坐标进行多边形装配的装置、用于对所述顶点坐标进行线装配的装置以及用于对所述顶点坐标进行点装配的装置中的至少一者。
12.根据权利要求10所述的驱动器;其进一步包括用于将所述用户定义剪辑装置的输出介接到3D图形引擎的图形核心以使得所述对象空间中的所述经剪辑顶点坐标可变换到投影空间中的装置。
13.根据权利要求10所述的驱动器;其中所述驱动器以软件形式实施。
14.根据权利要求10所述的驱动器;其中所述驱动器以硬件形式实施。
15.根据权利要求10所述的驱动器;其中所述驱动器在照明被停用时操作。
16.根据权利要求10所述的驱动器;其中所述用户定义剪辑装置包含将眼空间中的剪辑平面(P_眼睛)转换为所述对象空间中的所述剪辑平面(P_对象)的装置,所述转换由以下等式界定:
P_眼睛=Inv_Mc*P;且
P_对象=P_眼睛T*M
其中P是输入剪辑平面;Mc是用于所述剪辑平面的模型视图矩阵;Inv_Mc是所述Mc的逆矩阵;M是用于坐标的模型视图矩阵;T是矩阵或向量的转置;且*表示矩阵乘法。
17.根据权利要求16所述的驱动器;其中所述用户定义剪辑装置包含用于在
P_对象T*V_对象>=0
的情况下执行剪辑的装置,其中P_对象是待剪辑的所述对象空间中的所述剪辑平面;V_对象是所述对象空间中的所述顶点坐标;T是矩阵或向量的转置;且*表示矩阵乘法。
18.一种可由处理器执行的具有程序指令的程序代码,所述程序指令在执行时可操作以对对象空间中的顶点坐标进行图元装配;及
使用所述对象空间中的剪辑平面(P_对象)和所述对象空间中的所述经图元装配的顶点坐标在所述对象空间中创建经剪辑的顶点坐标。
19.根据权利要求18所述的程序代码;其中所述可操作以进行图元装配的程序指令包含在执行时可操作以选择性执行多边形装配、线装配以及点装配中的一者的程序指令。
20.根据权利要求18所述的程序代码;其中所述程序指令在照明功能被停用时执行。
21.根据权利要求18所述的程序代码;其中所述可操作以执行所述用户定义剪辑的程序指令包含在执行时可操作以将眼空间中的剪辑平面(P_眼睛)转换为所述对象空间中的所述剪辑平面(P_对象)的程序指令,所述转换由以下等式界定:
P_眼睛=Inv_Mc*P;且
P_对象=P_眼睛T*M
其中P是输入剪辑平面;Mc是用于所述剪辑平面的模型视图矩阵;Inv_Mc是所述Mc的逆矩阵;M是用于坐标的模型视图矩阵;T是矩阵或向量的转置;且*表示矩阵乘法。
22.根据权利要求21所述的程序代码;其中所述可操作以执行所述用户定义剪辑的程序指令包含在执行时可操作以在
P_对象T*V_对象>=0
的情况下进行剪辑的程序指令,其中P_对象是待剪辑的所述对象空间中的所述剪辑平面;V_对象是所述对象空间中的所述顶点坐标;T是矩阵或向量的转置;且*表示矩阵乘法。
23.一种3D图形引擎,其包括:对象空间用户定义剪辑驱动器,其可操作以在照明功能在所述3D图形引擎中被停用时,对对象空间中的顶点坐标执行用户定义剪辑;以及图形核心,其用于将所述对象空间中的所述经剪辑顶点坐标变换到投影空间中。
24.根据权利要求23所述的引擎;其中所述驱动器包括图元装配模块,其可操作以使用所述对象空间中的所述顶点坐标在所述对象空间中执行图元装配。
25.根据权利要求24所述的引擎;其中所述图元装配模块包含多边形装配子模块、线装配子模块以及点装配子模块,其每一者可分别响应于所述对象空间中的所述顶点坐标是线、点还是多边形而选择性地操作。
26.根据权利要求25所述的引擎;其中所述图元装配模块进一步包含耦合到所述多边形装配子模块和所述线装配子模块的输出的平坦着色子模块。
27.根据权利要求23所述的引擎;其中所述图形核心通过将一个向量乘到一矩阵来将所述对象空间中的所述顶点坐标直接变换到所述投影空间中。
28.根据权利要求27所述的引擎;其中所述矩阵是模型视图矩阵与投影矩阵的组合矩阵(MVTPRJ_矩阵),其中所述乘法的结果得出所述投影空间中的顶点坐标(V_pri),其由以下等式界定:
V_prj=CV_对象*MVTPRJ_矩阵或
V_prj=V_对象*MVTPRJ_矩阵
其中CV_对象是所述对象空间中的所述经剪辑的顶点坐标;且V_对象是所述对象空间中未经剪辑的顶点坐标。
29.根据权利要求23所述的引擎;其中所述驱动器包括用户定义剪辑模块,其可操作以将眼空间中的剪辑平面(P_眼睛)转换为所述对象空间中的剪辑平面(P_对象),所述转换由以下等式界定:
P_眼睛=Inv_Mc*P;且
P_对象=P_眼睛T*M
其中P是输入剪辑平面;Mc是用于所述剪辑平面的模型视图矩阵;Inv_Mc是所述Mc的逆矩阵;M是用于坐标的模型视图矩阵;T是矩阵或向量的转置;且*表示矩阵乘法。
30.根据权利要求29所述的引擎;其中所述用户定义剪辑模块进一步可操作以在
P_对象T*V_对象>=0
的情况下使用所述对象空间中的所述剪辑平面(P_对象)在所述对象空间中创建经剪辑的顶点坐标,其中P_对象是待剪辑的所述对象空间中的所述剪辑平面;T是矩阵或向量的转置;且*表示矩阵乘法。
31.一种3D图形引擎,其包括:用户定义剪辑装置,其用于在照明功能在所述3D图形引擎中被停用时对对象空间中的顶点坐标进行用户定义剪辑;以及变换装置,其与所述用户定义剪辑装置介接,用于将所述对象空间中的所述经剪辑的顶点坐标变换到投影空间中。
32.根据权利要求31所述的引擎;其中所述用户定义剪辑装置包括用于使用所述对象空间中的所述顶点坐标在所述对象空间中进行图元装配的图元装配装置。
33.根据权利要求32所述的引擎;其中所述图元装配装置包括用于多边形装配的装置、用于线装配的装置以及用于点装配的装置,其每一者可分别响应于所述对象空间中的所述顶点坐标是线、点还是多边形而选择性地操作。
34.根据权利要求33所述的引擎;其中所述图元装配装置进一步包含用于平坦着色的装置,其耦合到所述多边形装配装置和所述线装配装置的输出。
35.根据权利要求31所述的引擎;其中所述变换装置包含用于通过将一个向量乘到一矩阵来将所述对象空间中的所述顶点坐标直接变换到所述投影空间中的装置。
36.根据权利要求35所述的引擎;其中所述矩阵是模型视图矩阵与投影矩阵的组合矩阵(MVTPRJ_矩阵),其中所述乘法的结果得出所述投影空间中的顶点坐标(V_pri),其由以下等式界定:
V_prj=CV_对象*MVTPRJ_矩阵或
V_prj=V_对象*MVTPRJ_矩阵
其中CV_对象是所述对象空间中的所述经剪辑的顶点坐标;且V_对象是对象空间中未经剪辑的顶点坐标。
37.根据权利要求31所述的引擎;其中所述用户定义剪辑装置包括用于将眼空间中的剪辑平面(P_眼睛)转换为所述对象空间中的剪辑平面(P_对象)的装置,所述转换由以下等式界定:
P_眼睛=Inv_Mc*P;且
P_对象=P_眼睛T*M,
其中P是输入剪辑平面;Mc是用于所述剪辑平面的模型视图矩阵;Inv_Mc是所述Mc的逆矩阵;M是用于坐标的模型视图矩阵;T是矩阵或向量的转置;且*表示矩阵乘法。
38.根据权利要求37所述的引擎;其中所述用户定义剪辑装置进一步包括用于在
P_对象T*V_对象>=0
的情况下使用所述对象空间中的所述剪辑平面(P_对象)在所述对象空间中创建经剪辑顶点坐标的装置,其中P_对象是待剪辑的所述对象空间中的所述剪辑平面;T是矩阵或向量的转置;且*表示矩阵乘法。
39.一种具有程序指令的程序代码,其可由处理器执行以在照明被启用时对眼空间中的顶点坐标执行顶点坐标处理,及在照明被停用时对顶点坐标对象空间执行顶点坐标处理。
40.根据权利要求39所述的程序代码;其中所述可操作以在所述对象空间中执行所述顶点处理的程序指令可操作以使用所述对象空间中的所述顶点坐标在所述对象空间中执行图元装配。
41.根据权利要求40所述的程序代码;其中所述可操作以执行图元装配的程序指令包含在由所述处理器执行时可操作以选择性地对所述对象空间中的所述顶点坐标执行多边形装配、线装配和点装配中的一者的程序指令。
42.根据权利要求39所述的程序代码;其中所述可操作以在所述眼空间中执行所述顶点处理的程序指令可操作以使用所述眼空间中的所述顶点坐标来在所述眼空间中执行图元装配。
43.根据权利要求42所述的程序代码;其中所述可操作以在所述眼空间中执行图元装配的程序指令包含在由所述处理器执行时可操作以选择性对所述眼空间中的所述顶点坐标执行多边形装配、线装配和点装配中的一者的程序指令。
44.根据权利要求39所述的程序代码;其中所述可操作以在所述眼空间中执行所述顶点坐标处理的程序指令包含在执行时可操作以将所述眼空间中的所述顶点坐标变换到投影空间的程序指令。
45.根据权利要求44所述的程序代码;其中所述可操作以在所述对象空间中执行所述顶点坐标处理的程序指令包含在执行时可操作以在所述对象空间中执行组合式模型视图与投影变换。
46.根据权利要求45所述的程序代码;其中所述可操作以执行组合式模型视图与投影变换的程序指令包含在由处理器执行时可操作以通过将一个向量乘到一矩阵来将所述对象空间中的所述顶点坐标直接变换到所述投影空间中的程序指令。
47.根据权利要求46所述的程序代码;其中所述矩阵是模型视图矩阵与投影矩阵的组合矩阵(MVTPRJ_矩阵),其中所述乘法的结果得出所述投影空间中的顶点坐标(V_pri),其由以下等式界定:
V_prj=CV_对象*MVTPRJ_矩阵或
V_prj=V_对象*MVTPRJ_矩阵
其中CV_对象是所述对象空间中经剪辑的顶点坐标;且V_对象为所述对象空间中未经剪辑的顶点坐标。
48.根据权利要求39所述的程序代码;其中所述可操作以在所述对象空间中执行所述顶点坐标处理的程序指令包含在执行时可操作以执行用户定义剪辑以将所述眼空间中的剪辑平面(P_眼睛)转换为所述对象空间中的剪辑平面(P_对象)的程序指令,所述转换由以下等式界定:
P_眼睛=Inv_Mc*P;且
P_对象=P_眼睛T*M
其中P是输入剪辑平面;Mc是用于所述剪辑平面的模型视图矩阵;Inv_Mc是所述Mc的逆矩阵;M是用于坐标的模型视图矩阵;T是矩阵或向量的转置;且*表示矩阵乘法。
49.根据权利要求48所述的程序代码;其中所述可操作以执行所述用户定义剪辑的程序指令包含在执行时在
P_对象T*V_对象>=0
的情况下进行剪辑的程序指令,其中P_对象是待剪辑的所述对象空间中的所述剪辑平面;V_对象是所述对象空间中的所述顶点坐标;T是矩阵或向量的转置;且*表示矩阵乘法。
50.一种3D成像装置,其包括:
确定装置,其用于确定照明功能被启用还是停用;
眼空间处理装置,其用于在所述照明功能被启用时处理眼空间中的顶点坐标;以及
对象空间处理装置,其用于在所述照明功能被停用时处理对象空间中的顶点坐标。
51.根据权利要求50所述的装置;其中所述对象空间处理装置包含用于使用所述对象空间中的所述顶点坐标在所述对象空间中进行图元装配的装置。
52.根据权利要求51所述的装置;其中所述图元装配装置包含用于选择性地对所述对象空间中的所述顶点坐标执行多边形装配、线装配和点装配中的一者的装置。
53.根据权利要求50所述的装置;其中所述眼空间处理装置包含用于使用所述眼空间中的所述顶点坐标在所述眼空间中进行图元装配的装置。
54.根据权利要求53所述的装置;其中所述眼空间图元装配装置包含用于选择性地对所述眼空间中的所述顶点坐标执行多边形装配、线装配和点装配中的一者的装置。
55.根据权利要求50所述的装置;其中所述眼空间处理装置包含用于将所述眼空间中的所述顶点坐标变换到投影空间的装置。
56.根据权利要求55所述的装置;其中所述对象空间处理装置包含用于对所述对象空间中的所述顶点坐标进行组合式模型视图与投影变换以将其变换到所述投影空间的装置。
57.根据权利要求56所述的装置;其中所述组合式模型视图与投影变换装置包含用于通过将一个向量乘到一矩阵来将所述对象空间中的所述顶点坐标直接变换到所述投影空间中的装置。
58.根据权利要求57所述的装置;其中所述矩阵是模型视图矩阵与投影矩阵的组合矩阵(MVTPRJ_矩阵),且所述乘法的结果得出所述投影空间中的顶点坐标(V_pri),其由以下等式界定:
V_prj=CV_对象*MVTPRJ_矩阵或
V_pri=V_对象MVTPRJ_矩阵
其中CV_对象是所述对象空间中经剪辑的顶点坐标;且V_对象是未经剪辑的顶点坐标。
59.根据权利要求50所述的装置;其中所述对象空间处理装置包含用于进行用户定义剪辑以将所述眼空间中的剪辑平面(P_眼睛)转换为所述对象空间中的剪辑平面(P_对象)的装置,所述转换由以下等式界定:
P_眼睛=Inv_Mc*P;且
P_对象=P_眼睛T*M
其中P是输入剪辑平面;Mc是用于所述剪辑平面的模型视图矩阵;Inv_Mc是所述Mc的逆矩阵;M是用于坐标的模型视图矩阵;T是矩阵或向量的转置;且*表示矩阵乘法。
60.根据权利要求59所述的装置;其中所述用户定义剪辑装置包含用于在
P_对象T*V_对象>=0
的情况下进行剪辑的装置,其中P_对象是待剪辑的所述对象空间中的所述剪辑平面;V_对象是所述对象空间中的所述顶点坐标;T是矩阵或向量的转置;且*表示矩阵乘法。
61.根据权利要求50所述的装置;其中所述装置包括以下各项中的一者:具有视频能力的蜂窝式电话、具有视频能力的卫星电话、个人计算机、膝上型计算机、具有视频能力的无线通信或计算装置,以及个人数字助理。
62.一种用于处理对象空间用户定义剪辑的方法,其包括以下步骤:将眼空间中的剪辑平面(P_眼睛)转换为对象空间中的剪辑平面(P_对象);以及进行用户定义剪辑,以使用所述对象空间中的所述剪辑平面(P_对象)和所述对象空间中的顶点坐标在所述对象空间中创建经剪辑的顶点坐标。
63.根据权利要求62所述的方法;其进一步包括以下步骤:将所述对象空间中的所述经剪辑的顶点坐标和所述对象空间中未经剪辑的顶点坐标直接变换到投影空间中。
64.一种用于用户定义剪辑的双模式处理的方法,其包括以下步骤:确定照明功能被启用还是被停用;当所述照明功能被停用时,执行具有对象空间用户定义剪辑的对象空间顶点坐标处理,以在对象空间中创建经剪辑的顶点坐标;以及当所述照明功能被启用时,执行具有眼空间用户定义剪辑的眼空间顶点坐标处理,以在眼空间中创建经剪辑的顶点坐标。
65.根据权利要求64所述的方法;其中所述对象空间顶点坐标处理步骤进一步包括以下步骤:将所述对象空间中的所述经剪辑顶点坐标和所述对象空间中未经剪辑的顶点坐标直接变换到投影空间中。
66.根据权利要求64所述的方法;其中所述眼空间顶点坐标处理步骤进一步包括以下步骤:将所述眼空间中的所述经剪辑顶点坐标和所述眼空间中未经剪辑的顶点坐标直接变换到投影空间中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/531,205 | 2006-09-12 | ||
US11/531,205 US8237739B2 (en) | 2006-09-12 | 2006-09-12 | Method and device for performing user-defined clipping in object space |
PCT/US2007/078237 WO2008033895A2 (en) | 2006-09-12 | 2007-09-12 | Method and device for performing user-defined clipping in object space |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101553847A true CN101553847A (zh) | 2009-10-07 |
CN101553847B CN101553847B (zh) | 2013-10-30 |
Family
ID=39169138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800331619A Active CN101553847B (zh) | 2006-09-12 | 2007-09-12 | 用于在对象空间中执行用户定义剪辑的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8237739B2 (zh) |
EP (1) | EP2074593A2 (zh) |
JP (1) | JP5133999B2 (zh) |
KR (1) | KR101050985B1 (zh) |
CN (1) | CN101553847B (zh) |
WO (1) | WO2008033895A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103444190B (zh) * | 2011-03-14 | 2016-06-08 | 高通股份有限公司 | 原生单像3d到立体3d的运行时转换 |
CN107256207A (zh) * | 2012-09-26 | 2017-10-17 | Sk 普兰尼特有限公司 | 用于生成3d对象的设备和方法 |
CN112991143A (zh) * | 2021-05-06 | 2021-06-18 | 南京芯瞳半导体技术有限公司 | 一种图元装配的方法、装置及计算机存储介质 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8237739B2 (en) | 2006-09-12 | 2012-08-07 | Qualcomm Incorporated | Method and device for performing user-defined clipping in object space |
US8852225B2 (en) | 2008-09-25 | 2014-10-07 | Medtronic, Inc. | Emboli guarding device |
TWI450215B (zh) * | 2010-12-14 | 2014-08-21 | Via Tech Inc | 影像物件之隱藏面移除的預先揀選方法、系統以及電腦可記錄媒體 |
US9626792B2 (en) | 2012-10-16 | 2017-04-18 | Adobe Systems Incorporated | Rendering an infinite plane |
US9773341B2 (en) * | 2013-03-14 | 2017-09-26 | Nvidia Corporation | Rendering cover geometry without internal edges |
US20150379664A1 (en) * | 2014-06-27 | 2015-12-31 | Kalyan K. Bhiravabhatla | Accelerated single plane clipping of polygons in graphics processing |
US10726626B2 (en) | 2017-11-22 | 2020-07-28 | Google Llc | Interaction between a viewer and an object in an augmented reality environment |
WO2023136998A1 (en) * | 2022-01-14 | 2023-07-20 | Siemens Industry Software Inc. | Method of rendering a two-dimensional image to a designer |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5986669A (en) * | 1996-09-10 | 1999-11-16 | Intergraph Corporation | Graphics processing with efficient clipping |
US5956047A (en) * | 1997-04-30 | 1999-09-21 | Hewlett-Packard Co. | ROM-based control units in a geometry accelerator for a computer graphics system |
US5889997A (en) * | 1997-05-30 | 1999-03-30 | Hewlett-Packard Company | Assembler system and method for a geometry accelerator |
US5877773A (en) * | 1997-05-30 | 1999-03-02 | Hewlett-Packard Company | Multi-pass clipping in a geometry accelerator |
US6137497A (en) * | 1997-05-30 | 2000-10-24 | Hewlett-Packard Company | Post transformation clipping in a geometry accelerator |
US7215344B2 (en) | 1998-01-15 | 2007-05-08 | 3Dlabs, Inc. Ltd | Triangle clipping for 3D graphics |
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 |
AU5688199A (en) * | 1998-08-20 | 2000-03-14 | Raycer, Inc. | System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline |
US6353439B1 (en) * | 1999-12-06 | 2002-03-05 | Nvidia Corporation | System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline |
US6545679B1 (en) | 1999-12-27 | 2003-04-08 | Microsoft Corporation | View volume clip-check in object space |
US6686924B1 (en) * | 2000-02-02 | 2004-02-03 | Ati International, Srl | Method and apparatus for parallel processing of geometric aspects of video graphics data |
US7111156B1 (en) * | 2000-04-21 | 2006-09-19 | Ati Technologies, Inc. | Method and apparatus for multi-thread accumulation buffering in a computation engine |
US6664962B1 (en) * | 2000-08-23 | 2003-12-16 | Nintendo Co., Ltd. | Shadow mapping in a low cost graphics system |
US6919900B2 (en) * | 2001-03-23 | 2005-07-19 | Microsoft Corporation | Methods and systems for preparing graphics for display on a computing device |
US7239324B2 (en) * | 2001-03-23 | 2007-07-03 | Microsoft Corporation | Methods and systems for merging graphics for display on a computing device |
US7162716B2 (en) * | 2001-06-08 | 2007-01-09 | Nvidia Corporation | Software emulator for optimizing application-programmable vertex processing |
US20030095137A1 (en) * | 2001-11-16 | 2003-05-22 | Chung-Yen Lu | Apparatus and method for clipping primitives in a computer graphics system |
US6774895B1 (en) * | 2002-02-01 | 2004-08-10 | Nvidia Corporation | System and method for depth clamping in a hardware graphics pipeline |
US7015909B1 (en) * | 2002-03-19 | 2006-03-21 | Aechelon Technology, Inc. | Efficient use of user-defined shaders to implement graphics operations |
US8237739B2 (en) | 2006-09-12 | 2012-08-07 | Qualcomm Incorporated | Method and device for performing user-defined clipping in object space |
-
2006
- 2006-09-12 US US11/531,205 patent/US8237739B2/en active Active
-
2007
- 2007-09-12 WO PCT/US2007/078237 patent/WO2008033895A2/en active Application Filing
- 2007-09-12 EP EP07814811A patent/EP2074593A2/en not_active Withdrawn
- 2007-09-12 CN CN2007800331619A patent/CN101553847B/zh active Active
- 2007-09-12 KR KR1020097007165A patent/KR101050985B1/ko active IP Right Grant
- 2007-09-12 JP JP2009528443A patent/JP5133999B2/ja not_active Expired - Fee Related
-
2012
- 2012-06-29 US US13/538,445 patent/US9024969B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103444190B (zh) * | 2011-03-14 | 2016-06-08 | 高通股份有限公司 | 原生单像3d到立体3d的运行时转换 |
CN107256207A (zh) * | 2012-09-26 | 2017-10-17 | Sk 普兰尼特有限公司 | 用于生成3d对象的设备和方法 |
CN107256207B (zh) * | 2012-09-26 | 2020-09-29 | Sk 普兰尼特有限公司 | 用于生成3d对象的设备和方法 |
CN112991143A (zh) * | 2021-05-06 | 2021-06-18 | 南京芯瞳半导体技术有限公司 | 一种图元装配的方法、装置及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20090058015A (ko) | 2009-06-08 |
US20080062197A1 (en) | 2008-03-13 |
US20120268484A1 (en) | 2012-10-25 |
JP5133999B2 (ja) | 2013-01-30 |
WO2008033895A2 (en) | 2008-03-20 |
EP2074593A2 (en) | 2009-07-01 |
US9024969B2 (en) | 2015-05-05 |
KR101050985B1 (ko) | 2011-07-21 |
US8237739B2 (en) | 2012-08-07 |
WO2008033895A3 (en) | 2009-04-30 |
JP2010503927A (ja) | 2010-02-04 |
CN101553847B (zh) | 2013-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101553847B (zh) | 用于在对象空间中执行用户定义剪辑的方法和装置 | |
RU2677584C1 (ru) | Использование межкадровой когерентности в архитектуре построения изображений с сортировкой примитивов на промежуточном этапе | |
JP4799409B2 (ja) | 手持ち式携帯デバイスのための高質・高性能3dグラフィックスアーキテクチャ | |
CN111932664B (zh) | 图像渲染方法、装置、电子设备及存储介质 | |
CN112933599B (zh) | 三维模型渲染方法、装置、设备及存储介质 | |
JP2018129051A (ja) | スクリーンの位置によって異なる解像度のターゲットの複数レンダリングのテクスチャ・マッピングの傾き調整 | |
US10593096B2 (en) | Graphics processing employing cube map texturing | |
CN109166159A (zh) | 获取图像的主色调的方法、装置及终端 | |
CN105164994A (zh) | 半固定色调色域压缩 | |
CN111932463B (zh) | 图像处理方法、装置、设备及存储介质 | |
KR20170000190A (ko) | 그래픽스 파이프라인을 수행하는 방법 및 장치 | |
WO2017032233A1 (zh) | 一种图像生成方法及装置 | |
US9672642B2 (en) | Apparatus and method of performing tile binning of bezier curve | |
US7075530B2 (en) | Fast lighting processors | |
US9111328B2 (en) | Texture compression and decompression | |
US9721187B2 (en) | System, method, and computer program product for a stereoscopic image lasso | |
US9324177B2 (en) | Generation of intermediate images for texture compression | |
CN112750190B (zh) | 三维热力图生成方法、装置、设备及存储介质 | |
KR101214674B1 (ko) | 텍스트를 포함하는 모자이크 이미지를 생성하기 위한 장치 및 방법 | |
KR100603134B1 (ko) | 단색광을 이용한 3차원 렌더링 처리 방법 및 그 장치 | |
CN114693859A (zh) | 高光渲染方法、装置、介质及电子设备 | |
JP4708885B2 (ja) | 符号化装置、携帯端末装置及びそれらに用いる画素色情報符号化方法 | |
JP2006318066A (ja) | 幾何演算装置 | |
US20050078118A1 (en) | Table indexing system and method | |
CN117974860A (zh) | 一种渲染方法、装置、设备 |
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 |