Dust3D项目实训七 | 基于meshcombiner类的网格粘合分析

该博客详细介绍了CGAL库在曲面网格生成和多边形网格处理中的应用。通过对make_surface_mesh函数和Polygon_mesh_processing模块的解析,展示了如何构建和处理三维网格。此外,还分析了MeshCombiner类,用于合并多个网格,形成完整的曲面模型。关键代码分析部分解释了MeshCombiner::Mesh构造函数和combine函数的工作原理,涉及网格的有效性检查、自相交检测和组合操作。

2021SC@SDUSC

目录

分析概述

模块功能

CGAL分析

cgal库概述

曲面网格生成 [ make_surface_mesh ]

多边形网格处理 [ Polygon_mesh_processing ]

关键代码分析

meshcombiner.h分析

meshcombiner.cpp分析

MeshCombiner::Mesh::Mesh()函数分析

*MeshCombiner::combine()函数分析


分析概述

模块功能

该模块的主要功能为通过各个面和点的信息生成曲面网格,再将不同平面的网格粘合在一起,最终形成可视化曲面网格体

CGAL分析

cgal库概述

CGAL是一个具有强制性依赖项的计算几何算法库。提供计算几何相关的数据结构和算法,例如曲线整理及其应用,网格生成(二维Delaunay网格生成和三维表面和体积网格生成等),几何处理、搜索结构,插值,形状分析,拟合,距离等。

曲面网格生成 [ make_surface_mesh ]

函数make_surface_mesh()是一个曲面网格生成器,它是构建近似于曲面的二维网格的函数。

多边形网格处理 [ Polygon_mesh_processing ]

Polygon_mesh_processing主要实现多边形的网格处理。包括简单对象的基本操作及复杂的几何处理算法。其包含的基本功能有:

  • 网格划分:网格划分算法,包括非三角网格的三角化、光顺的细化、优化、三角网格的各向同性重网格化和平滑算法
  • 协同细化和布尔运算:协同细化三角形网格和用协同细化的闭合三角形网格计算布尔运算的方法
  • 孔填充:可用的孔填充算法,可以结合细化和光顺
  • 谓词:可在已处理的多边形上计算的谓词。网格,其中包括点定位和自交测试
  • 方向:检查或修复polygon soup的方向
  • 组合修复:多边形网格和polygon soups的修复
  • 法向计算:多边形网格的顶点和面的法向计算
  • 切片器:能够计算多边形网格与任意平面的交点的函子(切片器)
  • 连通组件:处理多边形网格的连通组件的方法(提取、标记、移除等)

(参考网址:https://blog.youkuaiyun.com/summer_dew/article/details/116134618)

关键代码分析

meshcombiner.h分析

meshcombiner类定义了在网格粘合中使用到的函数和变量,包括网格类,粘合方式以及粘合网格来源等

class MeshCombiner
{
public:
    enum class Method
    {
        Union,  Diff
    };
    
    enum class Source
    {
        None,First,Second
    };

    class Mesh
    {
    public:
        //构造函数
        Mesh() = default;
        Mesh(const std::vector<QVector3D> &vertices, const std::vector<std::vector<size_t>> &faces, bool disableSelfIntersects=false);
        Mesh(const Mesh &other);
        //析构
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值