公开/公告号CN105513118A
专利类型发明专利
公开/公告日2016-04-20
原文格式PDF
申请/专利权人 北京像素软件科技股份有限公司;
申请/专利号CN201510836751.1
发明设计人 李杨;
申请日2015-11-26
分类号G06T15/00;
代理机构北京品源专利代理有限公司;
代理人孟金喆
地址 102200 北京市昌平区科技园区白浮泉路10号2号楼1104A
入库时间 2023-12-18 15:33:29
法律状态公告日
法律状态信息
法律状态
2018-07-10
授权
授权
2016-05-18
实质审查的生效 IPC(主分类):G06T15/00 申请日:20151126
实质审查的生效
2016-04-20
公开
公开
技术领域
本发明实施例涉及计算机图形技术领域,尤其涉及一种体素化游戏世界的 渲染方法。
背景技术
三维游戏中构建虚拟游戏世界普遍采用多边形网格建立模型,而体素风格 的游戏世界则通过立体像素构建游戏世界。立体像素(以下简称“体素”)包含 了关于对象形状的重要信息,体素数据结构简单均匀,相对于网格建立的模型 更易修改,其修改更接近于现实世界的情况,即添加立体物或者在另一个立体 物中减去立体物。体素化的游戏世界的场景具有两个对现代游戏愈加重要的特 点,即可破坏性与可创造性。体素风格的游戏,例如《我的世界》。
体素化游戏世界构建过程中,对每个立体像素进行标识,例如,若立体像 素被标识为0,则表示该立体像素的每个面都位于内部,不可见;若立体像素 被标识为1,则表示该立体像素有一个面或者多个面是可见的。
渲染时只渲染二进制标识位为1的立体像素,若某立体像素有k(k<8)个 面是可见的,而其他(8-k)个面都不可见,现有技术中,在渲染k个可见面的 同时,其他(8-k)个面也被渲染,延长了渲染时间,加大了渲染管线压力,降 低了渲染效率。
发明内容
本发明提供一种体素化游戏世界的渲染方法,克服了现有技术中渲染外部 立体像素时渲染外部立体像素所有面,造成的渲染管线压力大以及渲染效率低 的缺陷。
本发明公开了一种体素化游戏世界的渲染方法,包括:
步骤1、判断第i个立体像素是否为外部立体像素,若是,执行步骤2,否 则,i=i+1,直至i=N,N为立体像素总个数,返回执行步骤1;
步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位 置存入顶点缓冲区,继续执行步骤3;
步骤3、根据所述顶点缓冲区的顶点位置,渲染所述外部面。
进一步地,当所述立体像素面的相邻位置存储有另一立体像素时,所述立 体像素面为内部面,否则所述立体像素面为外部面,所述内部面和外部面由第 一标识进行标记。
进一步地,当所述立体像素面全部为内部面时,所述立体像素为内部立体 像素,当所述立体像素面中存在至少一个外部面时,所述立体像素为外部立体 像素,所述内部立体像素和外部立体像素由第二标识进行标记。
进一步地,所述第一标识为一个比特的二进制数;所述第二标识为一个比 特的二进制数。
进一步地,步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将 所述顶点位置存入顶点缓冲区,具体包括:
步骤20、初始化所述第i个立体像素的面编号j=0;
步骤21、判断所述第i个立体像素的面编号j是否小于立体像素面总数M, 若是,执行步骤22,否则,执行所述步骤3;
步骤22、判断所述第i个立体像素的第j个立体像素的面是否为外部面, 若是,执行步骤23,否则,执行步骤24;
步骤23、计算所述第i个立体像素的第j个立体像素面的顶点位置,并将 所述顶点位置存入所述顶点缓冲区,继续执行步骤24;
步骤24、所述立体像素面编号j=j+1,继续执行步骤21。
进一步地,所述体素化世界的渲染方法在步骤1、判断第i个立体像素是否 为外部立体像素之前,还包括,创建所述顶点缓冲区。
本发明提供的技术方案,通过判断外部立体像素的外部面并计算所有外部 面的顶点位置,根据顶点位置只渲染外部面,减小了渲染管线压力,提高了渲 染效率。
附图说明
图1是本发明实施例一提供的一种体素化游戏世界的渲染方法的流程示意 图;
图2是本发明实施例二提供的一种体素化游戏世界的渲染方法的流程示意 图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此 处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需 要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结 构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被 描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述 成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此 外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止, 但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、 规程、子例程、子程序等等。
实施例一
图1是本发明实施例一提供的一种体素化游戏世界的渲染方法的流程示意 图。所述方法适用于构建体素化游戏世界。所述体素化游戏世界的渲染方法, 包括步骤S100-S102:
S100、判断第i个立体像素是否为外部立体像素,若是,执行步骤101,否 则,i=i+1,直至i=N,N为立体像素总个数,返回执行步骤100;
S101、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位 置存入顶点缓冲区,继续执行步骤S102;
S102、根据所述顶点缓冲区的顶点位置,渲染所述外部面。
进一步地,当立体像素面的相邻位置存储有另一立体像素时,立体像素面 为内部面,否则立体像素面为外部面,内部面和外部面由第一标识进行标记。
在对体素化游戏世界的立体像素进行渲染之前,立体像素的存储位置是已 知的,当立体像素面的相邻位置存储有另一立体像素时,表明该立体像素面被 遮挡,对外不可见,即为内部面,无需渲染处理。当立体像素面的相邻位置没 有存储立体像素时,表明该立体像素的面是对外可见的,即外部面,需要进行 渲染处理。内部面和外部面可以由第一标识进行标记,优选的,第一标识为一 个比特的二进制数。
进一步地,当立体像素面全部为内部面时,立体像素为内部立体像素,当 立体像素面中存在至少一个外部面时,立体像素为外部立体像素,内部立体像 素和外部立体像素由第二标识进行标记。优选的,第二标识为一个比特的二进 制数。
进一步地,该体素化世界的渲染方法在判断第i个立体像素是否为外部立 体像素之前,还包括,创建所述顶点缓冲区。其中,顶点缓冲区用于存储外部 面的顶点位置,顶点缓冲区的存储大小是根据构建游戏世界的立体像素的数量 确定。
本发明实施例提供的技术方案,通过判断外部立体像素的外部面并计算所 有外部面的顶点位置,根据顶点位置只渲染外部面,减小了渲染管线压力,提 高了渲染效率。
实施例二
图2是本发明实施例二提供的一种体素化游戏世界的渲染方法的流程示意 图。本实施例是在实施例一的基础上,对实施例一中的步骤S101、计算所述第 i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,进一 步具体化。所述体素化游戏世界的渲染方法,包括步骤S200-S209:
S200、初始化立体像素编号i=0,继续执行步骤S201;
S201、判断立体像素编号i是否小于立体像素总数N,若是,执行步骤S202, 否则,执行步骤S209;
S202、判断第i个立体像素是否为外部立体像素,若是,执行步骤S203, 否则,执行步骤S208;
S203、初始化第i个立体像素的面编号j=0,继续执行步骤S204;
S204、判断第i个立体像素的面编号j是否小于立体像素面总数M,若是, 执行步骤S205,否则,执行步骤S207;
S205、判断第i个立体像素的第j个立体像素面是否为外部面,若是,执行 步骤S206,否则,执行步骤S207;
S206、计算第i个立体像素的第j个立体像素面的顶点位置,并将顶点位置 存入顶点缓冲区,继续执行步骤S207;
S207、立体像素面编号j=j+1,继续执行步骤S204;
S208、立体像素编号i=i+1,继续执行步骤S201;
S209、根据顶点缓冲区的顶点位置,渲染外部面。
本发明实施例提供的技术方案,通过判断外部立体像素的外部面以及计算 所有外部面的顶点位置,根据顶点位置只渲染外部立体像素的外部面,减小了 渲染管线压力,提高了渲染效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,任何熟悉 本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技 术内容做出些许变更或修饰等,凡在本发明的精神和原则之内所作的任何修改、 等同替换或改进等,均应包含在本发明的保护范围之内。
机译: 一种从体素空间形成透视渲染的方法
机译: 一种从体素空间形成透视渲染的方法
机译: 一种从体素空间形成透视渲染的方法