发明名称 |
一种多子网格模型上进行面分裂型曲面细分的方法 |
摘要 |
本发明公开了一种多子网格模型上进行面分裂型曲面细分的方法。该方法步骤包括:读取网格模型的所有子网格数据和uv坐标,以及其他关联属性值,如法向,颜色等;建立模型点、边、面拓扑数据结构;根据细分方法几何规则,计算细分曲面的新顶点坐标,并计算它们对应的uv坐标和其它属性值;根据细分方法的拓扑规则,更新细分模型的子网格数据、uv坐标和其它属性值;如果需要下一次细分,更新拓扑数据结构,重复上述过程。细分后网格模型的子网格带有原子网格的所有属性,可以直接用于渲染显示,除大幅提升模型细节和画质外,该发明也提高建模人员开发效率,减少模型文件容量,优化传输效率。 |
申请公布号 |
CN103559374B |
申请公布日期 |
2016.06.22 |
申请号 |
CN201310601250.6 |
申请日期 |
2013.11.25 |
申请人 |
中国科学院自动化研究所 |
发明人 |
车武军;鲍冠伯;王政;徐波 |
分类号 |
G06F17/50(2006.01)I;G06T17/30(2006.01)I |
主分类号 |
G06F17/50(2006.01)I |
代理机构 |
中科专利商标代理有限责任公司 11021 |
代理人 |
宋焰琴 |
主权项 |
一种多子网格模型上进行面分裂型曲面细分的方法,其包括:步骤1、读取所述多子网格模型的所有子网格数据,子网格也称为patch,子网格数据也称patch数据;步骤2、根据所述patch数据,建立所述多子网格模型的点、边、面的拓扑数据结构mesh,拓扑数据结构mesh包含所有patch不重复的点、边、面拓扑结构,其中:拓扑数据结构mesh的每个点、边、面带有所属patch ID;顶点和边可拥有多个patch ID;每个面元只属于一个patch,它在mesh中有唯一的patch ID;如果顶点对应多个不同的uv坐标,称为分裂点,否则称为正常点。步骤3、计算细分曲面的新顶点坐标,并依据生成新顶点的原始顶点的类型以及相应的细分几何规则分别计算新顶点V‑vertex、新边点E‑vertex、新面点F‑vertex的uv坐标,其中新顶点V‑vertex、新边点E‑vertex、新面点F‑vertex对应的uv坐标计算方式如下:新顶点V‑vertex:原顶点的uv坐标;新边点E‑vertex:如果边点是正常点,uv坐标用作用于顶点坐标的细分规则进行细分操作;如果边点为分裂点,规范化边点的对应边的两个原顶点的加权值,使相加之和为1,然后用规范化后的加权值插值两个原顶点的uv坐标,该操作对对应边的相邻面元依次单独进行,因此对应不同的相邻面元有不同的uv坐标属性;新面点F‑vertex:采用计算新面点的顶点的加权值,uv坐标用作用于顶点坐标的细分规则进行细分操作;步骤4、对所述新顶点进行拓扑连接,生成细分曲面的新面,更新模型细分后的patch数据;步骤5、如果需要下一次细分,更新拓扑数据结构mesh,返回步骤3。 |
地址 |
100190 北京市海淀区中关村东路95号 |