三维渲染方法及装置与流程

文档序号:17150282发布日期:2019-03-19 23:21阅读:455来源:国知局
三维渲染方法及装置与流程

本公开涉及图像处理技术领域,尤其涉及一种三维渲染方法及装置。



背景技术:

目前,大屏幕的三维展示通过webgl(webgraphicslibrary,web图形库)技术实现。其中,webgl是一种3d绘图协议,其允许把javascript(一种直译式脚本语言)和opengles2.0(openglforembeddedsystems2.0,嵌入式系统三维图形库2.0)结合在一起,从而实现对三维场景进行渲染。

相关技术中,webgl采用javascript,执行的时候需要由脚本引擎分析javascript得到脚本内容,再根据得到的脚本内容执行渲染处理。由于分析javascript的脚本引擎由浏览器提供,所以webgl在渲染时的渲染效率会受到浏览器的限制。而脚本引擎分析javascript过程比较耗费时间,因此webgl的渲染效率并不高效。



技术实现要素:

有鉴于此,本公开提出了一种三维渲染方法及装置,以解决相关技术中大屏幕三维渲染的渲染效率较低的问题。

根据本公开的一方面,提供了一种三维渲染方法,所述方法用于终端设备,所述终端设备上安装有浏览器以及渲染引擎,所述方法包括:

在所述浏览器接收到来自于服务器的数据时,确定所述数据的类型;

如果所述数据的类型为三维模型数据,则传输绘制消息,并调用所述渲染引擎对所述数据进行三维渲染,得到渲染结果;其中,所述绘制消息包括所述数据;

所述浏览器接收并展示所述渲染引擎传输的渲染结果。

在一种实现方式中,所述渲染引擎对所述数据进行三维渲染,包括:

定义所述渲染引擎所需的视景器;

对从所述绘制消息中获取的所述数据并进行解析,得到解析后的数据;

通过所述视景器对所述解析后的数据进行三维渲染。

在一种实现方式中,所述在所述浏览器接收到来自于服务器的数据时,确定所述数据的类型,包括:

在接收到来自于服务器的数据时,获取所述数据的后缀;

根据所述数据的后缀,确定所述数据的类型。

在一种实现方式中,所述方法还包括:

如果所述浏览器确定所述数据的类型为非三维模型数据,则调用所述浏览器的渲染引擎对所述数据进行渲染。

在一种实现方式中,所述渲染引擎为开源场景图形库osg渲染引擎,则所述传输绘制消息,并调用所述渲染引擎对所述数据进行三维渲染,包括:

传输绘制消息至activex控件,所述activex控件调用osg渲染引擎对所述数据进行三维渲染。

根据本公开的另一方面,提供了一种三维渲染装置,所述装置用于终端设备,所述终端设备上安装有浏览器以及渲染引擎,所述装置包括:

确定模块,用于在所述浏览器接收到来自于服务器的数据时,确定所述数据的类型;

第一调用模块,用于如果所述数据的类型为三维模型数据,则传输绘制消息,并调用所述渲染引擎对所述数据进行三维渲染,得到渲染结果;其中,所述绘制消息包括所述数据;

展示模块,用于所述浏览器接收并展示所述渲染引擎传输的渲染结果。

在一种实现方式中,所述第一调用模块包括:

定义子模块,用于定义所述渲染引擎所需的视景器;

解析子模块,用于对从所述绘制消息中获取的所述数据并进行解析,得到解析后的数据;

渲染子模块,用于通过所述视景器对所述解析后的数据进行三维渲染。

在一种实现方式中,所述确定模块包括:

获取子模块,用于在接收到来自于服务器的数据时,获取所述数据的后缀;

确定子模块,用于根据所述数据的后缀,确定所述数据的类型。

在一种实现方式中,所述装置还包括:

第二调用模块,用于如果所述浏览器确定所述数据的类型为非三维模型数据,则调用所述浏览器的渲染引擎对所述数据进行渲染。

在一种实现方式中,所述渲染引擎为开源场景图形库osg渲染引擎,则所述第一调用模块用于:

传输绘制消息至activex控件,所述activex控件调用osg渲染引擎对所述数据进行三维渲染。

根据本公开的另一方面,提供了一种三维渲染装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。

根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。

本公开实施例提供的三维渲染方法及装置,用于终端设备,该终端设备上安装有浏览器以及渲染引擎,在该浏览器接收到来自于服务器的数据时,确定该数据的类型,如果该数据的类型为三维模型数据,则传输绘制消息,并调用渲染引擎对该数据进行三维渲染,得到渲染结果;其中,该绘制消息包括该数据,该浏览器接收并展示渲染引擎传输的渲染结果,因此三维渲染的过程并不需要浏览器参与,故在进行三维渲染时能够避免受到浏览器的限制,提高了三维渲染的渲染效率。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1示出根据本公开一实施例的组网架构图。

图2示出根据本公开一实施例的三维渲染方法的流程图。

图3示出根据本公开一实施例的三维渲染方法的流程图。

图4示出根据本公开一实施例的组网架构图。

图5示出根据本公开一实施例的三维渲染装置的框图。

图6示出根据本公开一实施例的三维渲染装置的框图。

图7示出根据本公开一实施例的三维渲染装置的框图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“若”可以被理解成为“在……时”或“当……时”或“响应于确定”等。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

为了使本技术领域的人员更好地理解本公开中的技术方案,下面先对本公开中涉及的部分技术术语进行简单说明。

osg(openscenegraph,开源场景图形库):是一个开放源码,跨平台的图形开发包,其能够为飞行器仿真、游戏、虚拟显示、科学计算可视化等高性能图形应用程序开发而设计。其提供在opengl(opengraphicslibrary,开放图形库)之上的面向对象的框架,从而能把开发者从现实和优化底层图形的调用中解脱出来,并且其为图形应用程序快速开发提供很多附加的实用工具。osg具有较优的性能、可扩展性、可移植性和快速开发等优势。

ole(objectlinkingandembedding,对象连接与嵌入):是桌面应用程序集成,定义和实现一种允许应用程序作为软件对象彼此进行连接的机制,这种连接机制和协议称为com(componentobjectmodel,组件对象模型)。

activex控件:是用于网络的对象链接与嵌入技术,可以看成是实现标准ole(objectlinkingandembedding,对象连接与嵌入)接口的com对象。activex控件作为一个独立的对象,可以激起和响应事件,处理消息,并有多线程能力,支持容器之间的双向通信和消息传递。其对外部环境是开放的,能被各种编程环境使用,所以任何支持activex控件的平台都可以使用。

colecontrol(ole控件的控制类):是开发ole控件的功能强大的基类,由cwnd(congestionwindow,拥塞窗口)类派生,继承了windows窗口对象的所有功能,并加上了ole独有的功能,例如事件触发、支持方法和特性等。

针对相关技术中所存在的技术问题,本公开实施例提供一种方案,能够在浏览器确定需要对接收的数据进行三维渲染时,传输数据并利用安装在本地的渲染引擎对数据进行三维渲染,而渲染引擎执行时并不需要浏览器提供脚本引擎,因此三维渲染的过程并不需要浏览器参与,故在进行三维渲染时能够避免受到浏览器的限制,提高了三维渲染的渲染效率。

图1示出根据本公开一实施例的组网架构图。请参阅图1,为本公开实施例提供的一种组网架构,包括服务器和终端设备,该终端设备上安装有浏览器以及渲染引擎。该渲染引擎执行时并不需要浏览器提供脚本引擎。在一个实施例中,该终端设备上还可以安装有activex控件,渲染引擎可以是osg渲染引擎。应当理解的是,渲染引擎还可以采用其他引擎,本公开并不作特别限定。

图2示出根据本公开一实施例的三维渲染方法的流程图。该方法适用于终端设备,该终端设备上安装有浏览器,例如windowsie等。如图2所示,该方法包括步骤s11至步骤s13。

在步骤s11中,在浏览器接收到来自于服务器的数据时,确定该数据的类型。

其中,数据的类型包括文本数据、图像数据和三维模型数据等中的一项或多项,本公开对此不作限制。客户端对文本数据和图像数据进行二维展示,对三维模型数据进行三维展示。

在一种实现方式中,在浏览器接收到来自于服务器的数据时,确定该数据的类型(步骤s11),包括:在接收到来自于服务器的数据时,获取该数据的后缀;根据该数据的后缀,确定该数据的类型。

例如,浏览器接收到来自服务器的数据。浏览器获取该数据的后缀为osg。浏览器根据该数据的后缀osg,确定该数据的类型为三维模型数据。

若浏览器获取到的后缀不为osg,则可以确定该数据的类型为非三维模型数据。示例性的,若浏览器获取到的后缀为txt或doc,则可以认为该数据的类型为文本数据。在另一个示例中,若浏览器获取到的后缀为bmp、jpg、jpeg、png或gif,则可以认为该数据的类型为图像数据。

在步骤s12中,如果该数据的类型为三维模型数据,则传输绘制消息,并调用渲染引擎对该数据进行三维渲染,得到渲染结果;其中,该绘制消息包括该数据。

在一种实现方式中,渲染引擎对该数据进行三维渲染,包括:定义渲染引擎所需的视景器;对从绘制消息中获取的该数据进行解析,得到解析后的数据;通过视景器对解析后的数据进行三维渲染。

作为一个示例,渲染引擎为osg渲染引擎。则前述osg渲染引擎对该数据进行三维渲染,包括:定义osg渲染引擎所需的视景器;对从该绘制消息中获取的该数据进行解析,得到解析后的数据;通过视景器对解析后的数据进行三维渲染。

其中,视景器包括漫游器、事件处理器、场景和摄像机等。漫游器,用于实现交互式的场景漫游。事件处理器,用于负责处理视景器的事件队列,例如键盘或鼠标等事件的处理。场景,其包括视景器所对应的场景图形根节点,以及用于提高节点和图像数据处理速度的两个分页数据库。摄像机,为osg世界矩阵的计算提供依据。具体的渲染过程可以参考现有技术,本公开实施例不再做过多描述。

在一种实现方式中,渲染引擎为开源场景图形库osg渲染引擎,则传输绘制消息,并调用渲染引擎对该数据进行三维渲染,包括:传输绘制消息至activex控件,所述activex控件调用osg渲染引擎对所述数据进行三维渲染。

作为一个示例,浏览器接收到来自服务器的数据。浏览器获取该数据的后缀为osg,由此确定该数据的类型为三维模型数据。浏览器向activex控件发送绘制消息wm_paint(windowsmessagepaint,窗口绘制消息)。activex控件接收该绘制消息wm_paint。activex控件的colecontrol调用activex控件的onpaint(消息处理函数),以使onpaint处理该绘制消息wm_paint,并调用ondraw方法、以通过osg渲染引擎对该数据进行三维渲染。

渲染步骤包括:

定义视景器;

将三维模型数据读取;

场景初始化;

设置node给视景器作为所有场景数据的根节点;

开始执行视景器,绘制场景。

在步骤s13中,浏览器接收并展示渲染引擎传输的渲染结果。

本公开实施例提供的三维渲染方法,能够在浏览器确定需要对接收的数据进行三维渲染时,传输数据并利用安装在本地的渲染引擎对数据进行三维渲染,而渲染引擎执行时并不需要浏览器提供脚本引擎,因此三维渲染的过程并不需要浏览器参与,故在进行三维渲染时能够避免受到浏览器的限制,提高了三维渲染的渲染效率。

图3示出根据本公开一实施例的三维渲染方法的流程图。该方法适用于终端设备,该终端设备上安装有浏览器,例如windowsie等。如图3所示,该方法包括步骤s11至步骤s15。

在步骤s11中,在浏览器接收到来自于服务器的数据时,确定该数据的类型。

在步骤s12中,如果该数据的类型为三维模型数据,则传输绘制消息,并调用渲染引擎对该数据进行三维渲染,得到渲染结果。其中,该绘制消息包括该数据。

本公开实施例可以通过数据的后缀确定是否为三维模型数据。例如,浏览器接收到来自服务器的数据。浏览器获取该数据的后缀为osg。浏览器根据该数据的后缀为osg,确定该数据的类型为三维模型数据。

在一种实现方式中,渲染引擎为开源场景图形库osg渲染引擎,通过osg渲染引擎进行三维渲染的过程可以如下。

浏览器向activex控件发送绘制消息wm_paint(windowsmessagepaint,窗口绘制消息)。activex控件接收该绘制消息wm_paint。activex控件的colecontrol调用activex控件的onpaint(消息处理函数),以使onpaint处理该绘制消息wm_paint,并调用ondraw方法、以通过osg渲染引擎对该数据进行三维渲染。渲染步骤包括:

定义视景器;

将三维模型数据读取;

场景初始化;

设置node给视景器作为所有场景数据的根节点;

开始执行视景器,绘制场景。

在步骤s13中,浏览器接收并展示渲染引擎传输的渲染结果。

在步骤s14中,如果浏览器确定该数据的类型为非三维模型数据,则调用浏览器的渲染引擎对该数据进行渲染。

本公开实施例可以通过数据的后缀确定是否为非三维模型数据。例如,浏览器接收到来自服务器的数据。浏览器获取该数据的后缀不为osg。浏览器根据该数据的后缀不为osg,确定该数据的类型为非三维模型数据。其中,非三维模型数据可以包括文本数据和图像数据等数据类型中的一项或多项,本公开对此不作限制。

如果浏览器确定该数据的类型为非三维模型数据,则调用浏览器的脚本引擎分析javascript得到脚本内容,然后浏览器的渲染引擎通过webgl技术对得到的脚本内容执行渲染处理。

作为一个示例,浏览器向服务器发送http(hypertexttransferprotocol,超文本传输协议)访问请求,该http访问请求中携带需要显示的文本数据。服务器接收到该http访问请求,获取并向浏览器发送需要显示的文本数据。浏览器接收到来自服务器的文本数据。浏览器通过cavas(画布)对该文本数据进行渲染并显示在屏幕上。

在步骤s15中,浏览器展示浏览器的渲染引擎对该数据进行渲染得到的结果。

作为一个示例,加载activex控件和osg渲染引擎。在接收到来自于服务器的数据时,确定该数据的类型。如果该数据的类型为三维模型数据,则向activex控件发送绘制消息,以使得activex控件在获取到该绘制消息时,调用osg渲染引擎对该数据进行三维渲染,该绘制消息包括该数据。浏览器展示osg渲染引擎对该数据进行三维渲染得到的结果。

示例:

图4示出根据本公开一实施例的组网架构图。如图4所示,终端设备上安装有浏览器,并安装有activex控件和osg渲染引擎,该osg渲染引擎能够对数据进行三维渲染。在服务器部署三维展示的服务器程序。例如,三维展示的服务器程序的访问地址为http地址1。在浏览器中输入http地址1,通过浏览器向服务器发送访问http地址1的http访问请求。服务器接收到访问http地址1的http访问请求时,并基于该http访问请求返回数据。

浏览器接收服务器基于该http访问请求返回的数据,并确定该数据的类型。如果该数据的类型为三维模型数据,则向activex控件发送绘制消息,该绘制消息包括该数据。activex控件在获取到该绘制消息时,调用osg渲染引擎对该数据进行三维渲染。osg渲染引擎调用浏览器的gpu(graphicsprocessingunit,图形处理器)对该数据进行实时渲染,并将得到的三维图像更新展示在浏览器上。

浏览器还可以将三维图像投影到屏幕上。其中,屏幕指的是与终端设备连接的显示器,或通过数据线例如高清hdmi连接线连接的显示装置,例如投影仪、显示器等。

本公开实施例提供的三维渲染方法,能够在浏览器确定需要对接收的数据进行三维渲染时,传输数据并利用安装在本地的渲染引擎对数据进行三维渲染,而渲染引擎执行时并不需要浏览器提供脚本引擎,因此三维渲染的过程并不需要浏览器参与,故在进行三维渲染时能够避免受到浏览器的限制,提高了三维渲染的渲染效率。

图5示出根据本公开一实施例的三维渲染装置的框图。该装置可以硬件或软件形式被集成或安装在终端设备,该终端设备上安装有浏览器,例如windowsie等。如图5所示,该装置包括确定模块51、第一调用模块52和展示模块53,各模块的描述如下。

确定模块51,用于在所述浏览器接收到来自于服务器的数据时,确定所述数据的类型。

第一调用模块52,用于如果所述数据的类型为三维模型数据,则传输绘制消息,并调用所述渲染引擎对所述数据进行三维渲染,得到渲染结果;其中,所述绘制消息包括所述数据。

展示模块53,用于所述浏览器接收并展示所述渲染引擎传输的渲染结果。

在一种实现方式中,所述渲染引擎为开源场景图形库osg渲染引擎,则所述第一调用模块52用于:传输绘制消息至activex控件,所述activex控件调用osg渲染引擎对所述数据进行三维渲染。

如图6所示,图6示出根据本公开一实施例的三维渲染装置的框图。

在一种实现方式中,所述第一调用模块52包括定义子模块521、解析子模块522、渲染子模块523,各子模块的描述如下。

定义子模块521,用于定义所述渲染引擎所需的视景器。

解析子模块522,用于对从所述绘制消息中获取的所述数据并进行解析,得到解析后的数据。

渲染子模块523,用于通过所述视景器对所述解析后的数据进行三维渲染。

在一种实现方式中,所述确定模块51包括获取子模块511和确定子模块512,其中:获取子模块511,用于在接收到来自于服务器的数据时,获取所述数据的后缀;确定子模块512,用于根据所述数据的后缀,确定所述数据的类型。

在一种实现方式中,所述装置还包括:第二调用模块54,用于如果所述浏览器确定所述数据的类型为非三维模型数据,则调用所述浏览器的渲染引擎对所述数据进行渲染。

本公开实施例提供的三维渲染装置,能够在浏览器确定需要对接收的数据进行三维渲染时,传输数据并利用安装在本地的渲染引擎对数据进行三维渲染,而渲染引擎执行时并不需要浏览器提供脚本引擎,因此三维渲染的过程并不需要浏览器参与,故在进行三维渲染时能够避免受到浏览器的限制,提高了三维渲染的渲染效率。

图7示出根据本公开一实施例的三维渲染装置的框图。参照图7,该装置700可包括处理器701、存储有机器可执行指令的机器可读存储介质702。处理器701与机器可读存储介质702可经由系统总线703通信。并且,处理器701通过读取机器可读存储介质702中与三维渲染逻辑对应的机器可执行指令以执行上文所述的三维渲染方法。

本文中提到的机器可读存储介质702可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或类似的存储介质,或它们的组合。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或使本技术领域的其它普通技术人员能理解本文披露的各实施例。

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