首页> 中国专利> 一种基于3D网页游戏的渲染引擎、实现方法及制作工具

一种基于3D网页游戏的渲染引擎、实现方法及制作工具

摘要

本发明提供一种基于3D网页游戏的渲染引擎、实现方法及制作工具,所述渲染引擎,包括:解析及加载模块,从工作流最终输出的自定义文件格式中读取、解压缩和解析出具体渲染所需要的信息,实现非阻塞解析;场景管理模块,用于实现视域剔除、场景物体遍历分类、拾取和鼠标事件派发以及渲染流程管理;摄像机及控制模块,用于实现场景漫游和实现摄像机动画;渲染模块,用于渲染一个物体所需要的所有信息,包含对几何体、材质、动画以及变换矩阵的渲染。所述制作工具,包括导出插件、自定义文件格式、3D编辑器、特效制作工具以及UI制作工具。本发明具有良好的跨平台性和可扩展性,能够大大缩短游戏开发周期,并降低开发门槛。

著录项

  • 公开/公告号CN105354872A

    专利类型发明专利

  • 公开/公告日2016-02-24

    原文格式PDF

  • 申请/专利权人 深圳墨麟科技股份有限公司;

    申请/专利号CN201510738588.5

  • 发明设计人 汪长明;

    申请日2015-11-04

  • 分类号G06T13/20(20110101);

  • 代理机构深圳市科吉华烽知识产权事务所(普通合伙);

  • 代理人温玉珍

  • 地址 518057 广东省深圳市南山区科苑路15号科兴科学园B栋三单元9层

  • 入库时间 2023-12-18 14:21:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-27

    授权

    授权

  • 2016-03-23

    实质审查的生效 IPC(主分类):G06T13/20 申请日:20151104

    实质审查的生效

  • 2016-02-24

    公开

    公开

说明书

技术领域

本发明涉及一种渲染引擎,尤其涉及一种基于3D网页游戏的渲染引擎,并涉及该基于3D网页游戏的渲染引擎实现方法及制作工具。

背景技术

现阶段网页游戏已步入3D高品质大型游戏时代,而基于原生Stage3D的游戏开发非常困难,开发人员学习与熟悉成本高,而且没有一套高效、易用的开发流程,导致在开发过程中,过多关注底层技术和开发流程,而忽略了游戏本身的可玩性等。使得开发流程过长,对人员素质要求过高,以及项目结构混乱,代码难以维护。

发明内容

本发明所要解决的技术问题是需要根据网页游戏的技术特点和基本需求,进而提供一个高性能、封装优良和结构模块清晰良好的具有核心代码库的基于3D网页游戏的渲染引擎,并涉及该基于3D网页游戏的渲染引擎实现方法及制作工具。

对此,本发明提供一种基于3D网页游戏的渲染引擎,包括:

解析及加载模块,从工作流最终输出的渲染引擎的自定义文件格式中读取、解压缩和解析出具体渲染所需要的信息,实现非阻塞解析;

场景管理模块,用于实现视域剔除、场景物体遍历分类、拾取和鼠标事件派发以及渲染流程管理;

摄像机及控制模块,用于实现场景漫游和实现摄像机动画,并对特效、关键帧动画、模型动作、摄像机动画和声音进行组合,然后在时间轴上进行调整,进而得到最终的特效和技能;

渲染模块,用于渲染一个物体所需要的所有信息,包含对几何体、材质、动画以及变换矩阵的渲染。

本发明的进一步改进在于,所述解析及加载模块的具体过程包括:解压缩,然后解析一个自定义文件,并检查本次解析的时间;当本次解析时间在设定的阈值内则直接开始下一个解压缩的过程,当本次解析时间超出设定的阈值则等待下一帧后开始解析。

本发明的进一步改进在于,所述场景管理模块中,所述视域剔除根据可见性判断物体是否在视野中可见,进而剔除被遮挡或者视野外的物体以降低实时渲染压力;所述场景物体遍历分类依据层级关系以及材质是否半透明对物体进行分类以及确定渲染顺序;所述拾取和鼠标事件派发用于判断相交和鼠标检测,可以检测游戏中指定物体的边缘或包围框,当两个物体碰撞时,可以防止相互穿透;所述渲染流程管理用于负责管理整个渲染引擎渲染的过程。

本发明还提供一种基于3D网页游戏的渲染引擎实现方法,所述渲染引擎实现方法用于实现如上所述的基于3D网页游戏的渲染引擎,并包括以下步骤:

步骤S1,设置渲染引擎的自定义文件格式;

步骤S2,渲染引擎基于C++语言的3DMax导出插件;

步骤S3,通过3D编辑器对3D场景进行优化处理;

步骤S4,通过UI编辑器制作UI素材库。

本发明的进一步改进在于,所述步骤S1中,所述自定义文件格式以块为解析的基本单位,实现对图片的分块压缩与非阻塞的解析,同时实现对场景数据的复用和压缩。

本发明的进一步改进在于,所述步骤S2中,所述导出插件包括导出美术制作的场景、动画、材质、灯光和模型中的至少一种插件。

本发明的进一步改进在于,所述步骤S3中,所述优化处理包括设置灯光、设置材质效果、刷地表、画路径、摆放特效、粒子动画、关键帧动画、条带、震动和测试中的至少一种优化处理;优化处理之后将更改结果保存为所述步骤S1中的渲染引擎的自定义文件格式,在保存过程中,自动对所存储的文件进行压缩、删减、同类识别合并和组合。

本发明的进一步改进在于,所述步骤S3中,所述3D编辑器为用户与3D渲染引擎交互的接口,用户通过3D编辑器对原始的三维场景、三维角色和三维特效分别进行制作、编辑、加工和优化,该过程中,用户对原始文件的各种属性的修改,最终会自动存储到所述的自定义文件格式的文件中,并最终由渲染引擎进行解析、加载和渲染。

本发明的进一步改进在于,所述步骤S4中,所述UI素材库用于实现素材的拖拽、缩放、调整和九宫格编辑,并将素材转化为3D渲染引擎所使用的文件格式。

本发明还提供一种基于3D网页游戏的渲染引擎制作工具,所述渲染引擎制作工具用于实现如上所述的基于3D网页游戏的渲染引擎,并包括:

导出插件,所述导出插件安装在3Dmax中,用于将美术制作好的原始模型和动作从3DMax转化为所述渲染引擎可直接使用的自定义文件格式;

自定义文件格式,存储所述渲染引擎渲染时所需要的场景信息;

3D编辑器,用于对所述自定义文件格式进行处理;

特效制作工具,集成于所述3D编辑器中,用于游戏中技能、动画和场景物效的制作;

UI制作工具,用于为游戏制作专用的基于GPU渲染的3DUI,所述渲染引擎的核心代码库调用所述UI制作工具。

与现有技术相比,本发明的有益效果在于:具有良好的跨平台性和可扩展性,同时采用各种先进的优化技术,具有非常好的渲染性能、资源压缩率和运行速率等;同时在实现了渲染引擎的核心代码库基础上,扩展开发出一系列配套的基于3D网页游戏的渲染引擎制作工具,形成一套完成的游戏开发工作流程,使用简单、直观和易于上手,可供游戏开发中的各种人员角色协作使用,能够大大缩短游戏开发周期,并降低开发门槛。

附图说明

图1是本发明一种实施例的系统结构示意图;

图2是本发明一种实施例的框架结构示意图;

图3是本发明另一种实施例的工作流程示意图;

图4是本发明另一种实施例制作3D网页游戏的工作流程示意图;

图5是本发明另一种实施例的3D编辑器的框架结构示意图;

图6是本发明另一种实施例的动画与技能编辑的框架结构示意图;

图7是本发明再一种实施例的系统工作流示意图。

具体实施方式

下面结合附图,对本发明的较优的实施例作进一步的详细说明:

实施例1:

如图1所示,本例提供一种基于3D网页游戏的渲染引擎,包括:

解析及加载模块,从工作流最终输出的渲染引擎的自定义文件格式中读取、解压缩和解析出具体渲染所需要的信息,实现非阻塞解析;

场景管理模块,用于实现视域剔除、场景物体遍历分类、拾取和鼠标事件派发以及渲染流程管理;

摄像机及控制模块,用于实现场景漫游和实现摄像机动画,并对特效、关键帧动画、模型动作、摄像机动画和声音进行组合,然后在时间轴上进行调整,进而得到最终的特效和技能;

渲染模块,用于渲染一个物体所需要的所有信息,包含对几何体、材质、动画以及变换矩阵的渲染。

本例在渲染引擎中,使用C++重写了所述解析及加载模块,替换了Flash自带的加载资源的方法,使内存可以控制,同时可以异步加载,使用多个Worker,加快了可进入场景的速度;在解析时,大数据被解析为ByteArray类型,并使用快速内存的方式进行操作,不仅减少了内存的使用,还提升了解析的效率。所述解析及加载模块、场景管理模块、摄像机及控制模块和渲染模块共同构成所述渲染引擎的核心代码库,其详细的框架结构示意图如图2所示,本例所述渲染引擎的核心代码库灵活易用,结构清晰,扩展性强,稳定性强,方便开发与维护;同时由于提供了一系列制作工具的支持,学习成本低,开发周期短。

所述渲染引擎用于驱动上层游戏的渲染以及一些底层的逻辑管理,比如路径的选择、摄像机漫游、拾取交互、模型动画驱动和碰撞检测等。

所述解析及加载模块,从工作流最终输出的渲染引擎的自定义文件格式中读取、解压缩和解析出具体渲染所需要的信息,如模型、动作、贴图、灯光等;进而实现了非阻塞解析,其具体过程是:第一、解压缩,然后解析一个模块或一个自定义文件;第二、检查本次解析的时间,假设本次解析时间比较短,如本次解析时间在设定的阈值内,则直接开始下一个BLOCK,即直接开始下一个解压缩的过程;第三、解压缩,然后解析另一个模块或另一个自定义文件;检查本次解析的时间,假设本次解析时间超出设定的阈值,则等待下一帧数据后再开始解析;所述设定的阈值可以根据实际情况或用户的需求进行设置。

所述场景管理模块用于实现视域剔除、场景物体遍历分类、拾取、鼠标事件派发,渲染流程管理。所述视域剔除主要根据可见性判断物体是否在视野中可见,剔除被遮挡或者视野外的物体,能有效降低实时渲染压力;所述场景物体遍历分类依据层级关系以及材质是否半透明对某些特殊处理的物体进行分类以及确定渲染顺序;所述拾取和鼠标事件派发用于判断相交和鼠标检测,可以检测游戏中指定物体的边缘或包围框,当两个物体碰撞时,可以防止相互穿透;所述渲染流程管理则负责管理整个渲染引擎渲染的过程。

摄像机及控制模块在场景中假定一个摄像机,并通过这个摄像机观察场景,摄像机所在的位置称设置为投影中心,所看到的场景的范围为平截头体,将平截头体中物体压扁并呈现在屏幕上的坐标变换,得到最终显示在屏幕上的场景。摄像机附着在控制器上,由控制器控制其平移、旋转。常用的控制器有第一人称控制器,常应用于射击类等游戏,围绕控制器,跟随控制器,常用于赛车类游戏。渲染引擎中自定义了智能摄像机,提供类弹簧的缓动效果,对旋转和平移做了一定限制,使之能够根据人物周围的碰撞体智能检测离人物的远近。

图2中,所述渲染模块还包括实体模块、光照阴影模块、材质模块、动画模块和后置模块;所述实体模块包含了渲染一个物体所需要的所有信息,主要包含几何体、材质、动画以及变换矩阵,该实体模块包含于所述渲染模块之中。光照阴影模块,所述光照阴影模块用于编组和收集场景中的灯光,影响物体表面材质表现效果;阴影则是为了模拟现实中的背光面的投影,达到更生动的表现效果。材质模块,所述材质模块中的材质影响模型最终的颜色和对光的反映,模块中支持材质额外的特殊的效果,比如雾、蚀刻、消散和环境贴图等。动画模块,所述动画模块中的动画是游戏中不可缺少的元素,本例核心代码库中支持的动画种类包括顶点动画、骨骼动画、关键帧动画、粒子动画、组合动画和其他动画,所述动画模块包含于所述摄像机及控制模块之中。在动画模块的骨骼动画模块中,由于Flash自身寄存器的限制,传统的做法中,只能支持38根左右的骨骼,在本引擎中,通过采用对偶四元数替换矩阵,将每根骨骼所需要的寄存器从4个降为3个,从而可以支持到55根骨骼,进一步通过浮点数拆分,使一个寄存器可以存储两个数据,将骨骼上限扩展到100,此外,通过自动骨骼拆分,可以不限制骨骼数目。后置效果模块,所述后置效果模块是指在渲染流程的最后,应用于全屏的特殊效果,往往能带来更为真实或者更加漂亮的效果,所述后置效果模块包含于所述渲染模块之中。所述渲染模块还包括寻路模块,所述寻路模块是用于自动确认人物在场景中的行动路径,引擎中在Worker中生成寻路数据,避免卡顿。

从上述技术方案可以看出,本例是基于Stage3D提供从底层渲染到上层游戏开发工作流的完整支持,具有Flash/AIR本身的良好跨平台性和可移植性,方便游戏开发者在桌面及手机平台上开发游戏,降低手机/网页游戏开发门槛,提供一套完整解决方案;而且该渲染引擎不仅可以运行在PC浏览器上,也可以在手机浏览器上或打包成客户端发布,并可支持Android和iOS;此外,所述渲染引擎运行在GPU上,通过GPU实现加速能够大大提高游戏体验。

本例所述解析及加载模块的具体过程包括:解压缩,然后解析一个自定义文件,并检查本次解析的时间;当本次解析时间在设定的阈值内则直接开始下一个解压缩的过程,当本次解析时间超出设定的阈值则等待下一帧后开始解析。具体的,第一、解压缩,然后解析一个模块或一个自定义文件;第二、检查本次解析的时间,假设本次解析时间比较短,如本次解析时间在设定的阈值内,则直接开始下一个BLOCK,即直接开始下一个解压缩的过程;第三、解压缩,然后解析另一个模块或另一个自定义文件;检查本次解析的时间,假设本次解析时间超出设定的阈值,则等待下一帧数据后再开始解析;所述设定的阈值可以根据实际情况或用户的需求进行设置。所述设定的阈值可以根据用户的自定义需要进行设置,该设定的阈值可以般参考解析一帧数据的时间。

本例所述场景管理模块中,所述视域剔除根据可见性判断物体是否在视野中可见,进而剔除被遮挡或者视野外的物体以降低实时渲染压力;所述场景物体遍历分类依据层级关系以及材质是否半透明对物体进行分类以及确定渲染顺序;所述拾取和鼠标事件派发用于判断相交和鼠标检测,可以检测游戏中指定物体的边缘或包围框,当两个物体碰撞时,可以防止相互穿透;所述渲染流程管理用于负责管理整个渲染引擎渲染的过程。

实施例2:

如图3所示,本例还提供一种基于3D网页游戏的渲染引擎实现方法,所述渲染引擎实现方法用于实现如实施例1所述的基于3D网页游戏的渲染引擎,并包括以下步骤:

步骤S1,设置渲染引擎的自定义文件格式;

步骤S2,渲染引擎基于C++语言的3DMax导出插件;

步骤S3,通过3D编辑器对3D场景进行优化处理;

步骤S4,通过UI编辑器制作UI素材库。

本例所述步骤S1中,所述自定义文件格式是对应渲染引擎功能定义的二进制文件格式,用于保存引擎在实际项目中所使用到的场景、模型以及其它数据。自定义文件能够良好的适应网页游戏的需求。在存储中,数据被按照不同类型和相关性划分为块,具有良好的独立性,同时也能够对资源的分块压缩与非阻塞的解析。在自定义文件的压缩上,对数据做了大量的优化、精简及复用,使用二进制格式,并采用LZMA进行压缩;自定义文件格式具有良好的可扩展性,同时具有良好的向前及向后可兼容性,可以在并不改变文件结构的情况下加入新的数据格式,同时旧的解析器在不知道新的规则时也可以正确解析。

所述步骤S2中,所述导出插件包括导出美术制作的场景、动画、材质、灯光和模型中的至少一种插件。

本例所述步骤S3中,所述优化处理包括设置灯光、设置材质效果、刷地表、画路径、摆放特效、粒子动画、关键帧动画、条带、震动和测试中的至少一种优化处理;优化处理之后将更改结果保存为所述步骤S1中的渲染引擎的自定义文件格式,在保存过程中,自动对所存储的文件进行压缩、删减、同类识别合并和组合。所述步骤S3中,所述3D编辑器为用户与3D渲染引擎交互的接口,用户通过3D编辑器对原始的三维场景、三维角色和三维特效分别进行制作、编辑、加工和优化,该过程中,用户对原始文件的各种属性的修改,最终会自动存储到所述的自定义文件格式的文件中,并最终由渲染引擎进行解析、加载和渲染。

本例所述步骤S4中,所述UI素材库用于实现素材的拖拽、缩放、调整和九宫格编辑,并将素材转化为3D渲染引擎所使用的文件格式。

本例所实现的渲染引擎提供一套基于自身工具的完善的游戏制作流程,具体流程如图4所示,包括以下详细步骤:

步骤S1,渲染引擎使用自定义文件格式,该自定义文件格式包含渲染引擎的相关元素,以块为解析的基本单位,实现分块压缩与非阻塞的解析,同时实现了场景数据的复用和高效率的压缩。所述自定义文件格式可以根据实际需要或用户事先的约定来进行自定义设置,便于灵活处理,以作为渲染引擎的专用的文件格式。

步骤S2,渲染引擎导出插件,所述渲染引擎基于原生C++语言的3DMax导出插件,支持3Dmax2014,一键安装,能够导出美术制作的场景、动画、材质、灯光和模型等。

步骤S3,通过3D编辑器对3D场景进一步优化,比如设置灯光、设置材质效果、刷地表、画路径、摆放特效、粒子动画、关键帧动画、条带、震动和测试等,设置材质效果包括设置雾、水、高光参数和烘焙贴图效果灯;同时将更改结果保存为所述自定义文件格式,在保存时,会对所存储的文件进行压缩、删减、同类识别合并和组合等优化。

3D编辑器的底层基于3D的渲染引擎的核心代码库,与核心代码库实现无缝连接,实现所见即所得,能够方便的将3D编辑器所制作和导出的模型、动画直接在游戏中进行组合使用。

下面结合图5对3D编辑器做进一步的详细描述:3D编辑器是用户与3D的渲染引擎相交互的接口,用户通过3D编辑器对原始的三维场景、三维角色和三维特效等分别进行制作、编辑、加工和优化,比如给场景加上烘焙的阴影、射合适的灯光以及添加适合的阻挡层,又比如给人物添加发光、法线和配入动画,以及制作千变万化的粒子特效等。用户对原始文件的各种属性的修改,最终会被存储到前面所述的自定义文件格式的文件中,并最终由渲染引擎进行解析、加载和渲染。

3D编辑器主用包括下面几个方面的功能:

第一、模型与场景编辑,在模型与场景的3D编辑器中,主要针对下面几个方面:1、指定模型所在的层,比如默认进行普通渲染,当指示为碰撞层时则参与碰撞检测,当指示为幻影层时则在特定时段为其中运动的物体添加幻影,所述特定时段可以根据实际情况或用户的需求进行设置和修改,当指示为发光层时则会对层中所有物体加上发光的后置特效等;2、编辑模型的空间属性以及包围框,包围框用于碰撞以及鼠标拾取判断等;3、材质指定,用于指定模型所用到的材质。

第二、粒子特效编辑器,粒子特效编辑器主要用于编辑和制作基于GPU渲染的粒子特效,同时也可以制作出各种基于关键帧和序列帧的特效,进而使得本例的功能得以完善强大,操作方便,同时有非常好的性能优化。粒子特效编辑器能够为成千上万个粒子,在特定的时间内指定不同的运动轨迹、大小、颜色、速度、位置、加速度和uv等变化,结合少量的模型,即可制作出炫丽的技能或场景特效。

第三、声音编辑,支持声音与模型的绑定,根据模型的位置远近播放相应的三维立体音效。

第四、材质编辑,1、材质编辑影响到模型最终渲染与表现,包括:指定漫反射、高光反射、法线贴图,以及漫反射、高光和自发光系数。2、材质编辑影响模型灯光的指定和渲染方式的设置。3、材质编辑影响材质效果添加,可以为模型的材质添加多种渲染效果,比如边缘光、环境反射、变色和雾等。

第五、灯光编辑,通过对灯光的颜色、方向、漫反射参数和高光系数等进行调节,并使用Phong着色法的光照模型影响最终材质渲染效果。所述Phong着色法(Phongshading),是三维电脑图像的绘图技巧之一,结合了多边形物体表面反射光的亮度,并以特定位置的表面法线作为像素参考值,以插值方式来估计其他位置像素的色值。

摄像机设置和漫游,支持场景漫游、编辑摄像机动画。

第七、动画与技能编辑,可以对各种不同的特效、关键帧动画、模型动作、摄像机动画和声音进行组合,然后在时间轴上进行调整,成为更为复杂的特效和技能。所述动画与技能编辑的框架结构示意图如图6所示。

第八、资源优化压缩,在3D编辑器中,提供多种对资源优化和压缩的方法。比如对场景中模型顶点数据的删除重复,对模型资源的共享使用,对动作的量化处理、贴图使用高效的压缩算法等。此外,还包括对行走区域的编辑。

步骤S4,通过UI编辑器制作UI素材库,所述UI编辑器能够良好的管理和制作UI素材库,支持方便的拖拽、缩放、调整和九宫格编辑等,可以形成策划美术程序可协作的工作流程;可保存为中间格式,同时最终转化为3D的渲染引擎的核心代码库所使用的格式,进而制作出与3D无缝接合并实现GPU加速的UI素材库。

实施例3:

如图7所示,本例还提供一种基于3D网页游戏的渲染引擎制作工具,所述渲染引擎制作工具用于实现如实施例1所述的基于3D网页游戏的渲染引擎,并包括:

导出插件,所述导出插件安装在3Dmax中,用于将美术制作好的原始模型和动作从3DMax转化为所述渲染引擎可直接使用的自定义文件格式;

自定义文件格式,存储所述渲染引擎渲染时所需要的场景信息;

3D编辑器,用于对所述自定义文件格式进行处理;

特效制作工具,集成于所述3D编辑器中,用于游戏中技能、动画和场景物效的制作;

UI制作工具,用于为游戏制作专用的基于GPU渲染的3DUI,所述渲染引擎的核心代码库调用所述UI制作工具。

所述制作工具,包括导出插件,用于将美术资源导出为引擎专用格式;场景编辑器,用于对场景和模型进行加工,制作特效、关键帧动画和摄像机动画,并和模型动作及声音等进行组合,即所述场景编辑器包括自定义格式、3D编辑器和特效制作工具;UI制作工具,用于制作游戏所需要的2DUI或3DUI。

本例所述的3D编辑器与实施例2所述的3D编辑器是同一个编辑器;本例可以通过实施例2所述的渲染引擎实现方法来实现,本例所述3D编辑器中的核心代码库灵活易用,结构清晰,扩展性强,稳定性强,方便开发与维护;同时由于提供了一系列的渲染引擎制作工具的支持,学习成本低,开发周期短。

所述3D编辑器中的核心代码库也称为3D渲染引擎核心库,用于驱动上层游戏的渲染以及一些底层的逻辑管理,比如路径的选择、摄像机漫游、拾取交互、模型动画驱动和碰撞检测等。

从上述技术方案可以看出,本发明具有良好的跨平台性和可扩展性,同时采用各种先进的优化技术,具有非常好的渲染性能、资源压缩率和运行速率等;同时在实现了渲染引擎的核心代码库基础上,扩展开发出一系列配套的基于3D网页游戏的渲染引擎制作工具,形成一套完成的游戏开发工作流程,使用简单、直观和易于上手,可供游戏开发中的各种人员角色协作使用,能够大大缩短游戏开发周期,并降低开发门槛。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号