CN111932689B - 一种采用id像素图的三维对象快速选取方法 - Google Patents
一种采用id像素图的三维对象快速选取方法 Download PDFInfo
- Publication number
- CN111932689B CN111932689B CN202010970797.3A CN202010970797A CN111932689B CN 111932689 B CN111932689 B CN 111932689B CN 202010970797 A CN202010970797 A CN 202010970797A CN 111932689 B CN111932689 B CN 111932689B
- Authority
- CN
- China
- Prior art keywords
- frame buffer
- rendering
- buffer
- dimensional
- color
- 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
- 238000010187 selection method Methods 0.000 title claims abstract description 9
- 239000000872 buffer Substances 0.000 claims abstract description 90
- 238000009877 rendering Methods 0.000 claims abstract description 56
- 230000006870 function Effects 0.000 claims abstract description 16
- 239000012634 fragment Substances 0.000 claims abstract description 10
- 238000000034 method Methods 0.000 claims description 15
- 238000012360 testing method Methods 0.000 description 18
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
Abstract
本发明提供了一种采用ID像素图的三维对象快速选取方法,包括:根据三维图形输出窗口大小创建离屏渲染帧缓冲对象;创建三个渲染缓冲区,将三个渲染缓冲区与离屏渲染帧缓冲对象绑定;在片元着色器中把对象最终的颜色输出到0号颜色缓冲区,把对象的ID输出到1号颜色缓冲区;在每帧渲染前,绑定当前渲染帧缓冲为创建的离屏渲染帧缓冲对象;执行三维场景渲染;绑定当前渲染帧缓冲为窗口系统帧缓冲,绑定当前读取帧缓冲为离屏渲染帧缓冲对象;采用帧缓冲数据复制函数,将离屏渲染画面的0号颜色缓冲区的内容,复制到当前窗口系统的帧缓冲中;采用帧缓冲数据读取函数,将1号颜色缓冲区的内容拷贝到内存中,作为对象ID图像。
Description
技术领域
本发明涉及三维计算机图形学业领域,具体涉及三维可视化信息领域,尤其是一种采用ID像素图的三维对象快速选取方法。
背景技术
三维可视化系统中,三维场景中对象的交互选择是必不可少的一个功能。现有的三维对象选择手段一般是通过相交测试来完成。假设三维场景没有复杂的组织结构,只是一个个的三维对象组成,那么三维对象选取的基本流程如下:
(1)根据屏幕点击位置进行反投影计算,得出在三维视景体近裁剪面和远裁剪面的两个点,以这两点构成的相交测试用线段;
(2)将相交测试线段与整个三维场景中每一个三维对象执行如下操作:
a.和该三维对象的包围球进行相交测试计算;
b.如果没有相交点,说明和该三维对象不相交,那么就转到下一个三维对象执行a步骤;
c.如果有相交点,则把该三维对象中的所有三角形均和相交测试线段进行相交测试计算,如果有相交点,则把相交点和对象指针或对象ID存入相交结果列表;如果没有相交点,则转到下一个三维对象执行a步骤;
(3)使用相交结果列表。
从上述流程可以看出,三维相交测试基本上是粗粒度的包围体测试加精细的三角形测试。
在很多应用场景下,可以通过空间逐级分割、逐级组织的方法来优化三维场景组织,以加速相交测试流程,那么计算量是可以接受的。另外,这种方法有两个很明显的优点:首先它通过精确的相交测试,能够获取精确的相交点位;其次,当三维目标相互压盖时,相交测试技术能够得到所有的相交点位,从而能够得到用户点击位置处所有的目标。
但是,相交测试技术难以胜任大批量移动对象的快速选取场景:即三维场景中的三维对象数量特别大(超过1万)时,而且大多数三维对象都是移动的,那么每一次相交测试的执行代价将是几万次相交计算(假设每一个三维对象平均含有几千个三角形),导致很明显的操作延迟,非常影响使用体验。
还有一种典型使用场景,就是不需要了解具体的点选位置,也不需要获取所有选取对象,仅仅需要实时选取对象。比如要求用户移动鼠标时,鼠标滑过的目标能够实时自动高亮显示。这则需要在毫秒级的定期间隔内,不停地进行相交测试,相交测试技术无法满足这个要求。
发明内容
本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种采用ID像素图的三维对象快速选取方法,使得在很多使用场景下,不需要获取用户选取的精确位置,也不需要获取选取处的所有对象(很多对象被最上层的对象遮挡掉了),只需要实时地获取选取位置处的三维对象。
根据本发明,提供了一种采用ID像素图的三维对象快速选取方法,包括:
第一步骤:根据三维图形输出窗口大小创建离屏渲染帧缓冲对象;
第二步骤:创建三个渲染缓冲区:深度与模板缓冲区、0号颜色缓冲区、1号颜色缓冲区;并将三个渲染缓冲区与离屏渲染帧缓冲对象绑定;
第三步骤:在片元着色器中把对象最终的颜色输出到0号颜色缓冲区,把对象的ID输出到1号颜色缓冲区;
第四步骤:在每帧渲染前,绑定当前渲染帧缓冲为创建的离屏渲染帧缓冲对象;
第五步骤:执行三维场景渲染;
第六步骤:渲染结束后,绑定当前渲染帧缓冲为窗口系统帧缓冲,绑定当前读取帧缓冲为离屏渲染帧缓冲对象;
第七步骤:采用帧缓冲数据复制函数,将离屏渲染画面的0号颜色缓冲区的内容,复制到当前窗口系统的帧缓冲中;
第八步骤:采用帧缓冲数据读取函数,将1号颜色缓冲区的内容拷贝到内存中,作为对象ID图像。
优选地,所述采用ID像素图的三维对象快速选取方法还包括第九步骤:根据用户的选取操作,读取用户的鼠标或触摸位置,然后直接读取对象ID图像中该位置的ID值,得到用户选取的对象ID。
优选地,在第三步骤采用OpenGL着色器语言编写三维对象的着色器代码,得到片元着色器。
优选地,帧缓冲数据复制函数是OpenGL的帧缓冲数据复制函数。
优选地,第四步骤将离屏渲染缓冲区设置为输出画面。
优选地,第六步骤将真正的窗口画面设置为输出画面,将离屏渲染缓冲区改为读取画面。
优选地,在第三步骤采用DirectX着色器语言编写三维对象的着色器代码,得到片元着色器。
本发明主要解决了如何在不需要获取选取处的精确位置、也不需要获取被选取处的所有对象的使用场景下,实时地在大规模场景中快速获取三维对象的问题。
附图说明
结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
图1示意性地示出了根据本发明优选实施例的采用ID像素图的三维对象快速选取方法的流程图。
需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
具体实施方式
为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
现代的计算机图形硬件(显卡/GPU),已经提供了强大的离屏渲染特性,使显卡硬件在进行图形绘制渲染时能够输出自定义数据,而不是仅仅颜色值。
基于现代显卡硬件的离屏渲染特性,本发明提出了采用ID像素图的三维对象快速选取技术:即在每帧正常图形画面渲染的同时,渲染一张ID图像,那么在选取对象时只需要读取ID像素图中选取位置的ID值读取出来即可。该技术的优点就是几乎没有任何CPU代价,利用现代显卡的强大渲染能力,在不降低渲染速度的条件下,能够实时选取三维对象。其中,ID像素图即具有ID编码(识别编码)的像素图。
现代显卡普遍支持OpenGL和DirectX两大三维图形库。下面以OpenGL图形库为例,介绍如何基于离屏渲染特性,生成ID像素图并支撑三维对象快速选取。
图1示意性地示出了根据本发明优选实施例的采用ID像素图的三维对象快速选取方法的流程图。
如图1所出,根据本发明优选实施例的采用ID像素图的三维对象快速选取方法包括
第一步骤S1:根据三维图形输出窗口大小创建离屏渲染帧缓冲对象;
第二步骤S2:创建三个渲染缓冲区:深度与模板缓冲区、0号颜色缓冲区、1号颜色缓冲区;并把三个渲染缓冲区与离屏渲染帧缓冲对象绑定;
第三步骤S3:在片元着色器中把对象最终的颜色输出到0号颜色缓冲区,把对象的ID输出到1号颜色缓冲区;具体地,在第三步骤S3可以采用OpenGL着色器语言编写三维对象的着色器代码,得到片元着色器。可替换地,例如,在第三步骤S3可以采用DirectX着色器语言编写三维对象的着色器代码,得到片元着色器。
第四步骤S4:在每帧渲染前,绑定当前渲染帧缓冲为创建的离屏渲染帧缓冲对象;具体地,将离屏渲染缓冲区设置为输出画面;
第五步骤S5:执行三维场景渲染;
第六步骤S6:渲染结束后,绑定当前渲染帧缓冲为窗口系统帧缓冲,绑定当前读取帧缓冲为离屏渲染帧缓冲对象;具体地,将真正的窗口画面设置为输出画面,将离屏渲染缓冲区改为读取画面;
第七步骤S7:采用帧缓冲数据复制函数,将离屏渲染画面的0号颜色缓冲区的内容,复制到当前窗口系统的帧缓冲中,使用户能够在计算机屏幕上看到正常的渲染画面;例如,帧缓冲数据复制函数是OpenGL的帧缓冲数据复制函数。
第八步骤S8:采用帧缓冲数据读取函数(例如,OpenGL的帧缓冲数据读取函数),将1号颜色缓冲区的内容拷贝到内存中,作为对象ID图像;
第九步骤S9:如果用户做了选取操作,则读取用户的鼠标或触摸位置(窗口像素坐标),然后直接读取对象ID图像中该位置的ID值,得到用户选取的对象ID。
本发明与传统的相交测试技术相比,在面对大规模的、难以优化组织的三维场景时,具有无可比拟的性能优势。在每一次选取中,本发明的技术方案占用从显卡到内存的图像拷贝代价,加一次像素值读取的代价,能够满足实时响应要求;而传统的相交测试技术需要耗费大量的CPU时间执行相交计算,代价高昂,响应延迟明显。
也就是说,本发明有效解决了普通使用场景(不需要获取选取坐标、不需要获取被压盖的对象的情况)下的大规模三维对象的实时选取难题。
需要说明的是,除非特别指出,否则说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明书中的各个组件、元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。
可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (7)
1.一种采用ID像素图的三维对象快速选取方法,其特征在于包括:
第一步骤:根据三维图形输出窗口大小创建离屏渲染帧缓冲对象;
第二步骤:创建三个渲染缓冲区:深度与模板缓冲区、0号颜色缓冲区、1号颜色缓冲区;并将三个渲染缓冲区与离屏渲染帧缓冲对象绑定;
第三步骤:在片元着色器中把对象最终的颜色输出到0号颜色缓冲区,把对象的ID输出到1号颜色缓冲区;
第四步骤:在每帧渲染前,绑定当前渲染帧缓冲为创建的离屏渲染帧缓冲对象;
第五步骤:执行三维场景渲染;
第六步骤:渲染结束后,绑定当前渲染帧缓冲为窗口系统帧缓冲,绑定当前读取帧缓冲为离屏渲染帧缓冲对象;
第七步骤:采用帧缓冲数据复制函数,将离屏渲染画面的0号颜色缓冲区的内容,复制到当前窗口系统的帧缓冲中;
第八步骤:采用帧缓冲数据读取函数,将1号颜色缓冲区的内容拷贝到内存中,作为对象ID图像。
2.根据权利要求1所述的采用ID像素图的三维对象快速选取方法,其特征在于还包括第九步骤:根据用户的选取操作,读取用户的鼠标或触摸位置,然后直接读取对象ID图像中该位置的ID值,得到用户选取的对象ID。
3.根据权利要求1或2所述的采用ID像素图的三维对象快速选取方法,其特征在于,在第三步骤采用OpenGL着色器语言编写三维对象的着色器代码,得到片元着色器。
4.根据权利要求1或2所述的采用ID像素图的三维对象快速选取方法,其特征在于,帧缓冲数据复制函数是OpenGL的帧缓冲数据复制函数。
5.根据权利要求1或2所述的采用ID像素图的三维对象快速选取方法,其特征在于,第四步骤将离屏渲染缓冲区设置为输出画面。
6.根据权利要求1或2所述的采用ID像素图的三维对象快速选取方法,其特征在于,第六步骤将真正的窗口画面设置为输出画面,将离屏渲染缓冲区改为读取画面。
7.根据权利要求1或2所述的采用ID像素图的三维对象快速选取方法,其特征在于,在第三步骤采用DirectX着色器语言编写三维对象的着色器代码,得到片元着色器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2020106379638 | 2020-07-03 | ||
CN202010637963 | 2020-07-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111932689A CN111932689A (zh) | 2020-11-13 |
CN111932689B true CN111932689B (zh) | 2023-11-14 |
Family
ID=73333758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010970797.3A Active CN111932689B (zh) | 2020-07-03 | 2020-09-15 | 一种采用id像素图的三维对象快速选取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111932689B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791851B (zh) * | 2021-08-13 | 2022-11-04 | 中国航空无线电电子研究所 | 一种适用于机载图形显示的多窗口管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107340501A (zh) * | 2017-07-02 | 2017-11-10 | 中国航空工业集团公司雷华电子技术研究所 | 基于OpenGL ES的雷达视频处理显示方法 |
CN108573524A (zh) * | 2018-04-12 | 2018-09-25 | 东南大学 | 基于渲染管线的交互式实时自由立体显示方法 |
CN109360260A (zh) * | 2018-10-22 | 2019-02-19 | 南京科远自动化集团股份有限公司 | 一种三角网格三维模型的切挖重构算法 |
CN110111408A (zh) * | 2019-05-16 | 2019-08-09 | 洛阳众智软件科技股份有限公司 | 基于图形学的大场景快速求交方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8416238B2 (en) * | 2009-02-18 | 2013-04-09 | Autodesk, Inc. | Modular shader architecture and method for computerized image rendering |
US9619853B2 (en) * | 2012-08-09 | 2017-04-11 | Qualcomm Incorporated | GPU-accelerated path rendering |
-
2020
- 2020-09-15 CN CN202010970797.3A patent/CN111932689B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107340501A (zh) * | 2017-07-02 | 2017-11-10 | 中国航空工业集团公司雷华电子技术研究所 | 基于OpenGL ES的雷达视频处理显示方法 |
CN108573524A (zh) * | 2018-04-12 | 2018-09-25 | 东南大学 | 基于渲染管线的交互式实时自由立体显示方法 |
CN109360260A (zh) * | 2018-10-22 | 2019-02-19 | 南京科远自动化集团股份有限公司 | 一种三角网格三维模型的切挖重构算法 |
CN110111408A (zh) * | 2019-05-16 | 2019-08-09 | 洛阳众智软件科技股份有限公司 | 基于图形学的大场景快速求交方法 |
Non-Patent Citations (1)
Title |
---|
一种三维模型制作3D立体图像的方法;李永成;李孟宇;;计算机时代(09);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111932689A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI584223B (zh) | 藉由追蹤物件及/或基元識別符的圖形處理增強之方法及系統,圖形處理單元及非暫時性電腦可讀媒體 | |
JP6310151B2 (ja) | グラフィックス処理におけるレンダリング対象コマンドの並べ替え | |
KR101286318B1 (ko) | 렌더링된 그래픽 엘리먼트들을 위한 성능 메트릭들의 시각적 표현의 디스플레이 | |
KR102475212B1 (ko) | 타일식 아키텍처들에서의 포비티드 렌더링 | |
US8659589B2 (en) | Leveraging graphics processors to optimize rendering 2-D objects | |
US10957082B2 (en) | Method of and apparatus for processing graphics | |
CN105321199B (zh) | 图形处理流水线及其操作方法与介质 | |
US7847798B1 (en) | Clipping and culling artwork using a graphics processing unit | |
US7714866B2 (en) | Rendering a simulated vector marker stroke | |
US20020154122A1 (en) | Generating three dimensional text | |
CN101604454A (zh) | 图形处理系统 | |
US8917281B2 (en) | Image rendering method and system | |
KR20060052042A (ko) | 3d에서의 하드웨어 가속화된 안티-엘리어싱 방법 및시스템 | |
US20140146064A1 (en) | Graphics memory load mask for graphics processing | |
CN111932689B (zh) | 一种采用id像素图的三维对象快速选取方法 | |
US8264503B1 (en) | Batch early engagement rules graphics processing | |
CN116210029A (zh) | 深度缓冲区预处理 | |
EP2728551B1 (en) | Image rendering method and system | |
CN111402369A (zh) | 互动广告的处理方法、装置、终端设备及存储介质 | |
JP7100624B2 (ja) | 優先プリミティブバッチのビニング及びソートを用いたハイブリッドレンダリング | |
JP2011529236A (ja) | グラフィックス・イメージングのためのパーティション・ベースのパフォーマンス解析 | |
US10937233B2 (en) | Graphics processing systems | |
KR20230032826A (ko) | 멀티-프래그먼트 렌더링에서 가상 두께 기반 레이어 병합 방법, 이를 수행하는 장치 및 컴퓨터 프로그램 | |
CN116670719A (zh) | 一种图形处理方法、装置及电子设备 | |
KR101239965B1 (ko) | 렌더링 장치 및 방법 |
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 |