3d 逼近平滑多边形网格的最佳曲线类型是什么

3d 逼近平滑多边形网格的最佳曲线类型是什么,3d,polygon,mesh,curve,smoothing,3d,Polygon,Mesh,Curve,Smoothing,我有一个由顶点和三角形组成的3D网格。我知道顶点的位置和平滑法线,以及三角形的平面法线。 我想计算通过2个给定顶点的曲线段,只使用它们的位置和法线 现在,我使用的是a,但它需要4个点来绘制1个曲线段,如图中简单网格的切片视图所示: 为了绘制B和C之间的黄色曲线段,对应于红色边的估计曲率,我必须使用顶点A、B、C和D的位置 其他青色线段使用相同的方法绘制 我希望仅使用线段顶点中的数据计算每个曲线线段。这里只使用B和C的位置和法线作为输入数据来计算黄色曲线段。。。在计算所有线段的曲线时,仍然保持均

我有一个由顶点和三角形组成的3D网格。我知道顶点的位置和平滑法线,以及三角形的平面法线。 我想计算通过2个给定顶点的曲线段,只使用它们的位置和法线

现在,我使用的是a,但它需要4个点来绘制1个曲线段,如图中简单网格的切片视图所示:

为了绘制B和C之间的黄色曲线段,对应于红色边的估计曲率,我必须使用顶点A、B、C和D的位置 其他青色线段使用相同的方法绘制

  • 我希望仅使用线段顶点中的数据计算每个曲线线段。这里只使用B和C的位置和法线作为输入数据来计算黄色曲线段。。。在计算所有线段的曲线时,仍然保持均匀的整体形状

  • 我不确定这条曲线是否是正确的,以表示网格平滑法线所显示的模拟曲率,同时使用简单的3D漫反射着色进行渲染,因此我想知道在这种精确情况下,哪种其他类型的曲线可以更好地匹配。 也许还有一个更适合于仅使用两点的位置和法线作为输入的约束

  • 谢谢!:)


    编辑: 使用Fang建议的Hermite样条得出的结果:
    这对我来说太完美了。再次感谢:)

    如果您只想在两个端点和两个端点法向量之间插值,可以使用三次Hermite曲线。由两个端点和两个端点一阶导数定义。因为顶点没有一阶导数,所以可以从顶点法线推断它们

    给定顶点B和C以及顶点法线Nb和Nc

  • 通过将向量S=1/3*(C-B)投影到顶点B及其顶点法线Nb定义的平面上,在顶点B处构造一阶导数
  • 通过将相同的向量S投影到顶点C及其顶点法线Nc定义的平面上,在顶点C处构造一阶导数
  • 三次Hermite曲线现在完全定义为我们有两个端点(顶点B和C)和两个端点一阶导数。它将插值顶点B和C,其在B和C处的切线将垂直于法线
  • 如果向量(BC)已经垂直于法线Nb和Nc,则三次Hermite曲线将变成一条直线

    以这种方式构造的三次Hermite曲线仅利用顶点B和C之间的线段内的数据。因此,它很可能不会平滑地连接到相邻的曲线线段。如果希望避免此问题,则必须利用来自相邻段的数据。将向量Sb和Sc分别投影到顶点B和C处的平面上,而不是投影向量S=1/3*(C-B),其中

       Sb = m*(A + C - 2*B)/2,
       Sc = m*(B + D - 2*C)/2.
    
    m是一个常数(通常<1.0),用于调整一阶导数的大小


    这样,对于线段BC和线段AB,顶点B的一阶导数将相同,这将确保曲线段BC和曲线段AB平滑连接。

    不清楚每个顶点处的平滑法线将如何影响曲线形状。你想让曲线在顶点的切线垂直于法线吗?在这种情况下,我不在乎切线是否垂直于法线。在我的照片中,它们不是,结果很好。。。但这条曲线并不是由我想关注的数据生成的。我在这里尝试。假设我对任何解决方案都很满意,只要它只涉及2个点的位置和法线作为生成曲线段的起点。如果你坚持顶点B和C之间的曲线段只能从顶点B和C的位置和法线来构造,那么,曲线段很可能不会与其相邻段平滑连接。是的,这也是我的猜测。但我不确定是否真的需要这种连续性,所以我将首先尝试从这个起点得到的任何曲线。非常感谢,我将尝试以下:)