网格顶点法向的计算(基于面平均方法)

您所在的位置:网站首页 法线的法 网格顶点法向的计算(基于面平均方法)

网格顶点法向的计算(基于面平均方法)

2023-11-17 12:43| 来源: 网络整理| 查看: 265

最近做矩阵权有理细分要用到顶点法向量,但是网格上顶点是没有办法直接计算法向的,只能借助于一些离散的方法去计算,在此不得不佩服一下维基。。确实是厉害,我的算法主要是借助于Vertex normal这个词条计算的,有些好东西还确实是得看英文的

在计算机图形的几何形状中,多面体的顶点法线是与顶点相关联的方向向量,用于替代表面的真实几何法线。 通常通过计算顶点有关面的法向取平均值再进行归一化,平均值可以通过相关面面积进行加权,也可以不加权。

由上面的表述就可以看得出有两种不同的计算方式,分别为加权和不加权

下面分别展示加权和不加权的MATLAB代码以及效果,MATLAB论坛上有Tolga Birdal的文章

function [normal,normalf] = compute_normal(vertex,face) % compute_normal - compute the normal of a triangulation % % [normal,normalf] = compute_normal(vertex,face); % % normal(i,:) is the normal at vertex i. % normalf(j,:) is the normal at face j. % % Copyright (c) 2004 Gabriel Peyr [vertex,face] = check_face_vertex(vertex,face); nface = size(face,2); nvert = size(vertex,2); normal = zeros(3, nvert); % unit normals to the faces normalf = crossp( vertex(:,face(2,:))-vertex(:,face(1,:)), ... vertex(:,face(3,:))-vertex(:,face(1,:)) ); d = sqrt( sum(normalf.^2,1) ); %d(d


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3