[发明专利]一种提高三维模型渲染性能的方法有效
申请号: | 201210116987.4 | 申请日: | 2012-04-19 |
公开(公告)号: | CN102663801A | 公开(公告)日: | 2012-09-12 |
发明(设计)人: | 关鸿亮;秦春;单文;蔡志煌;边帅 | 申请(专利权)人: | 北京天下图数据技术有限公司 |
主分类号: | G06T15/04 | 分类号: | G06T15/04;G06T19/00;G06T1/60 |
代理公司: | 北京方韬法业专利代理事务所 11303 | 代理人: | 岳亚 |
地址: | 100083 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 提高 三维 模型 渲染 性能 方法 | ||
技术领域
本发明涉及一种提高三维模型渲染性能的方法。
背景技术
在三维数字城市应用中,高效率、实时渲染海量城市模型数据是一个比较困难的问题。由于普通计算机显卡硬件性能有限,在软件层面去优化海量城市模型数据的渲染效率,就成了比较迫切的问题。
发明内容
本发明的目的是提供一种在软件层面上优化海量城市模型数据的渲染效率,提高三维模型渲染性能的方法
本发明提供了一种提高三维模型渲染性能的方法,包括步骤:将有共用纹理的模型进行合并得到合并后的模型;将合并后的模型的内部纹理进行合并;将对内部纹理进行合并处理后的模型进行多细节层次LOD处理;将进行过多细节层次LOD处理的模型划分到不同的模型瓦片中去,对所得到的模型瓦片进行基于R树的分块划分。
本发明的提高三维模型渲染性能的方法,在将有共用纹理的模型进行合并的步骤中,采用了如下聚类算法:
开始以unvisited的任意一个点出发,寻找到该点的距离在eps范围内的所有附近点,并且对返回的结果按照聚类的收敛因子k_mat+k_dis降序排序;如果该点的是核心点,那么创建一个新的聚类Cluster,并将该点标记为vistied,然后将聚类附近符合条件的邻居点加入到该聚类中,同时判断该聚类是否已经满足数据大小小于MaxClusterMeshDataSize,如果大于该阀值那么停止创建该聚类,否则继续递归评估刚才加入到聚类的中未被标记为已访问的点,直到该聚类满足条件或者该聚类中的所有点标记为visited;如果该点不是核心点,暂时将其标记为为噪声点。重复遍历数据集中所有标记为unvisited的点,直到数据集中所有点标记为visited;如果所有的点已经被访问则结束,否则取下一个unvisited的点,进行如上步骤;其中,eps为两点之间的最大距离;k_mat为任意两个模型的材质重合度的计算因子,其公式为:k_mat=1-(不同材质的子网格数量/所有材质的子网格数量);k_dis为空间距离的聚类因子,其公式为:k_dis=1-(dis/far_distance),dis为两个模型中心点之间的空间距离,far_distance为模型可以聚合在一起的最大距离;聚类的最大模型数据大小相加为MaxClusterMeshDataSize。
本发明的提高三维模型渲染性能的方法,将合并后的模型的内部纹理进行合并的步骤进一步包括:扫描模型所分解成的网格,记录网格中各三角面的纹理坐标、纹理参数和纹理名称;将不同尺寸的纹理合并成大纹理;重新绘制新纹理,修改网格中的纹理坐标和纹理名称。
本发明的提高三维模型渲染性能的方法,进一步包括:遍历网格三角面,收集待合并的纹理,记录各纹理的尺寸,地址映射模式,并将待合并的纹理保存到纹理列表中,对列表中的纹理,按照尺寸由大到小进行排序。
本发明的提高三维模型渲染性能的方法,将不同尺寸的纹理合并成大纹理的步骤中,采用了如下算法:
a,创建一棵二叉树;
b,判断纹理列表中所有纹理是否都已经被处理,如果是,则进入i,否则,进入c;
c,从纹理列表中按顺序取下一张纹理;
d,按照插入算法,尝试将取下的纹理插入到二叉树中,并记录返回值;
e,判断返回值是否为真,如果是,则进入f,否则,进入g;
f,将取下的纹理插入到二叉树中,标记该纹理为已处理
g,判断取下的纹理是否为列表中最后一张纹理,如果是,则进入h,否则进入c;
h,将二叉树保存到二叉树列表中,创建一棵新的二叉树代替旧的二叉树;
i,结束。
本发明的提高三维模型渲染性能的方法,所述插入算法如下:
a,判断二叉树根结点的左右子树是否都不为空,如果是,则,否则,进入b;
b,尝试将纹理插入到根结点左子树中;
c,判断是否插入成功,如果是,则进入m,否则进入d;
d,尝试将纹理插入到根结点右子树中
e,判断插入是否成功,如果是,则进入m,否则进入f;
f,判断当前结点是否已被结点占用,如果是,则进入n,否则进入g;
g,判断当前结点尺寸大小是否小于插入的纹理尺寸大小,如果是,则进入n,否则进入h;
h,判断当前结点尺寸刚好与纹理尺寸相同,如果是,则进入j,否则进入k;
j,在当前结点位置插入纹理;
k,将当前结点一分为二,进入l;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京天下图数据技术有限公司,未经北京天下图数据技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210116987.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:螺线管线性驱动器及其制作方法
- 下一篇:电容插壳机