CN105389848A - 一种3d场景的绘制系统及方法、终端 - Google Patents
一种3d场景的绘制系统及方法、终端 Download PDFInfo
- Publication number
- CN105389848A CN105389848A CN201510752362.0A CN201510752362A CN105389848A CN 105389848 A CN105389848 A CN 105389848A CN 201510752362 A CN201510752362 A CN 201510752362A CN 105389848 A CN105389848 A CN 105389848A
- Authority
- CN
- China
- Prior art keywords
- unit
- model
- scene
- connecting line
- collision
- 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
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
- G06T19/00—Manipulating 3D models or images for computer graphics
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种3D场景的绘制系统,包括虚拟摄像机单元,用于基于设定的焦点获取3D场景的待绘制区域;碰撞计数单元,用于计算虚拟摄像机单元的镜头与所述焦点形成的连接线与3D模型的碰撞次数,并在碰撞次数为奇数次时,发送第一指令至移动单元,在碰撞次数为非零的偶数次时,发送第二指令至透明度处理单元;移动单元,用于朝靠近焦点的方向移动虚拟摄像机单元;透明度处理单元,用于获取与连接线发生碰撞的3D模型的当前透明度,并在其大于预设的目标透明度时,减小透明度;绘制单元,用于对虚拟摄像机单元能够获取到的待绘制区域进行绘制。本发明还公开了一种3D场景的绘制方法及终端,实现了在绘制得到画面中始终观测到完整的目标模型。
Description
技术领域
本发明涉及场景绘制领域,尤其涉及一种3D场景的绘制系统及方法、终端。
背景技术
在3D游戏、电影、GIS等领域,通常需要搭建虚拟的3D场景。目前,搭建虚拟的3D场景是以directX或者OpenGL为基础,通过搭建一个能够显示三维模型的3D场景,在其中放置一些需要显示的3D模型,再将这些3D模型通过几何变换,纹理映射,贴图采样等技术绘制到2D屏幕上,从而在2D屏幕上表现出三维的虚拟场景世界的效果。一般地,一个完整的3D场景需要的组件有:地形,天空盒,虚拟摄像机,3D模型,粒子效果等。
虚拟摄像机是3D场景中非常重要的一个组件。与现实世界中拍照和摄像时调整镜头类似,如图1所示,在虚拟世界绘制时,通用的做法就是将虚拟摄像机能拍到的部分通过投影变换等方式绘制并显示到2D屏幕上。虚拟摄像机的镜头往往会聚焦在一个主要人物或主要物体上,并跟随着主要人物或主要物体的移动而移动。比如在游戏中,控制一个主要角色移动时,镜头也会跟随主要角色移动。而在很多3D街景软件和一些第一人称游戏中,也是通过镜头的移动,来给用户营造一种身临其境的感受。
发明内容
由于3D场景中存在着目标模型(即被聚焦的模型),比如游戏中控制的主要角色,或者用户关注的某个特定的3D模型,此时用户必然希望关注的目标模型能够获得完整的显示。假如镜头和目标模型中间存在其他的障碍物模型,则可能导致目标模型被遮挡而无法显示或无法完全显示,影响用户的观感以及目标模型的表现力。
一种情形是,虚拟摄像机的镜头位于所述障碍物模型的内部,这必然导致镜头被遮挡而不能正常拍到目标模型,因而在绘制时可能仅仅只绘制部分的障碍物模型。
另一种情形是,障碍物模型位于镜头和目标模型之间,此时若正常绘制障碍物模型,则必然导致目标模型在镜头中无法完全显示甚至无法显示,而如果直接不绘制障碍物模型,则会破坏整个3D场景的完整性。
本发明的目的在于提供一种3D场景的绘制系统及方法、终端,以解决在镜头和目标模型之间存在障碍物模型的画面显示问题。
本发明通过下述技术手段解决前述技术问题:
一种3D场景的绘制系统,包括虚拟摄像机单元,用于基于设定的焦点获取3D场景的待绘制区域;碰撞计数单元,用于计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令至移动单元,在所述碰撞次数为非零的偶数次时,发送第二指令至透明度处理单元;所述移动单元,用于响应于所述第一指令,朝靠近所述焦点的方向移动所述虚拟摄像机单元;所述透明度处理单元,用于响应于所述第二指令,获取与所述连接线发生碰撞的3D模型的当前透明度,并在所述当前透明度大于预设的目标透明度时,减小所述3D模型的透明度;绘制单元,用于对所述虚拟摄像机单元能够获取到的待绘制区域进行绘制,以生成相应的画面帧。
本发明提供的3D场景的绘制系统,通过所述碰撞计数单元检测在所述虚拟摄像机单元的镜头与所述焦点之间的遮挡情况,以通过所述移动单元对所述虚拟摄像机单元的镜头进行了移动处理使之从障碍物模型内部移出或者通过所述透明度处理单元对障碍物模型进行了降低透明度处理,使得所述绘制单元绘制得到的画面帧中,可以始终观测到完整的目标模型,提高了用户的游戏体验和视觉观感。
优选地,所述碰撞计数单元具体用于,计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的组成所述3D模型的面片的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令给所述移动单元,在所述碰撞次数为非零的偶数次时,发送第二指令给所述透明度处理单元。
优选地,在每个3D模型外部还设置有一个包围所述3D模型的包围盒;则所述碰撞计数单元具体用于,计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的各个3D模型的包围盒表面的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令给所述移动单元,在所述碰撞次数为非零的偶数次时,发送第二指令给所述透明度处理单元。
本优选方案,通过检测所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的各个3D模型的包围盒表面的碰撞次数,简化了计算过程,提高了处理效率。
优选地,所述移动单元具体包括:第一移动步长计算模块,用于响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的面片的距离生成每帧的移动步长;第一镜头移动模块,用于在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
优选地,所述移动单元具体包括:第二移动步长计算模块,用于响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的包围盒表面的距离生成每帧的移动步长;第二镜头移动模块,用于在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
优选地,所述3D场景的绘制系统还包括透明度还原单元,所述透明度还原单元,用于在确定一个3D模型与所述连接线的碰撞状态由碰撞转变为不碰撞,且所述3D模型的当前透明度小于初始透明度时,增大所述3D模型的透明度。
本优选方案,由于所述虚拟摄像机单元是跟随所述目标模型移动的,因而,所述连接线的位置也是动态变化的,则可能所述连接线本来与一个3D模型本来是发生碰撞的,在所述目标模型移动后,所述连接线与该3D模型变为不发生碰撞,此时,通过所述透明度还原单元对这个3D模型的透明度进行还原,保证所述3D场景的真实性,提高了用户的游戏体验和视觉观感。
本发明还提供一种3D场景的绘制方法,包括如下步骤:
虚拟摄像机单元基于设定的焦点获取3D场景的待绘制区域;
所述碰撞计数单元计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令至所述移动单元,在所述碰撞次数为非零的偶数次时,发送第二指令至所述透明度处理单元;
所述移动单元响应于所述第一指令,朝靠近所述焦点的方向移动所述虚拟摄像机单元;
所述透明度处理单元响应于所述第二指令,获取与所述连接线发生碰撞的3D模型的当前透明度,并在所述当前透明度大于预设的目标透明度时,减小所述3D模型的透明度;
所述绘制单元对所述虚拟摄像机单元能够获取到的待绘制区域进行绘制,以生成相应的画面帧。
优选地,所述3D模型包括至少一个面片;
则所述碰撞计数单元计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,具体为:
所述碰撞计数单元计算计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的各个3D模型的面片的碰撞次数。
优选地,在每个3D模型外部还设置有一个包围所述3D模型的包围盒;
则所述碰撞计数单元计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,具体为:
所述碰撞计数单元计算计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的各个3D模型的包围盒表面的碰撞次数。
优选地,所述移动单元响应所述第一指令,朝靠近所述焦点的方向移动所述虚拟摄像机单元,具体包括:
所述移动单元响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的面片的距离生成每帧的移动步长;
所述移动单元在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
优选地,所述移动单元响应所述第一指令,朝靠近所述焦点的方向移动所述虚拟摄像机单元,具体包括:
所述移动单元响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的包围盒表面的距离生成每帧的移动步长;
所述移动单元在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
优选地,所述3D场景的绘制方法还包括:
透明度还原单元在确定一个3D模型与所述连接线的碰撞状态由碰撞转变为不碰撞,且所述3D模型的当前透明度小于初始透明度时,增大所述3D模型的透明度。
本发明还提供了一种终端,包括上述的3D场景的绘制系统。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术提供的虚拟摄像机获得待绘制区域的示意图。
图2是本发明实施例提供的3D场景的绘制系统的结构示意图。
图3是本发明实施例提供的虚拟摄像机单元从第一类障碍物模型的内部移出的示意图。
图4是目标模型被第二类障碍物模型遮挡的示意图。
图5是图2所示的透明度处理单元对第二类障碍物模型的透明度进行处理后绘制得到的画面帧。
图6是图2所示的移动单元的一种结构示意图。
图7是图2所示的移动单元的另一种结构示意图。
图8是本发明实施例提供的3D场景的绘制系统的另一种结构示意图。
图9是本发明实施例提供的3D场景的绘制方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图2,本发明实施例提供一种3D场景的绘制系统,所述绘制系统100包括虚拟摄像机单元10、碰撞计数单元20、移动单元30,透明度处理单元40及绘制单元50,其中:
所述虚拟摄像机单元10,用于基于设定的焦点获取3D场景的待绘制区域。
在本发明实施例中,所述虚拟摄像机单元10可布置于3D场景中,并用于获取所述3D场景的待绘制区域。其中,在进行3D场景的绘制时,只有位于所述待绘制区域内的场景元素(包括3D模型、地形、天空盒等)才会被绘制。如图1所示,类似于现实中的摄像机,所述虚拟摄像机单元10具有图像采集视野。所述虚拟摄像机单元10在所述3D场景中预置一个近平面11和远平面12,所述待绘制区域为以所述近平面11和所述远平面12的所有顶点为顶点构成的区域,例如,当所述近平面11和所述远平面12为互相平行的矩形平面时,则所述待绘制区域为一个梯形台区域。
在本发明实施例中,所述虚拟摄像机单元10具有焦点,且所述焦点锁定于所述待绘制区域内的特定的3D模型(以下称为目标模型),如游戏主角的3D模型。当所述目标模型移动时,所述虚拟摄像机单元10也跟随所述目标模型相应移动,以保证所述焦点可始终锁定于所述目标模型上。此时,所述近平面11和所述远平面12也应做相应移动。
所述碰撞计数单元20,用于计算所述虚拟摄像机单元10的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令至所述移动单元30,在所述碰撞次数为非零的偶数次时,发送第二指令至所述透明度处理单元40。
在本发明实施例中,由于所述3D场景中布置了多个3D模型,因而在所述虚拟摄像机单元10的移动过程中,可能会出现所述虚拟摄像机单元10的镜头位于某个3D模型(以下称为第一类障碍物模型)的内部,或者在所述虚拟摄像机单元10的镜头与所述目标模型之间存在若干个3D模型(以下称为第二类障碍物模型),导致所述虚拟摄像机单元10不能正常获得所述目标模型的视野。
在本发明实施例中,为了区别不同的情况,所述碰撞计数单元20计算所述虚拟摄像机单元10的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令至所述移动单元30,在所述碰撞次数为非零的偶数次时,发送第二指令至所述透明度处理单元40。
具体地,在本发明实施例中,所述3D场景中的3D模型均是由多个面片构成的,其中,每个面片可为由3个顶点构成的三角形面片。由于所述3D模型具有三维的空间结构,因而当所述虚拟摄像机单元10的镜头与所述焦点形成的连接线贯穿一个3D模型时,则所述连接线将与这个3D模型的面片发生两次碰撞,而当所述虚拟摄像机单元10的镜头位于一个3D模型的内部时,则所述连接线与这个3D模型的面片将只发生一次碰撞。
因此,在本发明实施例中,当所述碰撞计数单元20计算所述连接线与所述3D场景中的3D模型的碰撞次数为奇数次时,则说明此时所述虚拟摄像机单元10的镜头位于一个第一类障碍物模型的内部(当碰撞次数为1时,则所述镜头与所述焦点之间只有这一个第一类障碍物模型,当碰撞次数大于1时,则除了这个第一类障碍物模型外,在所述镜头与焦点之间还存在第二类障碍物模型,且第二类障碍物模型的个数为[(碰撞次数-1)/2])。而所述连接线与所述3D场景中的3D模型的碰撞次数为非零的偶数次时,则说明所述虚拟摄像机单元10的镜头与所述焦点之间存在第二类障碍物模型,其中,所述第二类障碍物模型的个数为(碰撞次数/2)。
所述移动单元30,用于响应于所述第一指令,朝靠近所述焦点的方向移动所述虚拟摄像机单元10。
如图3所示,在本发明实施例中,当所述移动单元30接收到所述碰撞计数单元20发送的第一指令时,响应于所述第一指令,并朝靠近所述焦点的方向移动所述虚拟摄像机单元10。
具体地,由于所述碰撞次数为奇数次,则表明此时所述镜头位于一个第一类障碍物模型的内部,因而需要移动所述虚拟摄像机单元10,使其镜头从所述第一类障碍物模型的内部移出。在本发明实施例中,所述虚拟摄像机单元10的移动方向可为沿所述连接线并朝靠近所述焦点的方向,也可为平移且靠近所述焦点的方向。此外,每帧的移动步长可为一个预设的长度,这可根据实际需要进行设置,本发明不做具体限定。
所述透明度处理单元40,用于响应于所述第二指令,获取与所述连接线发生碰撞的3D模型的当前透明度,并在所述当前透明度大于预设的目标透明度时,减小所述3D模型的透明度。
在本发明实施例中,当所述透明度处理单元40接收到所述碰撞计数单元20发送的第二指令时,响应于所述第二指令,获取与所述连接线发生碰撞的3D模型的当前透明度,并在所述当前透明度大于预设的目标透明度时,减小所述3D模型的透明度。
如图4,假设在所述镜头与所述焦点之间存在所述第二类障碍物模型时,则所述镜头无法正常获得所述目标模型的视野,从而在绘制得到的画面帧中,用户无法完整观测到所述目标模型,即用户只能看到所述第二类障碍物模型或只能看到部分的目标模型。此时,所述透明度处理单元40通过对所述第二类障碍物模型的透明度进行处理,使之透明度降低(本发明实施例中,3D模型的透明度的值越大,则其本身越不透明,如当所述透明度为255时,则表示这个3D模型完全不透明,而当透明度的值为0时,则这个3D模型完全透明不可见),从而在绘制得到的画面帧中,用户可以透过所述第二类障碍物模型观测到完整的所述目标模型(如图5所示)。
在本发明实施例中,所述透明度处理单元40可以直接在一帧画面刷新时将所述第二类障碍物模型的透明度调整到目标透明度。例如,假设所述第二类障碍物模型的初始透明度为255,目标透明度为100,则可在一帧画面刷新的时候,通过改变透明通道的透明值或者在pixalshader中做alpha融合,将带透明度的第二类障碍物模型在光栅化之后将颜色的rgb值乘以透明度后叠加到背景颜色上,以直接将所述第二类障碍物模型的透明度从255调整到100。
当然,更好的做法是在每帧画面刷新时将透明度减去一个固定的值,从而在经过一段时间后,使得所述第二类障碍物模型的透明度达到目标透明度。例如,在每帧画面刷新时,所述透明度处理单元40将所述第二类障碍物模型的透明度的值减小16,则在10帧后,所述第二类障碍物模型的透明度变为95,小于所述目标透明度。这种逐帧调节的方法可保持画面上的过渡变化,避免透明度突然变化导致的画面闪变。
需要说明的是,图4和图5示出的第二类障碍物模型是位于待绘制区域内的,而位于所述待绘制区域外的第二类障碍物模型虽然并不会被绘制出来,但其也会对所述目标模型形成视野上的遮挡,因而也需要对其透明度进行处理,具体处理过程与处理位于所述待绘制区域内的第二类障碍物模型的透明度一致,在此不做赘述。
所述绘制单元50,用于对所述虚拟摄像机单元10能够获取到的待绘制区域进行绘制,以生成相应的画面帧。
在本发明实施例中,所述绘制单元50对所述待绘制区域内的3D模型进行绘制,例如,对所述待绘制区域内的3D模型通过几何变换,纹理映射,贴图采样等技术进行绘制后,生成相应的画面帧,并将这些画面帧发送至终端设备,以进行显示。由于在发现所述镜头与所述目标模型之间存在障碍物模型后,已经通过所述移动单元30对所述虚拟摄像机单元10的镜头进行了移动处理使之从第一类障碍物模型中移出或者已经通过所述透明度处理单元40对所述第二类障碍物模型进行了降低透明度的处理,因而可保证在绘制得到的画面帧中,用户能始终观测到完整的目标模型。
综上所述,本发明实施例提供的3D场景的绘制系统100,通过所述碰撞计数单元20检测在所述虚拟摄像机单元10的镜头与所述焦点之间的遮挡情况,并在检测到所述虚拟摄像机单元10的镜头与所述焦点之间存在障碍物模型后,通过所述移动单元30对所述虚拟摄像机单元10的镜头进行了移动处理或者通过所述透明度处理单元40对第二类障碍物模型进行了降低透明度处理,使得所述绘制单元50绘制得到的画面帧中,可以始终观测到完整的目标模型,提高了用户的游戏体验和视觉观感。
为进一步对本发明的方案进行更详细的说明,下文对本发明的一些优选实施例进行具体描述或举例说明:
一、针对所述碰撞计数单元20的优选实施例。
上述实施例中,所述碰撞计数单元20是检测所述连接线与组成3D模型的面片之间的碰撞次数,然而,由于所述3D模型形状各异且不规则,组成所述3D模型的面片数量也可能非常多,因而检测所述连接线与组成3D模型的面片之间的碰撞会比较复杂。
一个优选的实现方法是检测所述连接线与设置于所述3D模型外部的包围盒表面的碰撞次数。具体地,在每个3D模型外部均设置有一个包围所述3D模型的包围盒,这个包围盒可为长方体、正方体、圆形获取其他多边形体等。由于所述包围盒的形状相对所述3D模型规则,且所述包围盒的结构也比较简单,因而检测所述连接线与设置于所述3D模型外部的包围盒表面的碰撞次数相比检测所述连接线与组成3D模型的面片之间的碰撞次数有更好的处理效率。
二、针对所述移动单元30的优选实施例。
上述实施例中,所述移动单元30是通过控制所述虚拟摄像机单元10预定的移动步长来实现将所述虚拟摄像机单元10从第一类障碍物模型中移出。然而,由于所述镜头与第一类障碍物模型的距离未知,如果每帧的移动步长设置得太长,可能导致所述虚拟摄像机单元10的移动幅度过大,而如果移动步长设置得太短,则可能需要通过很长时间的移动才能将所述虚拟摄像机单元10从第一类障碍物模型中移出。
因此,优选的方案是根据所述镜头与第一类障碍物模型的距离来确定移动步长。
具体的,请一并参阅图6,在一个实施例中,所述移动单元30具体包括:
第一移动步长计算模块31,用于响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的面片的距离生成每帧的移动步长。
第一镜头移动模块32,用于在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
请一并参阅图7,针对第一个优选实施例,所述移动单元30具体包括:
第二移动步长计算模块33,用于响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的包围盒表面的距离生成每帧的移动步长。
第二镜头移动模块34,用于在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
例如,假设所述镜头与第一个碰撞的面片(或包围盒表面)的距离L,则可选取移动步长Δd=L/(0.5×fps)。其中,fps为帧率,这样在0.5s后,所述虚拟摄像机单元10从自然从所述第一类障碍物模型的内部移出。
三、针对透明度还原的优选实施例。
在本发明实施例中,由于所述虚拟摄像机单元10是跟随所述目标模型移动的,因而,所述连接线的位置也是动态变化的,则可能所述连接线本来与一个3D模型本来是发生碰撞的,在所述目标模型移动后,所述连接线与该3D模型变为不发生碰撞,此时,需对这个3D模型的透明度进行还原,以保证所述3D场景的真实性。
具体地,请一并参阅图8,为了实现上述技术方案,所述绘制系统100还包括:
透明度还原单元60,用于在确定一个3D模型与所述连接线的碰撞状态由碰撞转变为不碰撞,且所述3D模型的当前透明度小于初始透明度时,增大所述3D模型的透明度。
在本发明实施例中,所述透明度还原单元60可对每一个处于碰撞状态的第二类障碍物模型进行标记,并实时检测其碰撞状态是否发生变化,若发生了变化(由碰撞转变为不碰撞),则所述透明度还原单元60判断其当前透明度是否小于初始透明度,若是,则增大其透明度,直至等于其初始透明度,即完成了透明度的还原。
请参阅图9,图9是本发明实施例提供的3D场景的绘制方法的流程示意图。其至少包括:
S101,虚拟摄像机单元基于设定的焦点获取3D场景的待绘制区域。
S102,碰撞计数单元计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令至移动单元,在所述碰撞次数为非零的偶数次时,发送第二指令至透明度处理单元。
S103,所述移动单元响应于所述第一指令,朝靠近所述焦点的方向移动所述虚拟摄像机单元。
S104,所述透明度处理单元响应于所述第二指令,获取与所述连接线发生碰撞的3D模型的当前透明度,并在所述当前透明度大于预设的目标透明度时,减小所述3D模型的透明度。
S105,绘制单元对所述虚拟摄像机单元能够获取到的待绘制区域进行绘制,以生成相应的画面帧。
综上所述,本发明实施例提供的3D场景的绘制方法,通过所述碰撞计数单元检测在所述虚拟摄像机单元的镜头与所述焦点之间的遮挡情况,以通过所述移动单元对所述虚拟摄像机单元的镜头进行了移动处理或者通过所述透明度处理单元对第二类障碍物模型进行了降低透明度处理,使得所述绘制单元绘制得到的画面帧中,可以始终观测到完整的目标模型,提高了用户的游戏体验。
在一个优选实施例中,步骤S102,具体为:
碰撞计数单元计算计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的组成所述3D模型的面片的碰撞次数。
在一个优选实施例中,在每个3D模型外部还设置有一个包围所述3D模型的包围盒;
则步骤S102,具体为:
碰撞计数单元计算计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的各个3D模型的包围盒表面的碰撞次数。
在一个优选实施例中,所述步骤S103具体包括:
所述移动单元响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的面片的距离生成每帧的移动步长;
所述移动单元在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
在一个优选实施例中,所述步骤S103具体包括:
所述移动单元响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的包围盒表面的距离生成每帧的移动步长;
所述移动单元在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
在一个优选实施例中,所述绘制方法还包括:
S106,透明度还原单元在确定一个3D模型与所述连接线的碰撞状态由碰撞转变为不碰撞,且所述3D模型的当前透明度小于初始透明度时,增大所述3D模型的透明度。
本优选实施例中,由于所述虚拟摄像机单元是跟随所述目标模型移动的,因而,所述连接线的位置也是动态变化的,则可能所述连接线本来与一个3D模型本来是发生碰撞的,在所述目标模型移动后,所述连接线与该3D模型变为不发生碰撞,此时,通过所述透明度还原单元对这个3D模型的透明度进行还原,保证所述3D场景的真实性。
本发明实施例还提供了一种终端,所述终端包括上述任一实施例所述的3D场景的绘制系统。
本发明实施例提供的终端,通过所述碰撞计数单元20检测在所述虚拟摄像机单元10的镜头与所述焦点之间的遮挡情况,以通过所述移动单元30对所述虚拟摄像机单元的镜头进行了移动处理或者通过所述透明度处理单元40对第二类障碍物模型进行了降低透明度处理,使得所述绘制单元50绘制得到的画面帧中,可以始终观测到完整的目标模型,提高了用户体验和视觉观感。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
Claims (13)
1.一种3D场景的绘制系统,包括虚拟摄像机单元,用于基于设定的焦点获取3D场景的待绘制区域,其特征在于,还包括碰撞计数单元、移动单元,透明度处理单元及绘制单元,其中:
所述碰撞计数单元,用于计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令至所述移动单元,在所述碰撞次数为非零的偶数次时,发送第二指令至所述透明度处理单元;
所述移动单元,用于响应于所述第一指令,朝靠近所述焦点的方向移动所述虚拟摄像机单元;
所述透明度处理单元,用于响应于所述第二指令,获取与所述连接线发生碰撞的3D模型的当前透明度,并在所述当前透明度大于预设的目标透明度时,减小所述3D模型的透明度;
所述绘制单元,用于对所述虚拟摄像机单元能够获取到的待绘制区域进行绘制,以生成相应的画面帧。
2.根据权利要求1所述的3D场景的绘制系统,其特征在于,所述碰撞计数单元具体用于,计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的组成所述3D模型的面片的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令给所述移动单元,在所述碰撞次数为非零的偶数次时,发送第二指令给所述透明度处理单元。
3.根据权利要求1所述的3D场景的绘制系统,其特征在于,在每个3D模型外部还设置有一个包围所述3D模型的包围盒;
则所述碰撞计数单元具体用于,计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的各个3D模型的包围盒表面的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令给所述移动单元,在所述碰撞次数为非零的偶数次时,发送第二指令给所述透明度处理单元。
4.根据权利要求2所述的3D场景的绘制系统,其特征在于,所述移动单元具体包括:
第一移动步长计算模块,用于响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的面片的距离生成每帧的移动步长;
第一镜头移动模块,用于在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
5.根据权利要求3所述的3D场景的绘制系统,其特征在于,所述移动单元具体包括:
第二移动步长计算模块,用于响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的包围盒表面的距离生成每帧的移动步长;
第二镜头移动模块,用于在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
6.根据权利要求1至5任意一项所述的3D场景的绘制系统,其特征在于,所述3D场景的绘制系统还包括透明度还原单元,
所述透明度还原单元,用于在确定一个3D模型与所述连接线的碰撞状态由碰撞转变为不碰撞,且所述3D模型的当前透明度小于初始透明度时,增大所述3D模型的透明度。
7.一种3D场景的绘制方法,其特征在于,包括如下步骤:
虚拟摄像机单元基于设定的焦点获取3D场景的待绘制区域;
碰撞计数单元计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,并在所述碰撞次数为奇数次时,发送第一指令至移动单元,在所述碰撞次数为非零的偶数次时,发送第二指令至透明度处理单元;
所述移动单元响应于所述第一指令,朝靠近所述焦点的方向移动所述虚拟摄像机单元;
所述透明度处理单元响应于所述第二指令,获取与所述连接线发生碰撞的3D模型的当前透明度,并在所述当前透明度大于预设的目标透明度时,减小所述3D模型的透明度;
绘制单元对所述虚拟摄像机单元能够获取到的待绘制区域进行绘制,以生成相应的画面帧。
8.根据权利要求7所述的3D场景的绘制方法,其特征在于,
所述碰撞计数单元计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,具体为:
碰撞计数单元计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的组成所述3D模型的面片的碰撞次数。
9.根据权利要求7所述的3D场景的绘制方法,其特征在于,在每个3D模型外部还设置有一个包围所述3D模型的包围盒;
则所述碰撞计数单元计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的3D模型的碰撞次数,具体为:
碰撞计数单元计算所述虚拟摄像机单元的镜头与所述焦点形成的连接线与所述3D场景中的各个3D模型的包围盒表面的碰撞次数。
10.根据权利要求8所述的3D场景的绘制方法,其特征在于,所述移动单元响应所述第一指令,朝靠近所述焦点的方向移动所述虚拟摄像机单元,具体包括:
所述移动单元响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的面片的距离生成每帧的移动步长;
所述移动单元在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
11.根据权利要求9所述的3D场景的绘制方法,其特征在于,所述移动单元响应所述第一指令,朝靠近所述焦点的方向移动所述虚拟摄像机单元,具体包括:
所述移动单元响应所述第一指令,并根据所述镜头与离所述镜头最近且与所述连接线发生碰撞的包围盒表面的距离生成每帧的移动步长;
所述移动单元在每帧刷新时,根据所述移动步长沿所述连接线朝靠近所述焦点的方向移动所述虚拟摄像机单元。
12.根据权利要求7至11任意一项所述的3D场景的绘制方法,其特征在于,所述3D场景的绘制方法还包括:
透明度还原单元在确定一个3D模型与所述连接线的碰撞状态由碰撞转变为不碰撞,且所述3D模型的当前透明度小于初始透明度时,增大所述3D模型的透明度。
13.一种终端,其特征在于,包括如权利要求1至6任意一项所述的3D场景的绘制系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510752362.0A CN105389848B (zh) | 2015-11-06 | 2015-11-06 | 一种3d场景的绘制系统及方法、终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510752362.0A CN105389848B (zh) | 2015-11-06 | 2015-11-06 | 一种3d场景的绘制系统及方法、终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389848A true CN105389848A (zh) | 2016-03-09 |
CN105389848B CN105389848B (zh) | 2019-04-09 |
Family
ID=55422096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510752362.0A Active CN105389848B (zh) | 2015-11-06 | 2015-11-06 | 一种3d场景的绘制系统及方法、终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105389848B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106582015A (zh) * | 2016-11-24 | 2017-04-26 | 北京乐动卓越科技有限公司 | 一种在2d游戏中实现3d效果展示的方法及系统 |
CN106713879A (zh) * | 2016-11-25 | 2017-05-24 | 重庆杰夫与友文化创意有限公司 | 避障投影方法及其装置 |
CN106803279A (zh) * | 2016-12-26 | 2017-06-06 | 珠海金山网络游戏科技有限公司 | 一种优化绘制天空的方法 |
WO2018072548A1 (zh) * | 2016-10-18 | 2018-04-26 | 深圳市火花幻境虚拟现实技术有限公司 | 一种在虚拟现实应用中避免用户眩晕的方法及装置 |
CN108429905A (zh) * | 2018-06-01 | 2018-08-21 | 宁波视睿迪光电有限公司 | 一种裸眼3d显示方法、装置、电子设备及存储介质 |
CN108694190A (zh) * | 2017-04-08 | 2018-10-23 | 大连万达集团股份有限公司 | 浏览bim模型时消除被观察物体前置遮挡物的操作方法 |
CN108805985A (zh) * | 2018-03-23 | 2018-11-13 | 福建数博讯信息科技有限公司 | 虚拟空间方法和装置 |
CN109920057A (zh) * | 2019-03-06 | 2019-06-21 | 珠海金山网络游戏科技有限公司 | 一种视点变换方法及装置、计算设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1985277A (zh) * | 2004-05-11 | 2007-06-20 | 科乐美数码娱乐株式会社 | 显示装置、显示方法、信息记录媒体及程序 |
CN102918568A (zh) * | 2010-04-02 | 2013-02-06 | 高通股份有限公司 | 扩增现实方向取向遮罩 |
EP2597622A2 (en) * | 2011-11-28 | 2013-05-29 | Samsung Medison Co., Ltd. | Method and apparatus for combining plurality of 2D images with 3D model |
US8493383B1 (en) * | 2009-12-10 | 2013-07-23 | Pixar | Adaptive depth of field sampling |
CN104995666A (zh) * | 2012-12-21 | 2015-10-21 | Metaio有限公司 | 用于在真实环境中表示虚拟信息的方法 |
-
2015
- 2015-11-06 CN CN201510752362.0A patent/CN105389848B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1985277A (zh) * | 2004-05-11 | 2007-06-20 | 科乐美数码娱乐株式会社 | 显示装置、显示方法、信息记录媒体及程序 |
US8493383B1 (en) * | 2009-12-10 | 2013-07-23 | Pixar | Adaptive depth of field sampling |
CN102918568A (zh) * | 2010-04-02 | 2013-02-06 | 高通股份有限公司 | 扩增现实方向取向遮罩 |
EP2597622A2 (en) * | 2011-11-28 | 2013-05-29 | Samsung Medison Co., Ltd. | Method and apparatus for combining plurality of 2D images with 3D model |
CN104995666A (zh) * | 2012-12-21 | 2015-10-21 | Metaio有限公司 | 用于在真实环境中表示虚拟信息的方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018072548A1 (zh) * | 2016-10-18 | 2018-04-26 | 深圳市火花幻境虚拟现实技术有限公司 | 一种在虚拟现实应用中避免用户眩晕的方法及装置 |
CN106582015A (zh) * | 2016-11-24 | 2017-04-26 | 北京乐动卓越科技有限公司 | 一种在2d游戏中实现3d效果展示的方法及系统 |
CN106582015B (zh) * | 2016-11-24 | 2020-01-07 | 北京乐动卓越科技有限公司 | 一种在2d游戏中实现3d效果展示的方法及系统 |
CN106713879A (zh) * | 2016-11-25 | 2017-05-24 | 重庆杰夫与友文化创意有限公司 | 避障投影方法及其装置 |
CN106803279A (zh) * | 2016-12-26 | 2017-06-06 | 珠海金山网络游戏科技有限公司 | 一种优化绘制天空的方法 |
CN108694190A (zh) * | 2017-04-08 | 2018-10-23 | 大连万达集团股份有限公司 | 浏览bim模型时消除被观察物体前置遮挡物的操作方法 |
CN108805985A (zh) * | 2018-03-23 | 2018-11-13 | 福建数博讯信息科技有限公司 | 虚拟空间方法和装置 |
CN108805985B (zh) * | 2018-03-23 | 2022-02-15 | 福建数博讯信息科技有限公司 | 虚拟空间方法和装置 |
CN108429905A (zh) * | 2018-06-01 | 2018-08-21 | 宁波视睿迪光电有限公司 | 一种裸眼3d显示方法、装置、电子设备及存储介质 |
CN109920057A (zh) * | 2019-03-06 | 2019-06-21 | 珠海金山网络游戏科技有限公司 | 一种视点变换方法及装置、计算设备及存储介质 |
CN109920057B (zh) * | 2019-03-06 | 2022-12-09 | 珠海金山数字网络科技有限公司 | 一种视点变换方法及装置、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105389848B (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389848A (zh) | 一种3d场景的绘制系统及方法、终端 | |
KR101944911B1 (ko) | 영상 처리 방법 및 영상 처리 장치 | |
US20150235408A1 (en) | Parallax Depth Rendering | |
EP2787734B1 (en) | Apparatus and method for forming light field image | |
KR20170086077A (ko) | 증강 현실 장면에서의 드로잉을 위한 깊이 정보의 사용 | |
CN109743892A (zh) | 虚拟现实内容的显示方法和装置 | |
WO2012139232A1 (en) | Image processing | |
KR20150105399A (ko) | 셰이더 기반의 그래픽스 콘텐츠에 대한 뷰잉 배향에 의한 입체 변환 | |
CN103413353B (zh) | 一种资源展示方法、装置和终端 | |
US20140176613A1 (en) | Alternate viewpoint rendering | |
KR20190134715A (ko) | 전자 디스플레이 앞에 또는 위에 투사한 것처럼 보이는 가상의 3차원 이미지를 생성하는 시스템, 방법 및 소프트웨어 | |
CN104103092A (zh) | 一种基于聚光灯实时动态阴影的实现方法 | |
US20190266802A1 (en) | Display of Visual Data with a Virtual Reality Headset | |
WO2012140397A2 (en) | Three-dimensional display system | |
US9628770B2 (en) | System and method for stereoscopic 3-D rendering | |
JP7293208B2 (ja) | マルチ・ビュー・コンテンツを観察するユーザに情報を提示する方法及び機器 | |
US9225960B2 (en) | Apparatus and method for attenuating stereoscopic sense of stereoscopic image | |
CN105389847A (zh) | 一种3d场景的绘制系统及方法、终端 | |
CN106780677B (zh) | 通过镜头运动背景分层处理模拟三维动画视觉效果的方法 | |
CN110892706B (zh) | 用于在2d显示设备上显示从光场数据导出的内容的方法 | |
US10110876B1 (en) | System and method for displaying images in 3-D stereo | |
JP2007515012A (ja) | 3次元モデルを縮尺変更する方法及び縮尺変更ユニット | |
Lee et al. | Eye tracking based glasses-free 3D display by dynamic light field rendering | |
TWI852053B (zh) | 使用深度圖的視像合成系統和方法 | |
US20160007014A1 (en) | Equidistant stereo lens shader |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |