如何找到任何给定 NURBS 控制点的曲面控制点?
How to find the surface control point for any given NURBS control point?
我已经通读了 Pilot3d (http://www.pilot3d.com/NurbSecrets.htm) 的 "The Dirty Little Secrets of NURBS" 文章,并且对位于表面的控制点很感兴趣。
它确实解释了每个控件都有一个相应的表面点,但它并没有解释如何找到它们以及移动表面控制点如何转换为原始控制点。如果我不得不猜测,当控制点的贡献达到最大值时,您会通过寻找表面上的点来找到表面控制点。不确定将更改转换回原始控制点
我稍微想了一下就明白了。
如果考虑一般的 NURBS 方程:
假设 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 曲面的形状。这种方法的缺点是附近的表面点也会移动,但速度不快。您可以通过将增量分布到多个控制点来轻松控制效果的分布。
我已经通读了 Pilot3d (http://www.pilot3d.com/NurbSecrets.htm) 的 "The Dirty Little Secrets of NURBS" 文章,并且对位于表面的控制点很感兴趣。
它确实解释了每个控件都有一个相应的表面点,但它并没有解释如何找到它们以及移动表面控制点如何转换为原始控制点。如果我不得不猜测,当控制点的贡献达到最大值时,您会通过寻找表面上的点来找到表面控制点。不确定将更改转换回原始控制点
我稍微想了一下就明白了。
如果考虑一般的 NURBS 方程:
假设 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 曲面的形状。这种方法的缺点是附近的表面点也会移动,但速度不快。您可以通过将增量分布到多个控制点来轻松控制效果的分布。