之前集成gmsh的过程中,采用的方式是直接获取划分网格后的所有的点以及单元ID,然后根据这些点信息组装起来,这样处理没有也是正常的,但是没法找到面对应的点与单元,因此,我花了一个晚上的时间重新看了gmsh的文档,修改了原来获取总点数和总单元的方式,采用按面来获取,然后逐个面渲染处理,话不多说,直接介绍核心代码:
第一是获取所有的实体:
std::vector<std::pair<int, int> > entities;
gmsh::model::getEntities(entities);
第二是遍历entities,得到它的点和单元信息“
int dim = entities[i].first, tag = entities[i].second;
gmsh::model::mesh::getNodes(nodeTags, nodeCoords, nodeParams, dim, tag);gmsh::model::mesh::getElements(elemTypes, elemTags, elemNodeTags, dim, tag);
第三步就是渲染了,可以参考我之前的博客,写了具体代码,如此就能按面显示出来了,看下OSG中的显示效果吧(每个面着色处理用于区分):
先来看下原模型显示:
划分下效果如下(参数随意设置效果):
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容