CN117472592B - 基于顶点着色器与纹理映射的三维模型爆炸方法及系统 - Google Patents
基于顶点着色器与纹理映射的三维模型爆炸方法及系统 Download PDFInfo
- Publication number
- CN117472592B CN117472592B CN202311819883.4A CN202311819883A CN117472592B CN 117472592 B CN117472592 B CN 117472592B CN 202311819883 A CN202311819883 A CN 202311819883A CN 117472592 B CN117472592 B CN 117472592B
- Authority
- CN
- China
- Prior art keywords
- explosion
- texture
- virtual object
- buffer area
- offset
- 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
- 238000004880 explosion Methods 0.000 title claims abstract description 97
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000013507 mapping Methods 0.000 title claims abstract description 15
- 238000004364 calculation method Methods 0.000 claims abstract description 26
- 239000013598 vector Substances 0.000 claims description 20
- 238000007667 floating Methods 0.000 claims description 16
- 238000005070 sampling Methods 0.000 claims description 14
- 230000003068 static effect Effects 0.000 claims description 12
- 230000005540 biological transmission Effects 0.000 claims description 5
- 239000011159 matrix material Substances 0.000 claims description 5
- 230000009466 transformation Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 9
- 230000003993 interaction Effects 0.000 abstract description 6
- 230000000903 blocking effect Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 238000013506 data mapping Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 238000007493 shaping process Methods 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/55—Radiosity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
本发明公开一种基于顶点着色器与纹理映射的三维模型爆炸方法及系统,方法包括:创建UV2缓冲区和纹理缓冲区,所述UV2缓冲区用于存储编码后的虚拟对象序号,所述纹理缓冲区用于存储虚拟对象的偏移量;将所述UV2缓冲区、纹理缓冲区及获取的爆炸程度传入顶点着色器;在所述顶点着色器内部,根据所述UV2缓冲区解码得到虚拟对象序号,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸。本发明通过将位置偏移过程的计算从CPU移植到GPU上,解决了CPU上计算线程阻塞、影响交互的问题。
Description
技术领域
本发明涉及图像处理技术领域,尤其涉及一种基于顶点着色器与纹理映射的三维模型爆炸方法及系统。
背景技术
目前主流BIM轻量化渲染引擎为了渲染复杂的BIM数据,常采用静态合批的方式,即通过对同材质的三维对象进行几何合并,从而达到减少drawcall的效果。然而渲染引擎中经常需要对模型进行爆炸视图的操作,以达到理解三维结构的目的。
针对需要爆炸视图的情况,由于几何对象已经完全合并为一个整体,无法单独设置对象的偏移量,因此,常用的方案为:
1.将原始场景中每待合并的虚拟对象(以下简称虚拟对象)记为mesh_i(i为虚拟对象编号,为无符号整形,从0开始计数),静态合批后对象(以下简称合批对象)记为mesh_merge。
2.在静态合批前记录每个虚拟对象在合批对象中的顶点索引范围,如虚拟对象i的顶点范围为[vertex_i_start,vertex_i_end],每个虚拟对象在合批对象中顶点的存储区域是连续的。
3.当需要进行爆炸视图时,依次计算出每个虚拟对象最终相对当前位置的目标偏移向量(记为offset_i,为一个三维向量),根据当前爆炸程度ratio(0≤ratio≤1)插值出每个虚拟对象在当前ratio下的临时偏移向量(记作offset_i_temp),offset_i_temp=offset_i×(ratio)。
4. 根据虚拟对象mesh_i在mesh_merge上的顶点索引范围[vertex_i_start,vertex_i_end],将偏移量offset_i_temp作用(向量加法)在顶点索引范围内的每个顶点上实现顶点坐标偏移,通过此法实现了静态合批下不同对象的坐标偏移效果。
然而,当实现爆炸动画时,ratio是逐帧改变的,BIM模型的构件数量和顶点数量往往也非常庞大,这种在CPU上进行逐帧逐顶点的运算方式,其计算代价非常高昂,电脑性能往往很难跟上,很容易引发性能问题造成交互上的卡顿。
发明内容
为克服上述现有技术的不足,本发明提供一种基于顶点着色器与纹理映射的三维模型爆炸方法及系统,通过将位置偏移过程的计算从CPU移植到GPU上,解决了CPU上计算线程阻塞、影响交互的问题。
根据本发明说明书的一方面,提供一种基于顶点着色器与纹理映射的三维模型爆炸方法,包括:
创建UV2缓冲区和纹理缓冲区,所述UV2缓冲区用于存储编码后的虚拟对象序号,所述纹理缓冲区用于存储虚拟对象的偏移量;
将所述UV2缓冲区、纹理缓冲区及获取的爆炸程度传入顶点着色器;
在所述顶点着色器内部,根据所述UV2缓冲区解码得到虚拟对象序号,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸。
作为进一步的技术方案,创建UV2缓冲区,还包括:
在静态合批阶段为合批对象创建UV2缓冲区;
将虚拟对象的无符号整数序号转换为二维浮点型向量,并按序存入UV2缓冲区。
作为进一步的技术方案,创建纹理缓冲区,还包括:
逐个计算虚拟对象的偏移量;
根据虚拟对象序号换算得到纹理行列号,并将所述偏移量存入纹理行列号对应的位置。
作为进一步的技术方案,根据所述UV2缓冲区解码得到虚拟对象序号,进一步包括:
逐个进行顶点计算时,从UV2缓冲区访问当前顶点对应的UV2通道值,并根据所述UV2通道值计算得到虚拟对象序号。
作为进一步的技术方案,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,进一步包括:
在得到虚拟对象序号后,计算所述虚拟对象序号在纹理缓冲区中对应的像素行列号;
根据所述像素行列号确定采样坐标;
根据所述采样坐标,结合纹理采样函数从纹理缓冲区中采样得到目标偏移量。
作为进一步的技术方案,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸,进一步包括:
采用lerp方法根据爆炸程度对偏移量进行差值,并与原始顶点坐标相加,得到顶点在当前爆炸程度下的世界坐标;
将所述世界坐标进行模型视图投影矩阵变换,输出变换后顶点坐标;
在CPU中根据补间动画在每一动画帧中更改爆炸程度,结合所述变换后顶点坐标,实现三维模型爆炸。
根据本发明说明书的一方面,提供一种基于顶点着色器与纹理映射的三维模型爆炸系统,包括:
创建模块,用于创建UV2缓冲区和纹理缓冲区,所述UV2缓冲区用于存储编码后的虚拟对象序号,所述纹理缓冲区用于存储虚拟对象的偏移量;
传输模块,用于将所述UV2缓冲区、纹理缓冲区及获取的爆炸程度传入顶点着色器;
模型爆炸模块,用于在所述顶点着色器内部,根据所述UV2缓冲区解码得到虚拟对象序号,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸。
作为进一步的技术方案,所述创建模块还用于执行如下操作:
在静态合批阶段为合批对象创建UV2缓冲区;
将虚拟对象的无符号整数序号转换为二维浮点型向量,并按序存入UV2缓冲区。
作为进一步的技术方案,所述创建模块还用于执行如下操作:
逐个计算虚拟对象的偏移量;
根据虚拟对象序号换算得到纹理行列号,并将所述偏移量存入纹理行列号对应的位置。
作为进一步的技术方案,所述模型爆炸模块还包括:解码子模块、偏移量计算子模块及爆炸子模块,所述解码子模块的输出送入偏移量计算子模块的输入端,所述偏移量计算子模块的输出端送入爆炸子模块的输入端,所述爆炸子模块的输出端用于显示三维模型爆炸视图。
与现有技术相比,本发明的有益效果在于:
本发明利用纹理数据映射技术,将虚拟对象偏移量转换为纹理缓冲进行有序的存储和传递,使得在顶点着色器中能获取当前虚拟对象偏移量,从而使得整个坐标偏移计算过程从CPU侧移植到了GPU侧,降低了DrawCall,提高了帧率,防止了CPU上计算线程阻塞,影响交互的问题。
本发明实现了虚拟对象无符号整数序号与二维浮点型向量的可逆编码解码技术,利用合批对象额外的UV2缓冲区对虚拟对象序号进行编码和传递,使得在顶点着色器中能根据UV通道值解码得到当前顶点所处合批对象中虚拟对象的序号。
附图说明
图1为根据本发明实施例的基于顶点着色器与纹理映射的三维模型爆炸方法的流程示意图。
图2为根据本发明实施例的创建UV2缓冲区的流程示意图。
图3为根据本发明实施例的创建纹理缓冲区的流程示意图。
图4为根据本发明实施例在顶点着色器内的三维模型爆炸流程示意图。
具体实施方式
需要说明的是:
WebGL(Web Graphics Library)是一种用于在网页上渲染交互式3D和2D图形的JavaScript API。它基于OpenGL ES(OpenGL for Embedded Systems)标准,允许开发者利用Web浏览器的GPU加速能力来创建高性能的图形和视觉效果。
顶点着色器是一种用于处理图形顶点数据的程序。它是在GPU上执行的着色器程序之一,用于对每个顶点进行操作和转换,以便在屏幕上呈现出所需的图形效果。
爆炸视图是指在三维模型中的一种视图,通过将三维构件或结构的各个部分分离或分离开来,以更清晰地展示建模型的内部结构、组成部分或组件。这种视图以一种类似于爆炸图的方式展示,使得观察者能够更好地理解模型的构造和组成。
纹理是指在计算机图形学中用于表现物体表面外观的图像。这些图像可以是颜色、图案、照片或其他视觉信息。UV坐标是一种二维坐标系统,用于在纹理上定位一个点。纹理数据映射是将数据存储到纹理中,然后在着色器中使用纹理采样器来访问这些数据的技术手段。这种方法可以规避 uniform 数组的大小限制。
现有技术在进行三维视图爆炸操作时,爆炸程度ratio是逐帧改变的,而BIM模型的构件数量和顶点数量非常庞大,这种在CPU上进行逐帧逐顶点运算的计算代价非常高昂,电脑性能很难跟上,很容易引发性能问题造成交互上的卡顿,因此,本发明提供一种基于顶点着色器与纹理映射的三维模型爆炸方法,通过将位置偏移过程的计算从CPU移植到GPU上,来解决电脑性能难以满足需求进而影响交互的问题,并实现了效率的提升。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,例如步骤1.2,步骤1.3等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定语言(如WebGL)描写的数学计算公式,但是应该清楚了解,这些数学计算公式可以不按照其在本文中使用的语言来描写,例如,可以采用WebGPU等,这些描述的语言仅仅是用于描写坐标位置的计算方式,语言本身不限定其所属的API类型。
下面通过附图以及具体实施例对本发明技术方案做详细地说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
实施例1
本实施例介绍一种基于顶点着色器与纹理映射的三维模型爆炸方法,如图1所示,包括:
步骤1,创建UV2缓冲区和纹理缓冲区,所述UV2缓冲区用于存储编码后的虚拟对象序号,所述纹理缓冲区用于存储虚拟对象的偏移量。
UV2缓冲区用于存储虚拟对象序号,使得在顶点着色器中识别到虚拟对象序号;纹理缓冲区用于存储偏移量,用于在顶点着色器中提取指定虚拟对象的偏移量。两个缓冲区对象创建和数据填充的过程没有严格顺序,但需要在在一个绘制批次中传递给GPU。
如图2所示,创建UV2缓冲区,还包括:
步骤1.1,在静态合批阶段为合批对象创建UV2缓冲区。
在静态合批阶段为合批对象额外加上一个UV2缓冲区,UV2是一个Float32Array,长度为2×合批对象顶点总数。
步骤1.2,将虚拟对象的无符号整数序号转换为二维浮点型向量,并按序存入UV2缓冲区。
将第i个虚拟对象记为mesh_i,i为一个32位无符号整形,可表示范围为0~4294967296,已经远超当前计算机可渲染对象数。
将无符号整形i通过算法进拆分成两个16位的单精度浮点数float1=i&0xFFFF/65535.0以及float2=(i>>16)&0xFFFF/65535.0。
设vertex_n为当前正在处理的合批对象中的顶点序号,将步骤1.2中得到的float1和float2作为一个二维向量填充进UV2缓冲区的第vertex_n×2和vertex_n×2+1处。
如图3所示,创建纹理缓冲区,还包括:
步骤1.3,创建像素总数能覆盖当前虚拟对象个数的纹理缓冲区,用于爆炸偏移量数据映射。
步骤1.4,逐个计算虚拟对象的偏移量。该步骤可采用常用的爆炸偏移量计算方法,如采用构件中心到偏移中心的向量乘以一个定长来计算偏移量,达到的效果就是距离爆炸中心越远的构件,其偏移量也越远。这里的构件指代虚拟对象。
需要说明的是,爆炸偏移量计算方法没有定式,取决于开发人员想如何控制爆炸的过程,上述所列的是一种最简单的爆炸计算方法,复杂点的还需要考虑同心构件的爆炸层级、时序、以及爆炸后是否会碰撞等因素。
步骤1.5,根据虚拟对象序号换算得到纹理行列号,并将所述偏移量存入纹理行列号对应的位置。
具体地,设虚拟对象总数为n,创建一张纹理tex,纹理像素宽度tex_w为1024,纹理像素高度tex_h为1024×Math.ceil(n/1024),将每一个对象的偏移坐标存入对象序号对应的像素值处(偏移量xyz与像素rgb均为float类型)。常规1024×1024的纹理对象已可存储百万级偏移量,目前主流设备基本上都可支持4k以上纹理,完全满足表达对象数量要求。需要说明的是,Math.ceil()是常见编程语言中的常用代码,用于向上取整数计算,返回的是大于或等于函数参数的数值。
按序将虚拟对象偏移量offset_i_target的三个分量xyz,填入Float32Array数组的3×i、3×i+1、3×1+2处,并与纹理tex进行绑定。
步骤2,将所述UV2缓冲区、纹理缓冲区及获取的爆炸程度传入顶点着色器。
具体地,爆炸程度ratio为0-1之间的一个浮点型,用uniform声明,表示从爆炸初始位置到爆炸终止位置的插值比例。将ratio、tex、tex_w以及tex_h作为uniform传入顶点着色器中。
步骤3,在所述顶点着色器内部,根据所述UV2缓冲区解码得到虚拟对象序号,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸。
具体地,如图4所示,打开爆炸功能后,在顶点着色器逐顶点计算过程中,可访问到当前顶点处的UV2通道值,设为vec2,在顶点着色器中进行计算将vec2还原成虚拟对象序号i,计算方法为i=uint(vec2[0]×65535.0)+(uint(vec2[1]×65535.0)<<16)。
得到虚拟对象的整数序号i后,计算整数序号i在tex中对应的像素行列号,计算方式为列号col=i%tex_w、行号row=i/tex_w。采样坐标uv为(col/tex_w,row/tex_h),通过纹理采样函数从纹理中取样到数据vec3=sampler2D(tex,uv),vec3即为目标偏移量offset_i。
在顶点着色器中计算顶点在当前ratio下的世界坐标,即 location=lerp(vec3(0,0,0),offset_i,ratio)+position,position为当前顶点世界坐标,属于顶点着色器内建变量。随后将location进行模型视图投影矩阵变换,返回gl_position=gl_ModelViewProjectionMatrix×location。
在CPU中根据补间动画在每一动画帧中更改ratio,此时动画效果即可实现。
实施例2
与实施例1基于相同的发明构思,本实施例介绍一种基于顶点着色器与纹理映射的三维模型爆炸系统,包括:
创建模块,用于创建UV2缓冲区和纹理缓冲区,所述UV2缓冲区用于存储编码后的虚拟对象序号,所述纹理缓冲区用于存储虚拟对象的偏移量;
传输模块,用于将所述UV2缓冲区、纹理缓冲区及获取的爆炸程度传入顶点着色器;
模型爆炸模块,用于在所述顶点着色器内部,根据所述UV2缓冲区解码得到虚拟对象序号,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸。
上述各模块的具体功能实现参考实施例1方法中的相关内容,不予赘述,特别指出的是:
所述创建模块还用于执行如下操作:
在静态合批阶段为合批对象创建UV2缓冲区;
将虚拟对象的无符号整数序号转换为二维浮点型向量,并按序存入UV2缓冲区。
进一步地,所述创建模块还用于执行如下操作:
逐个计算虚拟对象的偏移量;
根据虚拟对象序号换算得到纹理行列号,并将所述偏移量存入纹理行列号对应的位置。
所述模型爆炸模块还包括:解码子模块、偏移量计算子模块及爆炸子模块,所述解码子模块的输出送入偏移量计算子模块的输入端,所述偏移量计算子模块的输出端送入爆炸子模块的输入端,所述爆炸子模块的输出端用于显示三维模型爆炸视图。
所述解码子模块,用于执行如下操作:
逐个进行顶点计算时,从UV2缓冲区访问当前顶点对应的UV2通道值,并根据所述UV2通道值计算得到虚拟对象序号。
所述偏移量计算子模块,用于执行如下操作:
在得到虚拟对象序号后,计算所述虚拟对象序号在纹理缓冲区中对应的像素行列号;
根据所述像素行列号确定采样坐标;
根据所述采样坐标,结合纹理采样函数从纹理缓冲区中采样得到目标偏移量。
所述爆炸子模块,用于执行如下操作:
采用lerp方法根据爆炸程度对偏移量进行差值,并与原始顶点坐标相加,得到顶点在当前爆炸程度下的世界坐标;
将所述世界坐标进行模型视图投影矩阵变换,输出变换后顶点坐标;
在CPU中根据补间动画在每一动画帧中更改爆炸程度,结合所述变换后顶点坐标,实现三维模型爆炸。
综上实施例,本发明利用纹理数据映射技术,将虚拟对象偏移量转换为纹理缓冲进行有序的存储和传递,使得在顶点着色器中能获取当前虚拟对象偏移量,从而使得整个坐标偏移计算过程从CPU侧移植到了GPU侧,降低了DrawCall,提高了帧率,防止了CPU上计算线程阻塞,影响交互的问题。
本发明实现了虚拟对象无符号整数序号与二维浮点型向量的可逆编码解码技术,利用合批对象额外的UV2缓冲区对虚拟对象序号进行编码和传递,使得在顶点着色器中能根据UV通道值解码得到当前顶点所处合批对象中虚拟对象的序号。
除了建筑信息领域的BIM模型,其他领域的大体量模型,诸如教育领域的天文模型、生物领域的人体器官模型,游戏领域的3D模型,凡是使用了静态合批的三维场景等都可按照本发明所使用的技术手段在在WebGL爆炸视图中进行渲染优化。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (5)
1.基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,包括:
创建UV2缓冲区和纹理缓冲区,所述UV2缓冲区用于存储编码后的虚拟对象序号,所述纹理缓冲区用于存储虚拟对象的偏移量;创建UV2缓冲区,还包括:在静态合批阶段为合批对象创建UV2缓冲区;将虚拟对象的无符号整数序号转换为二维浮点型向量,并按序存入UV2缓冲区;创建纹理缓冲区,还包括:逐个计算虚拟对象的偏移量;根据虚拟对象序号换算得到纹理行列号,并将所述偏移量存入纹理行列号对应的位置;
将所述UV2缓冲区、纹理缓冲区及获取的爆炸程度传入顶点着色器;
在所述顶点着色器内部,根据所述UV2缓冲区解码得到虚拟对象序号,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸;
根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸,进一步包括:采用lerp方法根据爆炸程度对偏移量进行差值,并与原始顶点坐标相加,得到顶点在当前爆炸程度下的世界坐标;将所述世界坐标进行模型视图投影矩阵变换,输出变换后顶点坐标;在CPU中根据补间动画在每一动画帧中更改爆炸程度,结合所述变换后顶点坐标,实现三维模型爆炸。
2.根据权利要求1所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,根据所述UV2缓冲区解码得到虚拟对象序号,进一步包括:
逐个进行顶点计算时,从UV2缓冲区访问当前顶点对应的UV2通道值,并根据所述UV2通道值计算得到虚拟对象序号。
3.根据权利要求2所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,进一步包括:
在得到虚拟对象序号后,计算所述虚拟对象序号在纹理缓冲区中对应的像素行列号;
根据所述像素行列号确定采样坐标;
根据所述采样坐标,结合纹理采样函数从纹理缓冲区中采样得到目标偏移量。
4.基于顶点着色器与纹理映射的三维模型爆炸系统,其特征在于,包括:
创建模块,用于创建UV2缓冲区和纹理缓冲区,所述UV2缓冲区用于存储编码后的虚拟对象序号,所述纹理缓冲区用于存储虚拟对象的偏移量;创建UV2缓冲区,还包括:在静态合批阶段为合批对象创建UV2缓冲区;将虚拟对象的无符号整数序号转换为二维浮点型向量,并按序存入UV2缓冲区;创建纹理缓冲区,还包括:逐个计算虚拟对象的偏移量;根据虚拟对象序号换算得到纹理行列号,并将所述偏移量存入纹理行列号对应的位置;
传输模块,用于将所述UV2缓冲区、纹理缓冲区及获取的爆炸程度传入顶点着色器;
模型爆炸模块,用于在所述顶点着色器内部,根据所述UV2缓冲区解码得到虚拟对象序号,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸;
根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸,进一步包括:采用lerp方法根据爆炸程度对偏移量进行差值,并与原始顶点坐标相加,得到顶点在当前爆炸程度下的世界坐标;将所述世界坐标进行模型视图投影矩阵变换,输出变换后顶点坐标;在CPU中根据补间动画在每一动画帧中更改爆炸程度,结合所述变换后顶点坐标,实现三维模型爆炸。
5.根据权利要求4所述基于顶点着色器与纹理映射的三维模型爆炸系统,其特征在于,所述模型爆炸模块还包括:解码子模块、偏移量计算子模块及爆炸子模块,所述解码子模块的输出送入偏移量计算子模块的输入端,所述偏移量计算子模块的输出端送入爆炸子模块的输入端,所述爆炸子模块的输出端用于显示三维模型爆炸视图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311819883.4A CN117472592B (zh) | 2023-12-27 | 2023-12-27 | 基于顶点着色器与纹理映射的三维模型爆炸方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311819883.4A CN117472592B (zh) | 2023-12-27 | 2023-12-27 | 基于顶点着色器与纹理映射的三维模型爆炸方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117472592A CN117472592A (zh) | 2024-01-30 |
CN117472592B true CN117472592B (zh) | 2024-03-19 |
Family
ID=89640004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311819883.4A Active CN117472592B (zh) | 2023-12-27 | 2023-12-27 | 基于顶点着色器与纹理映射的三维模型爆炸方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117472592B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007272273A (ja) * | 2006-03-30 | 2007-10-18 | Namco Bandai Games Inc | 画像生成システム、プログラム、及び情報記憶媒体 |
CN108573524A (zh) * | 2018-04-12 | 2018-09-25 | 东南大学 | 基于渲染管线的交互式实时自由立体显示方法 |
CN109785417A (zh) * | 2018-11-29 | 2019-05-21 | 中国船舶重工集团公司第七0九研究所 | 一种实现OpenGL累积操作的方法及装置 |
CN111311761A (zh) * | 2020-02-24 | 2020-06-19 | 深圳震有科技股份有限公司 | 基于图形学在gis系统模拟爆炸火焰效果处理方法及装置 |
CN111754614A (zh) * | 2020-06-30 | 2020-10-09 | 平安国际智慧城市科技股份有限公司 | 基于vr视频渲染方法、装置、电子设备及存储介质 |
CN112215932A (zh) * | 2020-10-23 | 2021-01-12 | 网易(杭州)网络有限公司 | 粒子动画处理方法、装置、存储介质及计算机设备 |
CN112884875A (zh) * | 2021-03-19 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
CN114241098A (zh) * | 2021-12-21 | 2022-03-25 | 网易(杭州)网络有限公司 | 一种卡通动态效果制作方法和装置 |
WO2022257750A1 (zh) * | 2021-06-11 | 2022-12-15 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、电子设备、程序及可读存储介质 |
CN115914526A (zh) * | 2023-01-09 | 2023-04-04 | 中建三局信息科技有限公司 | 基于云渲染的bim模型可视化方法、装置、设备及介质 |
CN116385617A (zh) * | 2023-04-12 | 2023-07-04 | 大鱼竞技(北京)网络科技有限公司 | 一种水体爆炸波纹效果制作方法 |
WO2023160054A1 (zh) * | 2022-02-25 | 2023-08-31 | 腾讯科技(深圳)有限公司 | 一种图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 |
WO2023202254A1 (zh) * | 2022-04-19 | 2023-10-26 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7920144B2 (en) * | 2005-01-18 | 2011-04-05 | Siemens Medical Solutions Usa, Inc. | Method and system for visualization of dynamic three-dimensional virtual objects |
US20150325044A1 (en) * | 2014-05-09 | 2015-11-12 | Adornably, Inc. | Systems and methods for three-dimensional model texturing |
-
2023
- 2023-12-27 CN CN202311819883.4A patent/CN117472592B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007272273A (ja) * | 2006-03-30 | 2007-10-18 | Namco Bandai Games Inc | 画像生成システム、プログラム、及び情報記憶媒体 |
CN108573524A (zh) * | 2018-04-12 | 2018-09-25 | 东南大学 | 基于渲染管线的交互式实时自由立体显示方法 |
CN109785417A (zh) * | 2018-11-29 | 2019-05-21 | 中国船舶重工集团公司第七0九研究所 | 一种实现OpenGL累积操作的方法及装置 |
CN111311761A (zh) * | 2020-02-24 | 2020-06-19 | 深圳震有科技股份有限公司 | 基于图形学在gis系统模拟爆炸火焰效果处理方法及装置 |
CN111754614A (zh) * | 2020-06-30 | 2020-10-09 | 平安国际智慧城市科技股份有限公司 | 基于vr视频渲染方法、装置、电子设备及存储介质 |
CN112215932A (zh) * | 2020-10-23 | 2021-01-12 | 网易(杭州)网络有限公司 | 粒子动画处理方法、装置、存储介质及计算机设备 |
CN112884875A (zh) * | 2021-03-19 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
WO2022193941A1 (zh) * | 2021-03-19 | 2022-09-22 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、设备、介质和计算机程序产品 |
WO2022257750A1 (zh) * | 2021-06-11 | 2022-12-15 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、电子设备、程序及可读存储介质 |
CN114241098A (zh) * | 2021-12-21 | 2022-03-25 | 网易(杭州)网络有限公司 | 一种卡通动态效果制作方法和装置 |
WO2023160054A1 (zh) * | 2022-02-25 | 2023-08-31 | 腾讯科技(深圳)有限公司 | 一种图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 |
WO2023202254A1 (zh) * | 2022-04-19 | 2023-10-26 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 |
CN115914526A (zh) * | 2023-01-09 | 2023-04-04 | 中建三局信息科技有限公司 | 基于云渲染的bim模型可视化方法、装置、设备及介质 |
CN116385617A (zh) * | 2023-04-12 | 2023-07-04 | 大鱼竞技(北京)网络科技有限公司 | 一种水体爆炸波纹效果制作方法 |
Non-Patent Citations (1)
Title |
---|
基于GPU加速的辐射度光照算法的研究及应用;于平;;国外电子测量技术;20161115(11);1-5 * |
Also Published As
Publication number | Publication date |
---|---|
CN117472592A (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101923562B1 (ko) | 가변 렌더링 및 래스터화 파라미터 하에서 가변 뷰포트에 대하여 오브젝트를 효율적으로 리렌더링하는 방법 | |
US4600919A (en) | Three dimensional animation | |
US9589386B2 (en) | System and method for display of a repeating texture stored in a texture atlas | |
EP0794516B1 (en) | Image processing method and apparatus | |
WO2016142787A1 (en) | System, method and device for three-dimensional voxel-based modeling | |
US10733793B2 (en) | Indexed value blending for use in image rendering | |
WO2017122092A1 (en) | Method and system for high-performance real-time adjustment of one or more elements in a playing video, interactive 360° content or image | |
WO2023043993A1 (en) | Displaced micro-meshes for ray and path tracing | |
CN114820990B (zh) | 一种基于数字孪生的流域防洪可视化方法及系统 | |
Noguera et al. | Volume rendering strategies on mobile devices | |
KR20180023856A (ko) | 그래픽 처리 시스템 및 그래픽 프로세서 | |
KR20170031479A (ko) | 경로 스트로크를 수행하는 방법 및 장치 | |
RU2680355C1 (ru) | Способ и система удаления невидимых поверхностей трёхмерной сцены | |
Gordon et al. | Computer graphics programming in OpenGL with C++ | |
US5793372A (en) | Methods and apparatus for rapidly rendering photo-realistic surfaces on 3-dimensional wire frames automatically using user defined points | |
CN113129420B (zh) | 一种基于深度缓冲加速的光线追踪渲染方法 | |
KR101090660B1 (ko) | 포인트 프리미티브를 이용한 실시간 볼륨 렌더링 방법 | |
CN117472592B (zh) | 基于顶点着色器与纹理映射的三维模型爆炸方法及系统 | |
KR101227155B1 (ko) | 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법 | |
WILLCOCKS | Sparse volumetric deformation | |
Balciunas et al. | GPU-assisted ray casting of large scenes | |
US20240095996A1 (en) | Efficiency of ray-box tests | |
Nilsson | Optimization Methods for Direct Volume Rendering on the Client Side Web | |
Aguiar et al. | Solving the stereo matching problem using an embedded GPU for a real-time application | |
JPH03210670A (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 |