1

如果这很明显,我会提前道歉;我一直找不到合适的条款来输入 Google。

我想要做的是在修剪的 NURBS 表面上为任意参数范围找到一个边界体积(AABB 已经足够好了)。例如,(u,v) 在 (0.1,0.2) 和 (0.4,0.6) 之间。

编辑:如果有帮助,如果该方法将参数区域完全限制在下面段落中定义的边界区域内,那对我来说很好。我有兴趣细分这些区域。

在阅读了本文 ( http://www.cs.utah.edu/~shirley/papers/raynurbs.pdf )的这一段后,我开始思考这个问题,它解释了如何创建具有深度相关的边界体积树到表面的程度:

The convex hull property of B-spline surfaces guarantees that the surface is contained in the convex hull of its control mesh.
As a result, any convex objects which bound the mesh will bound the underlying surface. We can actually make a stronger
claim; because we closed the knot intervals in the last section [made the multiplicity of the internal knots k − 1], each nonempty
interval [ui; ui+1)  [vj; vj+1) corresponds to a surface patch which is completely contained in the convex hull of
its corresponding mesh points. Thus, if we produce bounding volumes for each of these intervals, we will have completely
enclosed the surface. We form the tree by sorting the volumes according tothe axis direction which has greatest extent across the bounding volumes, splitting the data in half, and repeating the process.

谢谢!肖恩

4

1 回答 1

1

您将需要切出一个较小的 NURBS 曲面,它仅涵盖您感兴趣的参数范围。使用您的示例,我认为您处于 u 参数介于 0.1 和 0.4 之间的区域。令 Pu 为该参数中样条的度数(三次样条具有 Pu = 3)。您需要执行“结插入”(有您的 Google 搜索词)以获得位于 u=0.1 和 u=0.4 的 Pu 度结对 v 参数执行相同的操作以获得 Pv 度为 0.2 和 0.6 的结。节点插入过程将修改(并添加到)控制点数组。这涉及到一些簿记,但是您可以在刚刚在插入的结之间隔离的参数补丁中找到确定表面的 control_points。然后,凸属性表示表面由这些控制点包围,

我喜欢用于此类操作的 NURBS 参考是:Les Piegl 和 Wayne Tiller 的“The NURBS Book”。

于 2010-02-23T17:40:10.183 回答