CN110969686B - 一种提高三维字符数量的方法 - Google Patents
一种提高三维字符数量的方法 Download PDFInfo
- Publication number
- CN110969686B CN110969686B CN201911156047.6A CN201911156047A CN110969686B CN 110969686 B CN110969686 B CN 110969686B CN 201911156047 A CN201911156047 A CN 201911156047A CN 110969686 B CN110969686 B CN 110969686B
- Authority
- CN
- China
- Prior art keywords
- cube
- component
- displayed
- rendered
- qml
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 238000009877 rendering Methods 0.000 claims abstract description 42
- 230000001960 triggered effect Effects 0.000 claims description 4
- 230000001351 cycling effect Effects 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000001338 self-assembly Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供一种提高三维字符数量的方法,包括以下步骤:创建图形渲染组件并传递给Webgl作为场景画布;图形渲染组件监听图形渲染组件的信号;确定场景画布中待显示的待渲染显示字符坐标;获取待渲染显示字符并创建Qt qml组件;在Webgl的坐标系中创建第一立方体,并设置第一立方体的属性获得第二立方体;循环此步骤获得第N立方体,更新第二立方体坐标为场景画布中待显示的待渲染显示字符坐标;当N大于等于3时更新第三立方体坐标为场景画布中待显示的待渲染显示字符坐标,并重新渲染第二立方体或第二立方体至第N‑1立方体。采用本发明可以避免直接在Webgl中绘制立体字符,减少数据点的绘制,降低内存占用消耗,避免因绘制三维字符出现宕机现象。
Description
技术领域
本发明涉及提高三维字符数量的技术领域,特别是涉及一种提高三维字符数量的方法。
背景技术
Webgl(Web Graphics Library)是一种3D绘图标准,这种技术使用Javascript 封装Opengl,提供了用以在浏览器中绘制、显示二、三维计算机图形,并可与之交互。Qt5以后,将Webgl封装成一个自己的组件Canvas3D。可以向使用其他标准组件那样使用该组件。加快开发仿真软件的速度,提高了用户体验度。
Webgl原生创建字符为立体的,但是该函数会消耗较大内存,而Qt5 qml采用js语言,其运行在虚拟机环境下,很大程度上限制了内存的使用;基于Qt-qml-webgl的二、三维渲染引擎,当绘制较多三维字符时,会出现宕机现象,影响软件质量。
发明内容
针对上述问题,本发明的目的是提供了一种提高三维字符数量的方法。
为了实现上述目的,本发明提供一种提高三维字符数量的方法,包括以下步骤:
创建图形渲染组件;
将图形渲染组件传递给Webgl,并作为Webgl的场景画布;
图形渲染组件监听图形渲染组件的信号;
确定场景画布中待显示的待渲染显示字符坐标;
获取待渲染显示字符,并创建Qt qml组件;在Webgl的坐标系中,创建第一立方体,并设置第一立方体的属性,获得第二立方体;循环此步骤获得第N立方体,其中,N为大于2的整数;
更新第二立方体坐标为场景画布中待显示的待渲染显示字符坐标;
当N为3时,更新第三立方体坐标为场景画布中待显示的待渲染显示字符坐标,并重新渲染第二立方体;
当N为大于3的整数时,更新第N立方体坐标为场景画布中待显示的待渲染显示字符坐标,并重新渲染第二立方体至第N-1立方体。
优选地,创建图形渲染组件的步骤为:
将原生三维组件设置在独立的qml文件中获得图形渲染组件。
优选地,创建Qt qml组件的步骤包括:
导入库文件;其中,所述库文件包含若干基础组件和子组件;
设置若干基础组件的第一属性;
监听基础组件的创建完成信号;
当创建完成信号触发时,获取待渲染显示字符;
将子组件设置在基础组件中,并设置子组件的第二属性。
优选地,获得第二立方体的步骤包括:
在第一立方体中设置Qt qml组件;
Qt qml组件设置为第一立方体的纹理;
将第一立方体的纹理设置在第一立方体的材质属性中;
获得第二立方体。
优选地,基础组件为Rectangle组件。
优选地,第一属性包括ID、颜色、透明度、z序、宽和高。
优选地,子组件为Lable组件。
优选地,第二属性包括ID、锚布局、颜色、字体和字号。
优选地,Webgl的坐标系为世界坐标系。
本发明相对于现有技术,具有以下有益效果:
1.避免直接在Webgl中绘制立体的字符,减少数据点的绘制,降低内存的占用消耗,避免因绘制三维字符而出现的宕机现象。
2.通过使用Qt中原生三维组件,将其设置在独立的qml文件中获得图形渲染组件,并进行后续的处理,简单方便。
3.将设置好的Qt qml组件设置为第一立方体的纹理,利用该方法代替了Webgl原始的字符绘制方法,进一步地避免了因绘制三维字符而出现的宕机现象,而且该方法简单方便易实现。
附图说明
图1是本发明中涉及的提高三维字符数量的方法的流程示意图;
图2是本发明中涉及的创建Qt qml组件的流程示意图;
图3是本发明中涉及的获得第二立方体的流程示意图。
具体实施方式
下面结合附图说明根据本发明的具体实施方式。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
为了解决调用Webgl原生创建字符方法时绘制三维字符出现宕机的问题,本发明提供一种提高三维字符数量的方法。
如图1所示,本发明提供一种提高三维字符数量的方法,包括以下步骤:
S1、创建图形渲染组件;
其中,创建图形渲染组件的步骤为:
将原生三维组件设置在独立的qml文件中获得图形渲染组件。
具体的,在本步骤中,通过Qt qml程序创建图形渲染组件,即使用Qt原生三维组件Canvas3D,将其设置在独立的qml文件中并命名为canvas,此时获得图形渲染组件canvas。
S2、将图形渲染组件传递给Webgl,并作为Webgl的场景画布;
S3、图形渲染组件监听图形渲染组件的信号;
具体的,在本步骤中,图形渲染组件的信号包括initializeGL信号、resizeGL信号、paintGL信号;
其中,initializeGL信号的作用是,当图形渲染组件canvas就绪,并且客户端可以完成OpenGL状态初始化时,初始化场景、相机、光源。
paintGL信号的作用是,每次将新帧绘制到图形渲染组件canvas时,场景画布中的所有字符重新渲染。
resizeGL信号的作用是,当图形渲染组件canvas画布大小变化时,更新相机视角范围,并使Webgl重新渲染。
当然,也不限于监听上述三种信号,只要监听的信号能够实现上述三种信号实现的功能即可。
S4、确定场景画布中待显示的待渲染显示字符坐标;
S5、获取待渲染显示字符,并创建Qt qml组件;在Webgl的坐标系中,创建第一立方体,并设置第一立方体的属性,获得第二立方体;循环此步骤获得第N立方体,其中,N为大于2的整数;
当然,创建的第N立方体可以是相同属性,也可以不同属性,即创建的三维字符可以相同的,也可以是不同的。
如图2所示,S51、创建Qt qml组件的步骤包括:
S511、导入库文件;其中,所述库文件包含若干基础组件和子组件;
在本实施例中,基础组件为Rectangle组件,子组件为Lable组件。当然,也可以采用其他适于实际需求的组件。
S512、设置若干基础组件的第一属性;
其中,第一属性包括ID、颜色、透明度、z序、宽和高。
在本实施例中,Rectangle组件为Qt qml封装的组件;对第一属性的具体设置为:ID:textureSource;颜色:设置与Webgl背景色相同的颜色;透明度:不透明;z序:-5;宽:60像素,高:60像素。
当然,对于Rectangle组件的第一属性设置不限于上述描述,只要符合实际需要即可。
S513、监听基础组件的创建完成信号;
S514、当创建完成信号触发时,获取待渲染显示字符;
在本实施例中,监听基础组件即Rectangle组件的创建完成信号Componet.oncompleted信号,其中,Componet.oncompleted信号是QT qml封装的一个信号;当Rectangle组件创建完成,该信号被触发时,获取待渲染显示字符。
S515、将子组件设置在基础组件中,并设置子组件的第二属性。
其中,子组件为Lable组件。当然,也可以采用其他适于实际需求的组件。
第二属性包括ID、锚布局、颜色、字体和字号。
在本实施例中,Lable组件为Qt qml封装的组件;在textureSource中引入子组件Lable,并设置Lable组件的第二属性,其中第二属性具体设置为:ID:infoLabel;锚布局:将Lable组件放置在Rectangle组件中心位置;颜色:白色;字体:黑色;字号:30像素。
当然,对于Lable组件的第二属性设置不限于上述描述,只要符合实际需要即可。
其中,Webgl的坐标系为世界坐标系。在本实施例中,创建一个10毫米*10毫米*1毫米的第一立方体。当然,第一立方体的大小可以根据实际情况进行设置,此时根据第一立方体的大小可以显示一个字符,也可以显示一个字符串。
例如,当场景画布中要显示“我很开心,我快乐!”的字符串时,
(1)可以创建9个10毫米*10毫米*1毫米的第一立方体,此时在9个10毫米*10毫米*1毫米的第一立方体上设置相同或不同的纹理以代表相应的字符,即此时创建第二立方体“我”、第三立方体“很”、第四立方体“开”、第五立方体“心”、第六立方体“,”、第七立方体“我”、第八立方体“快”、第九立方体“乐”、第十立方体“!”,将第二立方体“我”放置在该字符需要显示的坐标位置,之后设置第三立方体“很”,此时更新第三方体“很”坐标为场景画布中待显示的待渲染显示字符坐标,并重新渲染第二立方体“我”,后续字符设置以此类推,在设置新字符时,重新渲染之前设置好的字符。
(2)也可以创建一个90毫米*10毫米*1毫米的第一立方体,在这个90毫米*10毫米*1毫米的第一立方体上显示“我很开心,我快乐!”这个字符串,此时在第一立方体上设置纹理,该纹理为“我很开心,我快乐!”字样,即将“我很开心,我快乐!”作为一个整体设置为第一立方体的纹理。
当然显示该字符串的方式不限于以上所述,只要可以将其正确显示,满足实际需求即可。
如图3所示,S52、获得第二立方体的步骤包括:
S521、在第一立方体中设置Qt qml组件;
S522、Qt qml组件设置为第一立方体的纹理;
在本实施例中,将创建的Qt qml组件设置为第一立方体每一个面的纹理。
S523、将第一立方体的纹理设置在第一立方体的材质属性中;
其中,材质用来指定第一立方体的一个面或数个面的特性,它决定这些面在着色时的特性,如颜色、光亮程度、自发光度及不透明度等。
S524、获得第二立方体。
当然,循环此步骤获得不同属性的第N立方体,同时获得的第N立方体的数量可以根据实际需要进行设定。
在本实施例中,通过创建Qt qml组件和第一立方体,并将Qt qml组件设置为第一立方体的纹理进而获得第二立方体,第三立方体、第四立方体、第N立方体以相同的方法获得。
S6、更新第二立方体坐标为场景画布中待显示的待渲染显示字符坐标;
S7、当N为3时,更新第三立方体坐标为场景画布中待显示的待渲染显示字符坐标,并重新渲染第二立方体
S8、当N为大于3的整数时,更新第N立方体坐标为场景画布中待显示的待渲染显示字符坐标,并重新渲染第二立方体至第N-1立方体。
在本实施例中,当场景画布中设置好要显示的字符,第二立方体“A”后,需要设置第三立方体“B”,此时更新第三方体“B”坐标为场景画布中待显示的待渲染显示字符坐标,并重新渲染第二立方体“A”。
综上所述,采用本发明通过使用Qt中原生三维组件,将其设置在独立的qml文件中获得图形渲染组件,并进行后续的处理,简单方便;将设置好的Qt qml组件设置为第一立方体的纹理,利用该方法代替了Webgl原始的字符绘制方法,减少数据点的绘制,降低内存的占用消耗避免绘制三维字符出现宕机的现象,该方法简单方便易实现。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种提高三维字符数量的方法,其特征在于,包括以下步骤:
创建图形渲染组件;
将所述图形渲染组件传递给Webgl,并作为Webgl的场景画布;
所述图形渲染组件监听所述图形渲染组件的信号;
确定所述场景画布中待显示的待渲染显示字符坐标;
获取所述待渲染显示字符,并创建Qt qml组件;所述Qt qml组件的步骤包括:导入库文件和若干基础组件;设置若干所述基础组件的第一属性;监听所述基础组件的创建完成信号;当所述创建完成信号触发时,获取待渲染显示字符;将子组件设置在所述基础组件中,并设置所述子组件的第二属性;在Webgl的坐标系中,创建第一立方体,并设置所述第一立方体的属性,将所述Qt qml组件设置为所述第一立方体的纹理进而获得第二立方体;循环此步骤获得不同属性的第N立方体,其中,N为大于2的整数;
更新第二立方体坐标为所述场景画布中待显示的待渲染显示字符坐标;
当N为3时,更新第三立方体坐标为所述场景画布中待显示的所述待渲染显示字符坐标,并重新渲染所述第二立方体;
当N为大于3的整数时,更新所述第N立方体坐标为所述场景画布中待显示的所述待渲染显示字符坐标,并重新渲染所述第二立方体至第N-1立方体。
2.根据权利要求1所述的提高三维字符数量的方法,其特征在于,创建所述图形渲染组件的步骤为:
将原生三维组件设置在独立的qml文件中获得所述图形渲染组件。
3.根据权利要求1所述的提高三维字符数量的方法,其特征在于,获得所述第二立方体的步骤包括:
在所述第一立方体中设置所述Qt qml组件;
所述Qt qml组件设置为所述第一立方体的纹理;
将所述第一立方体的纹理设置在所述第一立方体的材质属性中;
获得所述第二立方体。
4.根据权利要求2所述的提高三维字符数量的方法,其特征在于,所述基础组件为Rectangle组件。
5.根据权利要求2所述的提高三维字符数量的方法,其特征在于,所述第一属性包括ID、颜色、透明度、z序、宽和高。
6.根据权利要求2所述的提高三维字符数量的方法,其特征在于,所述子组件为Lable组件。
7.根据权利要求2所述的提高三维字符数量的方法,其特征在于,所述第二属性包括ID、锚布局、颜色、字体和字号。
8.根据权利要求1所述的提高三维字符数量的方法,其特征在于,所述Webgl的坐标系为世界坐标系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911156047.6A CN110969686B (zh) | 2019-11-22 | 2019-11-22 | 一种提高三维字符数量的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911156047.6A CN110969686B (zh) | 2019-11-22 | 2019-11-22 | 一种提高三维字符数量的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110969686A CN110969686A (zh) | 2020-04-07 |
CN110969686B true CN110969686B (zh) | 2024-01-02 |
Family
ID=70031312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911156047.6A Active CN110969686B (zh) | 2019-11-22 | 2019-11-22 | 一种提高三维字符数量的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110969686B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485705B (zh) * | 2021-06-30 | 2023-11-21 | 深圳软牛科技有限公司 | 基于QML Rectangle组件的选框方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9913090D0 (en) * | 1994-12-22 | 1999-08-04 | Apple Computer | Three-dimensional graphics rendering system |
CN101882077A (zh) * | 2010-05-19 | 2010-11-10 | 广东威创视讯科技股份有限公司 | 高效率绘制与渲染基本图形的方法及装置 |
CN105045579A (zh) * | 2015-07-01 | 2015-11-11 | 新奥特(北京)视频技术有限公司 | 一种轨迹生成方法和装置 |
CN107172474A (zh) * | 2017-03-31 | 2017-09-15 | 武汉斗鱼网络科技有限公司 | 一种利用画布绘制弹幕的方法及装置 |
CN107852524A (zh) * | 2015-07-28 | 2018-03-27 | 谷歌有限责任公司 | 用于将视频与交互式动态渲染的视觉教具合成的系统 |
CN109448088A (zh) * | 2018-10-22 | 2019-03-08 | 广州视源电子科技股份有限公司 | 渲染立体图形线框的方法、装置、计算机设备和存储介质 |
-
2019
- 2019-11-22 CN CN201911156047.6A patent/CN110969686B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9913090D0 (en) * | 1994-12-22 | 1999-08-04 | Apple Computer | Three-dimensional graphics rendering system |
CN101882077A (zh) * | 2010-05-19 | 2010-11-10 | 广东威创视讯科技股份有限公司 | 高效率绘制与渲染基本图形的方法及装置 |
CN105045579A (zh) * | 2015-07-01 | 2015-11-11 | 新奥特(北京)视频技术有限公司 | 一种轨迹生成方法和装置 |
CN107852524A (zh) * | 2015-07-28 | 2018-03-27 | 谷歌有限责任公司 | 用于将视频与交互式动态渲染的视觉教具合成的系统 |
CN107172474A (zh) * | 2017-03-31 | 2017-09-15 | 武汉斗鱼网络科技有限公司 | 一种利用画布绘制弹幕的方法及装置 |
CN109448088A (zh) * | 2018-10-22 | 2019-03-08 | 广州视源电子科技股份有限公司 | 渲染立体图形线框的方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110969686A (zh) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109313470B (zh) | 利用重新投影的锐利文本绘制 | |
CN112215934B (zh) | 游戏模型的渲染方法、装置、存储介质及电子装置 | |
US10120187B2 (en) | Sub-frame scanout for latency reduction in virtual reality applications | |
CN112381918A (zh) | 图像渲染方法、装置、计算机设备和存储介质 | |
CN106528096B (zh) | 一种在d3d12全屏游戏源上绘制弹幕图像的方法及系统 | |
CN108959392B (zh) | 在3d模型上展示富文本的方法、装置及设备 | |
CN107833262A (zh) | 图形处理系统和图形处理器 | |
IL268916A (en) | A mixed reality system with virtual content distortion and a method for creating virtual content through it | |
US11836882B2 (en) | Three-dimensional point cloud-based initial viewing angle control and presentation method and system | |
CN110706326B (zh) | 数据展示方法及装置 | |
WO2015175795A1 (en) | Indexed uniform styles for stroke rendering | |
CN109636885B (zh) | 一种用于h5页面的序列帧动画制作方法和系统 | |
CN114758051A (zh) | 一种图像渲染方法及其相关设备 | |
CN112541960A (zh) | 三维场景的渲染方法、装置及电子设备 | |
CN110969686B (zh) | 一种提高三维字符数量的方法 | |
US9043707B2 (en) | Configurable viewcube controller | |
US11593908B2 (en) | Method for preprocessing image in augmented reality and related electronic device | |
US10708597B2 (en) | Techniques for extrapolating image frames | |
CN110119199B (zh) | 实时渲染影像的追踪系统、方法及非暂态电脑可读取媒体 | |
US20110122140A1 (en) | Drawing device and drawing method | |
CN118043842A (zh) | 一种渲染格式选择方法及其相关设备 | |
CN115269756A (zh) | 一种在cesium中引入热力图的方法及系统 | |
CN111481929B (zh) | 虚拟角色信息的显示方法、装置、电子设备及计算机介质 | |
CN110662099B (zh) | 用于显示弹幕的方法和装置 | |
JP7370363B2 (ja) | 情報処理装置、プログラム及び描画方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Room 201, 2nd Floor, No. 5999 Wuxing Avenue, Zhili Town, Wuxing District, Huzhou City, Zhejiang Province, 313008 (self declared) Patentee after: Xinjinghe Laser Technology Co.,Ltd. Country or region after: China Address before: 102206 513-4, unit 1, 5 / F, building 1, yard 1, Neng Dong Road, Shahe Town, Changping District, Beijing Patentee before: XINJINGHE LASER TECHNOLOGY DEVELOPMENT (BEIJING) Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |