2010-02-23 12 views
1

Je m'excuserai à l'avance si cela est évident; J'ai été incapable de trouver les bons termes à mettre dans Google. Ce que je veux faire est de trouver un volume englobant (AABB est assez bon) pour une gamme paramétrique arbitraire au-dessus d'une surface NURBS équilibrée. Par exemple, (u, v) entre (0.1,0.2) et (0.4,0.6).Recherche du cadre de délimitation (aligné axialement) d'une plage paramétrique d'une surface 3D NURBS

EDIT: Si cela vous aide, cela me conviendrait si la méthode confinait entièrement la région paramétrique dans une zone de délimitation telle que définie dans le paragraphe ci-dessous. Je suis intéressé à subdiviser ces régions.

Je me suis mis à penser à ce après avoir lu ce paragraphe de cet article (http://www.cs.utah.edu/~shirley/papers/raynurbs.pdf), ce qui explique comment créer un arbre de volumes englobants avec une profondeur par rapport au niveau de la surface:

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. 

Merci ! Sean

Répondre

1

Vous aurez besoin de découper une plus petite surface NURBS, qui ne couvre que la plage de paramètres qui vous intéresse. En utilisant votre exemple, que je prends à vous dire êtes dans la région où le paramètre u est compris entre 0,1 et 0,4 . Soit Pu le degré de la spline dans ce paramètre (une spline cubique a Pu = 3). Vous devez effectuer une "insertion de noeud" (Votre terme de recherche Google) pour obtenir des nœuds de degré Pu situés à u = 0.1 et u = 0.4 Faites la même chose sur le paramètre v pour obtenir des nœuds de degré Pv à 0.2 et 0.6. Le processus d'insertion de nœud modifiera (et ajoutera) le tableau des points de contrôle. Il y a un peu de comptabilité en jeu, mais vous pouvez ensuite trouver les points de contrôle qui déterminent la surface dans le patch de paramètres que vous venez d'isoler entre les nœuds insérés. La propriété convexe indique ensuite que la surface est délimitée par ces points de contrôle, vous pouvez donc les utiliser pour déterminer votre volume limite.

La référence NURBS que j'utilise pour des opérations comme celle-ci est: "Le livre NURBS", par Les Piegl et Wayne Tiller.