博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模型数据处理之删除重复点和重复面
阅读量:4162 次
发布时间:2019-05-26

本文共 1733 字,大约阅读时间需要 5 分钟。

作者:翔翔

  在同等设备的条件下,三维场景中的模型的三角面越多,此时显示的帧率就会降低。这个时候呈现给用户的感觉是:数据加载慢和操作不流畅。超图对此有一种很重要的方式:将数据生成缓存来提升性能。基于此还需要提前对数据做一些优化。比如移除重复点和重复面、实例化对象和三角网简化。本文将着重介绍移除重复点和重复面。

  模型是通过顶点构成三角网,然后再给三角网附上对应的材质。那么如果顶点冗余了,在场景中加载过多的顶点和三角面,自然而言会严重影响到性能。如何将一个模型对象的顶点减少到最好呢?
  在超图的iDesktop中,有移除重复点和重复面的功能,如下图所示:移除重复点和移除重复面
  做一个对比,同一个模型,原始的有109万个顶点,通过移除重复点后,就只有51万个顶点了,这个减少是很明显的了。而且这只是一个对象,如果对象个数很多,那么减少的数量就更多,性能提升的就更加显而易见了。
在这里插入图片描述

移除重复点之前

在这里插入图片描述

移除重复点之后

  通过iDesktop移除了,那么代码是如何实现的呢?接下来就来分享下如何通过代码来移除重复点和重复面。

  移除重复点:

int vertexcount = ModelBuilder3D.RemoveDuplicateVertex2(sourcemodel, resultmodel);

  或者

//获取LOD层级    int lodcount = model.LODCount;    for (int i = -1; i < lodcount; i++)    {    		//获取骨架个数         int skeletoncount = model.GetSkeletonCount(i);         for (int j = 0; j < skeletoncount; j++)         {         	//根据LOD层级和第几个骨架获取骨架编号             SkeletonID skeletonid = new SkeletonID(i, j);             //根据骨架编号获取骨架             Skeleton skeleton = model.GetSkeleton(skeletonid);             //移除重复点             ModelBuilder3D.RemoveDuplicateVertex2(skeleton);             //将移除后的骨架添加到新的model中去,构建模型             temp.Add(skeleton);           } }

      移除重复面:

    //获取LOD层级    int lodcount = model.LODCount;    for (int i = -1; i < lodcount; i++)    {    		//获取骨架个数         int skeletoncount = model.GetSkeletonCount(i);         for (int j = 0; j < skeletoncount; j++)         {         	//根据LOD层级和第几个骨架获取骨架编号             SkeletonID skeletonid = new SkeletonID(i, j);             //根据骨架编号获取骨架             Skeleton skeleton = model.GetSkeleton(skeletonid);             //移除重复点             ModelBuilder3D.RemoveDuplicateVertex2(skeleton);             //将移除后的骨架添加到新的model中去,构建模型             temp.Add(skeleton);           } }

        此方法移除的效果就和桌面的效果一样。移除重复点和重复面就分享到此,下一篇将说明如何实例化。

      转载请注明出处:

      你可能感兴趣的文章
      从手Q与微信之争,看腾讯内在的真实矛盾与战略
      查看>>
      移动互联网的七宗败案
      查看>>
      互联网十大失败案
      查看>>
      小米颓势已现,生死劫命悬手机
      查看>>
      三大隐忧 三星未来路在何方?
      查看>>
      linux下各种进制转化最简单的的命令行
      查看>>
      结构体和联合体
      查看>>
      ACM(Association for Computing Machinery )组织的详细介绍
      查看>>
      unix高级编程之-命令行参数(实践一)
      查看>>
      无线网络加密方式对比 .
      查看>>
      linux中cat命令使用详解
      查看>>
      卸载oracle
      查看>>
      hive 自定义函数jar发布的方法
      查看>>
      对DMA传输机制的学习
      查看>>
      QT中this指针
      查看>>
      java中的异常机制
      查看>>
      java SE面向对象思维导图
      查看>>
      三维分析之视频投放
      查看>>
      SuperMap iDesktop之栅格值怎么查
      查看>>
      SuperMap iClient3D for WebGL教程-orientation
      查看>>