如何找到任何给定NURBS控制点的表面控制点?

时间:2017-01-01 16:01:44

标签: nurbs

我已经阅读了NURBS"" The Dirty Little Secrets of NURBS" Pilot3d(http://www.pilot3d.com/NurbSecrets.htm)的文章,并对表面定位控制点感兴趣。

它确实解释了每个控件都有一个相应的表面点,但它没有解释它们是如何被找到的以及如何移动表面控制点转换为原始控制点。如果我不得不猜测,当控制点的贡献达到最大值时,你会通过寻找表面上的点来找到表面控制点。不确定将更改转换回原始控制点

1 个答案:

答案 0 :(得分:1)

我只是通过思考来解决这个问题。

如果你考虑一般的NURBS方程:

nurbs equation

让我们说C(u_pi)是与控制点相关的曲面上的点(你如何确定这在技术上是任意的,但似乎最接近控制点的表面点会产生最好的结果)你会喜欢用矢量M移动它。

所以现在你需要找到考虑到这个翻译的新P_i。如果我们采用一般方程并减去除P_i(我们感兴趣的控制点)之外的所有控制点的贡献,那么我们得到以下等式(假设所有权重都是1):

N_i,n * P_i + M = N_i,n *(P_i + P_idelta)

然后我们可以很容易地看到:

M = N_i,n * P_idelta

因此,您可以通过移动曲面上的点而不是控制点来控制NURBS曲面的形状。这种方法的缺点是附近的表面点也会移动但不是以此速率移动。您可以通过在几个控制点之间传播三角区来轻松控制效果的传播。