一种渲染方法及装置与流程

文档序号:12732274阅读:231来源:国知局
一种渲染方法及装置与流程

本发明涉及游戏渲染领域,尤其涉及一种渲染方法及装置。



背景技术:

在游戏中,在设计玩家与BOSS战斗时,常常采用分块战斗的玩法。在分块战斗时,需对被点击的分块进行特效显示,以表示分块正在被攻击。常见的玩法设计有如下几种:1、BOSS仅有一些特定分块可以被攻击,此时,玩家需先攻击这些分块,直到这些分块被消灭后才能攻击其他部分;2、通过攻击BOSS的特定的分块来降低BOSS的威力,例如,当消灭到BOSS的手部分块可以降低BOSS的攻击力或使得BOSS无法释放某些技能;3、在攻击特定分块时可以对BOSS造成更大的伤害。

对于2D游戏而言,分块技术比较常见的是用镂空的方式渲染BOSS的各个部分,如装备和衣服,然后再和人物本体组合拼接。



技术实现要素:

由于2D游戏的分块设置难度较大,需要匹配不同分块对应的资源的动作和镂空位置以保证各个资源完全同步,程序方面在合成时也难以区分。而在3D游戏中,分块技术的设置较为容易,只需要对BOSS的3D模型进行子模块编辑,子模块更换或子模块贴图更换就可以实现分块的逻辑编辑。因而在以2D渲染为主的2D游戏中加入3D游戏的分块技术,可使美术和程序的实现比较简单,同时也可以省去繁琐的镂空和匹配2D图像的工作。

针对上述问题,本发明的目的在于提供一种渲染方法,包括如下步骤:

获取当前显示画面上的所有对象;其中,所述的所有对象包括至少一个2D对象和至少一个3D对象,所述的所有对象根据显示层次关系排列在对象列表中;且所述3D对象包括至少一个被注册了回调函数的分块;

监听用户的点击操作,并根据所述对象的显示层次及所述点击操作的坐标确定被点击的对象;

当判断被点击的对象为3D对象时,根据所述坐标确定所述3D对象被点击的分块;

根据所述显示层次关系对所述对象列表内的对象进行渲染,以生成发送至显示屏的画面帧;

调用为所述被点击的分块注册的回调函数对所述被点击的分块进行处理。

优选地,所述监听用户的点击操作,并根据所述对象的显示层次及所述点击操作的坐标确定被点击的对象,具体包括:

监听用户的点击操作,并获取所述点击操作的坐标;

当判断所述坐标位于一个2D对象的像素包围盒中时,对所述2D对象进行标记;

将所述坐标转化为投影平面坐标,并以3D引擎中的虚拟摄像机位置为原点向所述投影平面坐标做射线,对所述射线与3D世界内的3D对象做求交操作,并对与所述射线具有相交关系的3D对象进行标记;

比较被标记的2D对象和/或被标记的3D对象的显示层次,并将所述显示层次处于最上层的对象设置为被点击的对象。

优选地,所述当判断被点击的对象为3D对象时,根据所述坐标确定所述3D对象的被点击的分块,具体为:

当判断被点击的对象为3D对象时,获取与所述射线有相交关系的面片所在的分块,并确定所述分块为被点击的分块。

优选地,所述根据所述显示层次关系对所述对象列表内的对象进行渲染,以生成发送至显示屏的画面帧具体为:

根据所述对象的显示层次关系确定当前渲染的对象;

当判断当前要渲染的对象为2D对象时,将所述2D对象发送给2D引擎进行渲染,并将由所述2D引擎渲染得到的2D资源绘制在预先申请的与当前显示画面的大小对应的系统内存中;

当判断当前要渲染的对象为3D对象时,将所述3D对象发送给3D引擎进行渲染得到3D资源,并在确定预先申请的与当前显示画面的大小对应的系统内存中存储有由2D对象渲染得到的2D资源时,将所述2D资源及所述3D资源发送给显卡进行渲染,并再次申请与当前显示画面的大小对应的系统内存;

在完成对所述对象列表中的所有对象的渲染后,生成发送至显示屏的画面帧。

优选地,在获取当前显示画面上的所有对象之前,还包括:

在2d引擎中引入3d引擎的渲染和消息处理机制,并将3d引擎与当前显示画面的窗口关联,以创建得到2d渲染和3d渲染的混合环境及将3d引擎的渲染和消息处理循环机制加入到2D游戏逻辑的主循环机制当中。

本发明还提供一种渲染装置,包括:

对象获取单元,用于获取当前显示画面上的所有对象;其中,所述的所有对象包括至少一个2D对象和至少一个3D对象,所述的所有对象根据显示层次关系排列在对象列表中;且所述3D对象包括至少一个被注册了回调函数的分块;

对象监听单元,用于监听用户的点击操作,并根据所述对象的显示层次及所述点击操作的坐标确定被点击的对象;

分块确定单元,用于当判断被点击的对象为3D对象时,根据所述坐标确定所述3D对象被点击的分块;

混合渲染单元,用于根据所述显示层次关系对所述对象列表内的对象进行渲染,以生成发送至显示屏的画面帧;

回调函数调用单元,用于调用为所述被点击的分块注册的回调函数对所述被点击的分块进行处理。

优选地,所述对象监听单元具体包括:

坐标监听模块,用于监听用户的点击操作,并获取所述点击操作的坐标;

2D点击判断模块,用于当判断所述坐标位于一个2D对象的像素包围盒中时,对所述2D对象进行标记;

3D点击判断模块,用于将所述坐标转化为投影平面坐标,并以3D引擎中的虚拟摄像机位置为原点向所述投影平面坐标做射线,对所述射线与3D世界内的3D对象做求交操作,并对与所述射线具有相交关系的3D对象进行标记;

比较模块,用于比较被标记的2D对象和/或被标记的3D对象的显示层次,并将所述显示层次处于最上层的对象设置为被点击的对象。

优选地,所述分块确定单元具体用于,当判断被点击的对象为3D对象时,获取与所述射线有相交关系的面片所在的分块,并确定所述分块为被点击的分块。

优选地,所述混合渲染单元具体包括:

对象确定模块,用于根据所述对象的显示层次关系确定当前渲染的对象;

2D对象渲染模块,用于当判断当前要渲染的对象为2D对象时,将所述2D对象发送给2D引擎进行渲染,并将由所述2D引擎渲染得到的2D资源绘制在预先申请的与当前显示画面的大小对应的系统内存中;

3D对象渲染模块,用于当判断当前要渲染的对象为3D对象时,将所述3D对象发送给3D引擎进行渲染得到3D资源,并在确定预先申请的与当前显示画面的大小对应的系统内存中存储有由2D对象渲染得到的2D资源时,将所述2D资源及所述3D资源发送给显卡进行渲染,并再次申请与当前显示画面的大小对应的系统内存;

画面传输模块,用于在完成对所述对象列表中的所有对象的渲染后,生成发送至显示屏的画面帧。

优选地,还包括:

环境创建单元,用于在2d引擎中引入3d引擎的渲染和消息处理机制,并将3d引擎与当前显示画面的窗口关联,以创建得到2d渲染和3d渲染的混合环境及将3d引擎的渲染和消息处理循环机制加入到2D游戏逻辑的主循环机制当中。

本发明实施例提供的渲染方法及装置,通过在2D游戏中引入3D对象的分块方法,并提供基于2D、3D的混合渲染机制和消息处理机制,从而基于3D对象的分块战斗模式也适用于2D游戏中,使得以2D渲染为主的2D游戏中玩家操控人物或者NPC的有涉及到分块逻辑的玩法,美术和程序的实现比较简单,并省去繁琐的镂空和匹配2D图像的工作。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的渲染方法的流程示意图。

图2是本发明实施例提供的当前显示画面的示意图。

图3是本发明实施例提供的对3D对象进行分块的示意图。

图4是本发明实施例提供的对象管理层次结构图。

图5是本发明实施例提供的消息处理机制图。

图6是本发明实施例提供的渲染装置的结构示意图。

图7是图6的对象监听单元的结构示意图。

图8是图6的混合渲染单元的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,本发明提供了一种渲染方法,包括如下步骤:

S101,获取当前显示画面上的所有对象,并将获取的所有对象根据显示层次关系排列在对象列表中;其中,所述的所有对象包括至少一个2D对象和至少一个3D对象,且所述3D对象包括至少一个被注册了回调函数的分块。

如图2所示,在本发明实施例中,当前显示画面包括了至少一个2D对象02(所述2D对象可为游戏中NPC,玩家控制的游戏觉得,游戏中的场景画面等)及至少一个3D对象01(特别的,为游戏中的BOSS),其中,这些对象具有不同的显示层次关系,且这些对象根据显示层次关系依次排列在对象列表中。例如,对于一般的2D游戏而言,对象的显示层次是以屏幕中的显示位置来排序的,在屏幕中显示较上端的对象为离玩家视角比较远的对象,所以层次较低,要在离玩家近的对象的下方渲染。

在本发明实例中,为了实现BOSS的分块战斗,在制作3D对象时,需先对所述3D对象进行分块,并为每个分块注册一个回调函数,当所述3D对象被点击时,调用所述回调函数,以使所述分块根据所述回调函数的定义进行特殊显示,如可显示成红色或其他变色处理,使得用户可知道其正在攻击的部位。

如图3所示,一个3D对象是由多个面片组成,每个面片包括3个顶点,在进行编辑时,可选中需要分块的面片,并将这些面片编辑成一个子模块组,从而得到一个分块。例如,可对所述3D模块的左腿、右腿、武器、手部、身体、头部等分别进行分块。当然,将一个3D对象具体分为几块以及将哪些部分分为一块可根据实际的需要及战斗设定进行设置,本发明不做具体限定。

如图4所示,在本发明实施例中,对于需要处理分块的3D对象,在对象层次通过对象的id来管理,分块层次通过分块的id来管理,事件响应函数由事件类型标示管理(例如:鼠标双击,鼠标单击)。

S102,监听用户的点击操作,并根据所述对象的显示层次及所述点击操作的坐标确定被点击的对象。

如图5所示,在本发明实施例中,为了确定用户的点击操作,需先创建2d和3d混合的环境,并在2d引擎中引入3d引擎的渲染和消息处理机制。其中,2d引擎中通过获取鼠标的点击坐标的消息信息来绘制2d对象;将3d引擎与当前显示画面的窗口关联,获得窗口的点击信息,并处理点击信息。

在本发明实施例中,将3d引擎的渲染和消息处理循环加入到游戏逻辑的主循环之中,在消息处理时,先处理2d引擎的消息,然后处理3d引擎的消息,通过判断被点击到的2d、3d对象的层次关系来决定响应哪一个对象的点击事件。

具体地,所述步骤S102可包括如下步骤:

S1021,监听用户的点击操作,并获取所述点击操作的坐标。

在本发明实施例中,当用户通过鼠标或键盘或其他外部输入设备在所述当前显示画面上进行点击操作时,可获取所述点击操作的坐标。

S1022,当判断所述坐标位于一个2D对象的像素包围盒中时,对所述2D对象进行标记。

在本发明实施例中,可通过判定包围盒(包围盒的含义是指:图片在读取时会获得图片的长宽,在绘制时会知道图片的位置)的方式来判断鼠标的坐标是否在2D对象的像素包围中,如果坐标在某个2D对象的包围盒中,则判定该2D对象被点击到,否则为非被点击。

S1023,将所述坐标转化为投影平面坐标,并以3D引擎中的虚拟摄像机位置为原点向所述投影平面坐标做射线,对所述射线与3D世界内的3D对象做求交操作,并对与所述射线具有相交关系的3D对象进行标记。

S1024,比较被标记的2D对象和/或被标记的3D对象的显示层次,并将所述显示层次处于最上层的对象设置为被点击的对象。

S103,当判断被点击的对象为3D对象时,根据所述坐标确定所述3D对象被点击的分块。

具体地,由于所述3D对象是由一系列面片组成的,因此当判断被点击的对象为3D对象时,可通过获取与所述射线有相交关系的面片所在的分块,来确定所述3D对象被点击的分块。

S104,根据所述显示层次关系对所述对象列表内的对象进行渲染,以生成发送至显示屏的画面帧。

具体地,

S1041,根据所述对象的显示层次关系确定当前渲染的对象。

S1042,当判断当前要渲染的对象为2D对象时,将所述2D对象发送给2D引擎进行渲染,并将由所述2D引擎渲染得到的2D资源绘制在预先申请的与当前显示画面的大小对应的系统内存中。

S1043,当判断当前要渲染的对象为3D对象时,将所述3D对象发送给3D引擎进行渲染得到3D资源,并在确定预先申请的与当前显示画面的大小对应的系统内存中存储有由2D对象渲染得到的2D资源时,将所述2D资源及所述3D资源发送给显卡进行渲染,并再次申请与当前显示画面的大小对应的系统内存。

S1044,在完成对所述对象列表中的所有对象的渲染后,生成发送至显示屏的画面帧。

具体地,首先申请和当前显示画面大小一样的内存空间用于存储2D引擎渲染的2D对象,以将渲染得到的2D资源绘制在该内存空间中。接着按照对象列表中的对象的顺序依次提交绘制,有两种情况:1、当提交的是2D对象时:绘制在当前申请的内存空间中;2、当提交的是3D对象:将当前内存空间中的2D资源提交3D引擎,然后提交3D对象给3D引擎进行渲染得到3D资源,并由显卡对2D资源和3D资源进行渲染,接着生成新的内存空间用于下一层2D对象的渲染绘制。3、重复步骤1,2直到对象列表中对象均被绘制。

S105,调用为所述被点击的分块注册的回调函数对所述被点击的分块进行处理。

在本发明实施例中,在完成渲染后,调用为所述被点击的分块注册的回调函数对所述被点击的分块进行处理,使得所述分块特殊显示,从而使得玩家可以达到分块攻击。

综上所述,本发明实施例提供的渲染方法,通过在2D游戏中引入3D对象的分块方法,并提供基于2D、3D的混合渲染机制和消息处理机制,从而基于3D的分块战斗模式也适用于2D游戏中,使得以2D渲染为主的游戏中玩家操控人物或者NPC的有涉及到分块逻辑的玩法,美术和程序的实现比较简单,并省去繁琐的镂空和匹配2D图像的工作。

请一并参阅图6,本发明还提供一种渲染装置,包括:

对象获取单元10,用于获取当前显示画面上的所有对象,并将获取的所有对象根据显示层次关系排列在对象列表中;其中,所述的所有对象包括至少一个2D对象和至少一个3D对象,且所述3D对象包括至少一个被注册了回调函数的分块。

对象监听单元20,用于监听用户的点击操作,并根据所述对象的显示层次及所述点击操作的坐标确定被点击的对象。

分块确定单元30,用于当判断被点击的对象为3D对象时,根据所述坐标确定所述3D对象被点击的分块。

混合渲染单元40,用于根据所述显示层次关系对所述对象列表内的对象进行渲染,以生成发送至显示屏的画面帧。

回调函数调用单元50,用于调用为所述被点击的分块注册的回调函数对所述被点击的分块进行处理。

优选地,请一并参阅图7,所述对象监听单元20具体包括:

坐标监听模块21,用于监听用户的点击操作,并获取所述点击操作的坐标;

2D点击判断模块22,用于当判断所述坐标位于一个2D对象的像素包围盒中时,对所述2D对象进行标记;

3D点击判断模块23,用于将所述坐标转化为投影平面坐标,并以3D引擎中的虚拟摄像机位置为原点向所述投影平面坐标做射线,对所述射线与3D世界内的3D对象做求交操作,并对与所述射线具有相交关系的3D对象进行标记;

比较单元24,用于比较被标记的2D对象和/或被标记的3D对象的显示层次,并将所述显示层次处于最上层的对象设置为被点击的对象。

优选地,所述分块确定单元30具体用于,当判断被点击的对象为3D对象时,获取与所述射线有相交关系的面片所在的分块,并确定所述分块为被点击的分块。

优选地,请一并参阅图8,所述混合渲染单元40具体包括:

对象确定模块41,用于根据所述对象的显示层次关系确定当前渲染的对象;

2D对象渲染模块42,用于当判断当前要渲染的对象为2D对象时,将所述2D对象发送给2D引擎进行渲染,并将由所述2D引擎渲染得到的2D资源绘制在预先申请的与当前显示画面的大小对应的系统内存中;

3D对象渲染模块43,用于当判断当前要渲染的对象为3D对象时,将所述3D对象发送给3D引擎进行渲染得到3D资源,并在确定预先申请的与当前显示画面的大小对应的系统内存中存储有由2D对象渲染得到的2D资源时,将所述2D资源及所述3D资源发送给显卡进行渲染,并再次申请与当前显示画面的大小对应的系统内存;

画面传输模块44,用于在完成对所述对象列表中的所有对象的渲染后,生成发送至显示屏的画面帧。

优选地,所述渲染装置100还包括:

环境创建单元60,用于在2d引擎中引入3d引擎的渲染和消息处理机制,并将3d引擎与当前显示画面的窗口关联,以创建得到2d渲染和3d渲染的混合环境及将3d引擎的渲染和消息处理循环机制加入到2D游戏逻辑的主循环机制当中。

综上所述,本发明实施例提供的渲染装置100,通过在2D游戏中引入3D对象的分块方法,并提供基于2D、3D的混合渲染机制和消息处理机制,从而基于3D的分块战斗模式也适用于2D游戏中,使得以2D渲染为主的游戏中玩家操控人物或者NPC的有涉及到分块逻辑的玩法,美术和程序的实现比较简单,并省去繁琐的镂空和匹配2D图像的工作。

以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1