主权项 |
一种三维模型渐进网格数据组织方法,其特征在于:根据三维模型的原始网格Mn生成渐进网格数据,包括基础网格M0和基础索引数据Index0、各级增量数据{ΔData1,ΔData2,…ΔDatan},以及各级细节层次网格M1,M2,…Mn对应的索引数据{Index1,Index2,…Indexn};其中,多细节层次级别为i的细节层次网格Mi=Mi‑1+ΔDatai,i取值为1,2,…n;将基础网格M0和基础索引数据Index0存储到最顶层,随着尺度的增大,依次将各级增量几何数据{ΔData1,ΔData2,…ΔDatan}和各级细节层次网格M1,M2,…Mn对应的索引数据{Index1,Index2,…Indexn}存储到对应层次中;在渐进网格可视化过程中,首先将基础网格M0和基础索引数据Index0传输到客户端,并进行绘制;根据当前所需的多细节层次级别i,传输对应的增量数据ΔDatai和索引数据Indexi到客户端,在上一级别的细节层次网格Mi‑1基础上绘制细节层次网格Mi;所述生成渐进网格数据的具体方式包括以下步骤,步骤1,读取原始三维模型,将原始三维模型的原始网格作为细节层次网格Mn,将原始三维模型的所有顶点加入渐进网格顶点集合VertexList中,并初始化所有顶点的属性Level值为0;设置原始三维模型的所有顶点和三角形的属性Removed值为false,表示未被移除;将原始三维模型的所有三角形列入三角形链表TriangleList,遍历三角形链表TriangleList得到索引数据Indexn,将索引数据Indexn加入各级多细节层次索引LodVertexList中;设当前待简化的细节层次网格为Mk,令k=n;步骤2,将当前待简化的细节层次网格Mk简化得到上一层的细节层次网格Mk‑1,得到简化后需要移除的顶点集合Vm;设简化后顶点集合Vm中任一顶点Va由顶点Vb替代,遍历包含顶点Va的邻接三角形集合,将邻接三角形集合中所有三角形指向顶点Va的指针都指向顶点Vb,形成Va的指向三角形集合;顶点集合Vm中所有顶点的指向三角形集合构成三角形集合NT;步骤3,遍历三角形集合NT,当三角形内的三个顶点指针中任意两个指向同一顶点时,则该三角形为无效的三角形;设置所有无效的三角形属性Removed值为true,表示已移除;步骤4,在渐进网格顶点集合VertexList中标记顶点集合Vm内所有顶点的属性Removed值为true,表示已移除;设置顶点集合Vm内所有顶点的属性Level值为k,表示多细节层次 级别为k,该顶点集合Vm为第k级的增量数据ΔDatak;步骤5,遍历三角形链表TriangleList中属性Removed值为false的三角形,得到索引数据Indexk‑1,将索引数据Indexk‑1加入各级多细节层次索引LodVertexList中;步骤6,若k>0,令k=k‑1,返回步骤2继续计算增量数据ΔDatak和索引数据Indexk‑1,若如果k=0,进入步骤7;步骤7,渐进网格顶点集合VertexList中所有属性Removed值为true的顶点所构成集合即为基础网格M0,遍历三角形链表TriangleList中属性Removed值为false的三角形,所得索引数据即为基础索引数据Index0。 |