System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及图像处理,尤其涉及一种基于顶点着色器与纹理映射的三维模型爆炸方法及系统。
技术介绍
1、目前主流bim轻量化渲染引擎为了渲染复杂的bim数据,常采用静态合批的方式,即通过对同材质的三维对象进行几何合并,从而达到减少drawcall的效果。然而渲染引擎中经常需要对模型进行爆炸视图的操作,以达到理解三维结构的目的。
2、针对需要爆炸视图的情况,由于几何对象已经完全合并为一个整体,无法单独设置对象的偏移量,因此,常用的方案为:
3、1.将原始场景中每待合并的虚拟对象(以下简称虚拟对象)记为mesh_i(i为虚拟对象编号,为无符号整形,从0开始计数),静态合批后对象(以下简称合批对象)记为mesh_merge。
4、2.在静态合批前记录每个虚拟对象在合批对象中的顶点索引范围,如虚拟对象i的顶点范围为[vertex_i_start,vertex_i_end],每个虚拟对象在合批对象中顶点的存储区域是连续的。
5、3.当需要进行爆炸视图时,依次计算出每个虚拟对象最终相对当前位置的目标偏移向量(记为offset_i,为一个三维向量),根据当前爆炸程度ratio(0≤ratio≤1)插值出每个虚拟对象在当前ratio下的临时偏移向量(记作offset_i_temp),offset_i_temp=offset_i×(ratio)。
6、4. 根据虚拟对象mesh_i在mesh_merge上的顶点索引范围[vertex_i_start,vertex_i_end],将偏移量of
7、然而,当实现爆炸动画时,ratio是逐帧改变的,bim模型的构件数量和顶点数量往往也非常庞大,这种在cpu上进行逐帧逐顶点的运算方式,其计算代价非常高昂,电脑性能往往很难跟上,很容易引发性能问题造成交互上的卡顿。
技术实现思路
1、为克服上述现有技术的不足,本专利技术提供一种基于顶点着色器与纹理映射的三维模型爆炸方法及系统,通过将位置偏移过程的计算从cpu移植到gpu上,解决了cpu上计算线程阻塞、影响交互的问题。
2、根据本专利技术说明书的一方面,提供一种基于顶点着色器与纹理映射的三维模型爆炸方法,包括:
3、创建uv2缓冲区和纹理缓冲区,所述uv2缓冲区用于存储编码后的虚拟对象序号,所述纹理缓冲区用于存储虚拟对象的偏移量;
4、将所述uv2缓冲区、纹理缓冲区及获取的爆炸程度传入顶点着色器;
5、在所述顶点着色器内部,根据所述uv2缓冲区解码得到虚拟对象序号,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸。
6、作为进一步的技术方案,创建uv2缓冲区,还包括:
7、在静态合批阶段为合批对象创建uv2缓冲区;
8、将虚拟对象的无符号整数序号转换为二维浮点型向量,并按序存入uv2缓冲区。
9、作为进一步的技术方案,创建纹理缓冲区,还包括:
10、逐个计算虚拟对象的偏移量;
11、根据虚拟对象序号换算得到纹理行列号,并将所述偏移量存入纹理行列号对应的位置。
12、作为进一步的技术方案,根据所述uv2缓冲区解码得到虚拟对象序号,进一步包括:
13、逐个进行顶点计算时,从uv2缓冲区访问当前顶点对应的uv2通道值,并根据所述uv2通道值计算得到虚拟对象序号。
14、作为进一步的技术方案,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,进一步包括:
15、在得到虚拟对象序号后,计算所述虚拟对象序号在纹理缓冲区中对应的像素行列号;
16、根据所述像素行列号确定采样坐标;
17、根据所述采样坐标,结合纹理采样函数从纹理缓冲区中采样得到目标偏移量。
18、作为进一步的技术方案,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸,进一步包括:
19、采用lerp方法根据爆炸程度对偏移量进行差值,并与原始顶点坐标相加,得到顶点在当前爆炸程度下的世界坐标;
20、将所述世界坐标进行模型视图投影矩阵变换,输出变换后顶点坐标;
21、在cpu中根据补间动画在每一动画帧中更改爆炸程度,结合所述变换后顶点坐标,实现三维模型爆炸。
22、根据本专利技术说明书的一方面,提供一种基于顶点着色器与纹理映射的三维模型爆炸系统,包括:
23、创建模块,用于创建uv2缓冲区和纹理缓冲区,所述uv2缓冲区用于存储编码后的虚拟对象序号,所述纹理缓冲区用于存储虚拟对象的偏移量;
24、传输模块,用于将所述uv2缓冲区、纹理缓冲区及获取的爆炸程度传入顶点着色器;
25、模型爆炸模块,用于在所述顶点着色器内部,根据所述uv2缓冲区解码得到虚拟对象序号,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸。
26、作为进一步的技术方案,所述创建模块还用于执行如下操作:
27、在静态合批阶段为合批对象创建uv2缓冲区;
28、将虚拟对象的无符号整数序号转换为二维浮点型向量,并按序存入uv2缓冲区。
29、作为进一步的技术方案,所述创建模块还用于执行如下操作:
30、逐个计算虚拟对象的偏移量;
31、根据虚拟对象序号换算得到纹理行列号,并将所述偏移量存入纹理行列号对应的位置。
32、作为进一步的技术方案,所述模型爆炸模块还包括:解码子模块、偏移量计算子模块及爆炸子模块,所述解码子模块的输出送入偏移量计算子模块的输入端,所述偏移量计算子模块的输出端送入爆炸子模块的输入端,所述爆炸子模块的输出端用于显示三维模型爆炸视图。
33、与现有技术相比,本专利技术的有益效果在于:
34、本专利技术利用纹理数据映射技术,将虚拟对象偏移量转换为纹理缓冲进行有序的存储和传递,使得在顶点着色器中能获取当前虚拟对象偏移量,从而使得整个坐标偏移计算过程从cpu侧移植到了gpu侧,降低了drawcall,提高了帧率,防止了cpu上计算线程阻塞,影响交互的问题。
35、本专利技术实现了虚拟对象无符号整数序号与二维浮点型向量的可逆编码解码技术,利用合批对象额外的uv2缓冲区对虚拟对象序号进行编码和传递,使得在顶点着色器中能根据uv通道值解码得到当前顶点所处合批对象中虚拟对象的序号。
本文档来自技高网...【技术保护点】
1.基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,包括:
2.根据权利要求1所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,创建UV2缓冲区,还包括:
3.根据权利要求1所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,创建纹理缓冲区,还包括:
4.根据权利要求1所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,根据所述UV2缓冲区解码得到虚拟对象序号,进一步包括:
5.根据权利要求4所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,进一步包括:
6.根据权利要求5所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,根据所述爆炸程度对目标偏移量进行处理,并根据处理结果实现三维模型爆炸,进一步包括:
7.基于顶点着色器与纹理映射的三维模型爆炸系统,其特征在于,包括:
8.根据权利要求7所述基于顶点着色器与纹理映射的三维模型爆炸系统,其特征在于,所述创建模块还用于执行如下操作:
< ...【技术特征摘要】
1.基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,包括:
2.根据权利要求1所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,创建uv2缓冲区,还包括:
3.根据权利要求1所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,创建纹理缓冲区,还包括:
4.根据权利要求1所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,根据所述uv2缓冲区解码得到虚拟对象序号,进一步包括:
5.根据权利要求4所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,根据虚拟对象序号结合纹理缓冲区得到虚拟对象的目标偏移量,进一步包括:
6.根据权利要求5所述基于顶点着色器与纹理映射的三维模型爆炸方法,其特征在于,根据所述爆炸...
【专利技术属性】
技术研发人员:丁文军,代涛,梁潇,谷斯顿,袁占全,曾瑞略,朱紫威,张逸迪,王彦东,韩先锋,
申请(专利权)人:中建三局集团有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。