网格属性

作者: ad19b033a300 | 来源:发表于2017-04-09 21:42 被阅读32次

    网格有哪些属性

    三角网格可以看作是一个图结构,由顶点,边和面(三角片)三个元素组成。网格的常见属性也由这三个元素的属性来表达。


    网格顶点属性

    顶点的几何属性通常可以表示为:

    struct VertexInfo

    {

        Vector3mCoord;

        Vector3mNormal;

    };

    除此之外,它还有一些其它的属性:

    - 邻域:邻顶点,邻边,邻面

    - 流形:如果顶点的邻域是一个单连同区域,则这点为流形结构

    - colorId:对于一个彩色顶点网格,每个顶点有一个颜色值。如果这个网格是多个角度的数据拼接而成,则每个角度的网格片往往存在色差。colorId用于记录这个色差信息:同一个colorId的顶点,可以认为是颜色相容的,没有色差。colorId属性用于去除顶点色差的功能里。


    网格边属性

    边的几何属性一般由对应端点的几何属性来表达,所以它通常由拓扑属性来表达:

    struct EdgeInfo

    {

        int mVertexId[2];

        std::vector<int> mFaceIds;

    };

    除此之外,它还有一些其它的属性:

    - 边界边:如果它的邻接面为1,则为边界上的边

    - 非流形边:如果它的邻接面个数 > 2,则为非流形边


    网格面属性

    面的常见表达方式为:

    struct TriangleInfo

    {

        int mIndex[3];

        Vector3 mNormal;

    };

    其中mIndex为三角片的顶点索引,mNormal为三角片的法线。三角片的属性其实用的并不多,它常见的属性是面点属性。所谓面点,即三角片的三个顶点。需要注意的是,面点和顶点的概念是不同的。下面是一些常见的面点属性:

    - 面点法线:它和顶点法线是不一样的概念。比如特征尖锐的区域,可以设置面点法线为面法线;在光滑区域,设置面点法线为顶点法线。

    - 纹理坐标:纹理坐标是一个典型的面点属性。严格来讲,顶点并没有纹理坐标的概念,只有三角形有纹理坐标的概念。网格UV展开到平面的时候,如果没有割缝产生,那么每个顶点在其相邻三角形内的纹理坐标都是一样的,故可简称为顶点的纹理坐标。如果有割缝产生,割缝处的顶点在不同三角形内的纹理坐标是不一样的。这时,顶点和纹理坐标是一对多的关系。其实,UV展开在UV域生成了一个二维网格,UV域的网格的顶点和原始网格的面点是一一对应的。所以,从这个角度来看SimplifyWithTextureCoords,它其实是对UV域的网格做了保持边界的QuadricSimplify操作。

    - 点像对应:点像对应信息用于纹理贴图,它的含义是三角片的面点在图像中的对应。它的概念和纹理坐标是类似的,都是网格到二维区域的一个映射。点像对应信息在图像域也映射出了一个二维网格。和UV展开的区别在于,UV展开的二维域是唯一的,而点像对应的二维域(图像),有可能有多个(多张图片)。这导致某些三角片的面点可能对应于不同的图像域。对于这类三角片的纹理贴图,一般采用面点颜色插值。

    - 注意:虽然点像对应是一个面点属性,Magic3D里的点像对应采用的却是顶点属性的表达方式,其主要原始是,网格的点像对应信息是从点云的点像对应映射过来的,所以可以认为每个顶点对应于一个像素。

    相关文章

      网友评论

        本文标题:网格属性

        本文链接:https://www.haomeiwen.com/subject/lsrjattx.html