3d世界中的物体处理方法

文档序号:6369421阅读:267来源:国知局
专利名称:3d世界中的物体处理方法
技术领域
本发明涉及物体处理技术领域,特别涉及ー种3D世界中的物体处理方法。
背景技术
目前,3D世界中的每ー个场景都是多个物体的集合,而其中的每个物体都可以用三角形网格(triangle mesh)来近似表示,即3D世界中最基本的图元就是三角形。只有正确的显示3D世界,才能给玩家带来更真实的感受,现有通常是通过如下方法来显示3D世界的对3D世界中的场景进行多次数据矩阵变换后,将超过可视范围的三角形裁剪棹, 将场景中距离较远的三角形加上雾色使之虚化,将距离超过设定范围的三角形淡出。现有显示3D世界的方法处理正常大小的物体是没有问题的,但是对于超大物体,其中的部分三角形可能会因为超过可视范围被裁剪掉,因为使得超大物体的一部分无法正常显示,只能看到部分该超大物体。这种情况下,可以将可视范围调整到较远距离,然而,这样虽可以看到该超大物体的全部,但需要对该超大物体的全部三角形都进行处理,使得处理的三角形数量会大大增加,从而大幅降低游戏性能,导致过差的游戏体验。

发明内容
有鉴于此,本发明提供了ー种3D世界中的物体处理方法,能够在不降低游戏性能的前提下,正常地显示3D世界中的超大物体。为了达到上述目的,本发明提出的技术方案为ー种3D世界中的物体处理方法,该方法包括对3D世界中的场景进行世界变换,将该场景转换到世界坐标系中;将得到的世界坐标系下的场景进行相机和透视投影变换,得到视平面上的场景的坐标;将视平面上的各个三角形的点的z分量值进行最小化处理,使相机和透视投影变换后的每个点的深度值都不大于1,以使得每个三角形的点都不会被裁剪棹。该方法还包括当绘制三角形的点时,判断与该深度值相同的点是否已被绘制,如果是,则不再绘制该点;否则,继续绘制该点。所述对3D世界中的ー个场景进行世界变换包括将所述场景中组成每ー个物体的三角形的姆ー个点的位置Pos与世界矩阵WorldMatrix相乘,得到场景中姆个三角形的点在世界坐标系下的位置WorldPos=mul (Pos, WorldMatrix),所述mul (x, y)为将x与y相乘。所述将得到的世界坐标系下的场景进行相机和透视投影变换,得到视平面上的场景的坐标包括将场景中每个三角形的点在世界坐标系下的位置WorldPos与相机和透视投影矩阵MatViewProj相乘,得到场景中姆个三角形的点在视平面上的位置oPos=mul(WorldPos,MatViewPro j ),所述MatViewProj为相机变换矩阵和透视投影矩阵相乘后的矩阵。所述将视平面上的各个三角形的点的z分量值进行最小化处理包括将视平面上的各个三角形的点的z分量值oPos. z与各个三角形的点的w分量值oPos. w之间取最小值,得到各个三角形的点的新的z分量值oPos. z’ =min (oPos. z,oPos.w),所述min (X, y)值的是取X和y中的较小值。综上所述,本发明所采用的3D世界中的物体处理方法,是通过对3D世界中的场景进行世界变换、相机和透视投影变换后,得到视平面上的场景的坐标,进而将视平面上的各个三角形的点的z分量值进行最小化处理,以使得透视变换后的每个点的深度值都不大于1,也就避免了每个三角形的点都不会被裁剪棹。由于本发明方法对经过相机和透视投影变换后的场景中的每个三角形的点的z分量值都进行了最小化处理,也就避免了其中某个三角形的点的深度值由于大于I而被裁剪的情況,因此,本发明物体处理方法能够正常地显 示3D世界中的超大物体,而且不会降低游戏性能。


图I为本发明所采用的物体处理方法的工作流程图;图2 Ca)为3D世界中的一个场景示意图;图2 (b)为采用本发明方法对图2 (a)进行处理后的结果示意图。
具体实施例方式为了解决本发明提出的技术问题,本发明所述方案的具体实现包括对3D世界中的场景进行世界变换,将该场景转换到世界坐标系中;将得到的世界坐标系下的场景进行相机和透视投影变换,得到视平面上的场景的坐标;将视平面上的各个三角形的点的深度值进行最小化处理,使每个点的深度值都不大于1,以使得每个三角形的点都不会被裁剪棹。为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进ー步地详细描述。图I为本发明所采用的物体处理方法的工作流程图,如图I所示,该流程包括步骤101 :对3D世界中的ー个场景进行世界变换,将该场景转换到世界坐标系中。在本步骤中,对3D世界中的ー个场景进行世界变换包括将该场景中组成每ー个物体的三角形的每ー个点的位置Pos与世界矩阵WorldMatrix相乘,得到场景中每个三角形的点在世界坐标系下的位置WorldPos=mul (Pos, WorldMatrix),所述mul Cx, y)为将x与y相乘。步骤102 :将世界坐标系下的场景进行相机和透视投影变换,得到视平面上的场景的坐标。在得到了场景中每个三角形的点在世界坐标系下的位置Wor I dPos后,将WorldPos与相机和透视投影矩阵MatViewProj (MatViewProj是相机变换矩阵与透视投影矩阵相乘后的矩阵)相乘,得到场景中每个三角形的点在视平面上的坐标oPoS=mul(WorldPos, MatViewProj)。
步骤103 :将视平面上的各个三角形的点的z分量值oPos. z进行最小化处理,使相机和透视投影变换后的每个点的深度值都不大于I。在本步骤中,将视平面上的各个三角形的点的z分量值oPos. z进行最小化处理为将视平面上的各个三角形的点的Z分量值oPos. Z分别与各个三角形的点的W分量值oPos. w之间取最小值,得到各个三角形的点的新的z分量值oPos. z’ =min (oPos. z,oPos.w),所述min(x,y)值的是取x和y中的较小值。由此,即可将姆个点的新的z分量值oPos.z’限定为不大于oPos.w,后续在进行透视除法(oPos.z’ /oPos.w)后的每个点的深度值将不会大于1,也就不会因深度值大于I而被裁剪棹,也就能够显示场景中的每个物体的全部。 需要说明的是,视平面上的各个三角形的点坐标oPos有x,y,z,w四个分量,这四个分量值的计算方法已为现有技木,这里不再赘述。步骤104 :当绘制三角形的点时,判断与该深度值相同的点是否已被绘制,如果是,则不再绘制该点;否则,继续绘制该点。在经过步骤103的操作后,虽然能够避免深度值大于I的点被裁剪掉,但是,这样可能会出现很多点的深度值都相同的情况,然而,如果有两个重叠的三角形的点的深度值相同的话,在绘制时就不能清除地确定哪ー个三角形的点在前。例如,正常情况下,三角形A应该覆盖在三角形B前面,但深度值相同就会出现有时三角形B出现在三角形A前面的现象,此时就会出现闪烁(z-fighting)现象。因此,在绘制深度值相同的点时,需要对这些点是否已被绘制进行判断,假设三角形A和B的点的深度值相同,现在三角形A先绘制,之后绘制三角形B的时候,则可以不对该三角形B的点进行绘制,由此,保证了两个三角形重叠部分只绘制一次,也就是没有了闪烁的问题。至此,即完成了本发明物体处理方法的整个工作流程。图2 (a)为3D世界中的一个场景示意图,在应用本发明所述物体处理方法后,得到如图2 (b)所示的处理结果示意图,从两个示意图比较可以看出,采用本发明方法能够正常地显示3D世界中的超大物体(即图2中类似巨塔的物体),而且不会降低游戏性能。总之,本发明所采用的3D世界中的物体处理方法,通过对3D世界中的场景进行世界变换、相机和透视投影变换后,得到视平面上的场景的坐标,进而将视平面上的各个三角形的点的z分量值进行最小化处理,以使得透视变换后的每个点的深度值都不大于1,也就避免了每个三角形的点都不会被裁剪掉。由于本发明方法对经过相机和透视投影变换后的场景中的每个三角形的点的z分量值都进行了最小化处理,也就避免了其中某个三角形的点的深度值由于大于I而被裁剪的情況,因此,本发明物体处理方法能够正常地显示3D世界中的超大物体,而且不会降低游戏性能。进ー步地,由于本发明方法对经过相机和透视投影变换后的点的z分量值进行了最小化处理,也就可能出现经过透视变换后多个三角形的点的深度值相同的情况,因此,在绘制三角形的点时,本发明方法通过判断与该深度值相同的点是否已被绘制,如果已经被绘制,则不再绘制该点,也就避免了可能出现的闪烁现象。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.ー种3D世界中的物体处理方法,其特征在于,该方法包括 对3D世界中的场景进行世界变换,将该场景转换到世界坐标系中; 将得到的世界坐标系下的场景进行相机和透视投影变换,得到视平面上的场景的坐标; 将视平面上的各个三角形的点的z分量值进行最小化处理,使相机和透视投影变换后的每个点的深度值都不大于1,以使得每个三角形的点都不会被裁剪棹。
2.根据权利要求I所述的方法,其特征在于,该方法还包括 当绘制三角形的点时,判断与该深度值相同的点是否已被绘制,如果是,则不再绘制该点;否则,继续绘制该点。
3.根据权利要求I所述的方法,其特征在干,所述对3D世界中的一个场景进行世界变换包括将所述场景中组成每ー个物体的三角形的每ー个点的位置Pos与世界矩阵WorldMatrix相乘,得到场景中姆个三角形的点在世界坐标系下的位置WorldPos=mul(Pos, WorldMatrix),所述 mu I (x, y)为将 x 与 y 相乘。
4.根据权利要求3所述的方法,其特征在于,所述将得到的世界坐标系下的场景进行相机和透视投影变换,得到视平面上的场景的坐标包括 将场景中每个三角形的点在世界坐标系下的位置WorldPos与相机和透视投影矩阵MatViewProj相乘,得到场景中姆个三角形的点在视平面上的位置oPos=mul (WorldPos,MatViewPro j ),所述MatViewProj为相机变换矩阵和透视投影矩阵相乘后的矩阵。
5.根据权利要求4所述的方法,其特征在于,所述将视平面上的各个三角形的点的z分量值进行最小化处理包括 将视平面上的各个三角形的点的Z分量值oPos. Z与各个三角形的点的W分量值oPos.W之间取最小值,得到各个三角形的点的新的z分量值oPos. z’ =min (oPos. z,oPos. w),所述min (X, y)值的是取X和y中的较小值。
全文摘要
本发明提供了一种3D世界中的物体处理方法,该方法包括对3D世界中的场景进行世界变换,将该场景转换到世界坐标系中;将得到的世界坐标系下的场景进行相机和透视投影变换,得到视平面上的场景的坐标;将视平面上的各个三角形的点的深度值进行最小化处理,使每个点的深度值都不大于1,以使得每个三角形的点都不会被裁剪掉。应用本发明所述的物体处理方法,能够在不降低游戏性能的前提下,正常地显示3D世界中的超大物体。
文档编号G06T17/00GK102779352SQ20121014680
公开日2012年11月14日 申请日期2012年5月11日 优先权日2012年5月11日
发明者张广 申请人:北京像素软件科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1