NURBS란 무엇인가?

NURBS(Non-Uniform Rational B-Splines: 비균일 유리 B스플라인)는 단순한 2D 선, 원, 호, 커브에서 가장 복잡한 3D의 유기적 자유 형상 서피스 또는 솔리드에 이르기까지, 어떠한 형태도 정확하게 표현할 수 있는 수학적 표현 방법입니다. 유연성과 정확성을 갖춘 NURBS 모델은 일러스트레이션, 애니메이션, 제조업 등의 어떤 과정에서도 사용할 수 있습니다.

NURBS 지오메트리가 컴퓨터 지원 모델링에 최적인 이유로는 다음의 5가지를 들 수 있습니다.

  • NURBS 지오메트리를 교환하는 데 몇 가지 업체 표준 방식이 사용됩니다. 고객이 다양한 모델링, 렌더링, 엔지니어링 해석 프로그램들 간에 중요한 지오메트리 모델을 옮길 수 있음을 뜻합니다.
  • NURBS에는 정확하고 잘 알려진 정의가 있습니다. 대부분의 주요 대학에서 NURBS 지오메트리의 수학과 컴퓨터 과학을 가르치고 있습니다. 즉, 커스텀 소프트웨어 응용 프로그램을 만들어야 하는 전문 소프트웨어 공급업체, 엔지니어링 팀, 산업 디자인 회사, 애니메이션 제작업체에서 NURBS 지오메트리로 작업 할 수 있는 숙련된 프로그래머를 찾을 수 있습니다.
  • NURBS는 선, 원, 타원, 구, 원환 등의 일반적인 기하학 개체에서 자동차 차체, 인체와 같은 자유 형상(free-form)의 기하학적 구조까지 정확하게 표현할 수 있습니다.
  • 패싯으로 개체의 근사치를 표현하는 일반적인 방법보다, NURBS로 표현하는 방법이 훨씬 소량의 정보로 1개 분량의 지오메트리를 표현할 수 있습니다.
  • 아래에 설명된 NURBS 계산 규칙은 효율적이고 정확한 방식으로 컴퓨터에 구현될 수 있습니다.

NURBS 지오메트리란?

NURBS 커브와 서피스는 조작이 유사하고, 공통적인 용어를 사용합니다. 커브가 가장 설명하기 쉬우므로, 여기에서는 커브를 예로 들어 자세히 설명하겠습니다. NURBS 커브는 차수, 제어점, 매듭점, 계산 규칙 이렇게 네 가지로 정의됩니다.

차수

차수(degree)는 양의 정수입니다.

이 숫자는 보통 1, 2, 3 또는 5지만 어떤 양의 정수도 될 수 있습니다. NURBS 선과 폴리라인은 일반적으로 차수가 1이고, NURBS 원은 차수 2, 대부분의 자유 형상 (free-form) 커브는 차수 3 또는 5입니다. 때때로, 1차(linear), 2차(quadratic), 3차(cubic), 5차(quintic)라는 용어가 사용되기도 합니다. 1차의 차수는 1, 2차의 차수는 2, 3차의 차수는 3, 5차의 차수는 5입니다.

NURBS 커브의 위수(order)에 대한 참고 자료도 보실 수 있습니다. NURBS 커브의 위수는 (차수 + 1)과 동일한 양의 정수입니다. 결과적으로 차수는 (위수-1)과 같습니다.

NURBS 커브의 형태를 유지하면서 차수를 증가시킬 수 있습니다. 그러나 일반적으로 형태를 변경하지 않고 NURBS 커브의 차수를 감소시킬 수는 없습니다.

제어점

제어점(control point)은 최소한 (차수+1)개인 점의 목록입니다.

NURBS 커브의 형태를 변경하는 가장 간단한 방법 중 하나는 제어점을 움직이는 것입니다.

제어점에는 그와 연관된 가중값(weight)이라는 수치가 있습니다. 일부 예외를 제외하면 가중값은 양의 정수입니다. 커브 제어점이 모두 같은 가중값(일반적으로 1)을 갖고 있을 때 커브를 비유리(non-rational)라고 합니다. 그렇지 않은 경우는 해당 커브를 유리(rational)라고 합니다. NURBS에서 R은 rational(유리)를 뜻하며, 이는 NURBS 커브가 유리일 수 있음을 나타냅니다. 실제로 대부분의 NURBS 커브는 비유리 커브입니다. 몇몇 NURBS 커브, 원, 타원과 같은 경우는 언제나 유리입니다.

매듭점

매듭점(knots)은 숫자가 (차수+N-1)인 목록입니다. 이 때 N은 제어점의 개수입니다. 이 숫자의 목록을 매듭점 벡터(knot vector)라고 하는 경우도 있으나, 이 경우의 벡터는 3차원 공간 안의 방향을 뜻하지 않습니다.

매듭점 숫자의 목록은 몇 가지 기술적인 조건을 만족시켜야 합니다. 이 기술적인 조건을 확실히 만족시키는 표준적인 방식은 모든 숫자가 같거나, 매듭점의 목록에서 아래로 갈수록 숫자가 커지고, 중복된 값의 개수가 차수의 수를 넘지 않게 제한하는 것입니다. 예를 들어, 11개의 제어점이 있고 차수가 3인 NURBS 커브에서 숫자 목록 0,0,0,1,2,2,2,3,7,7,9,9,9는 만족할 만한 매듭점의 목록입니다. 0,0,0,1,2,2,2,2,7,7,9,9,9 목록에는 2가 4개 있고, 4는 차수인 3보다 크기 때문에 받아들일 수 없습니다.

매듭점 값이 중복된 수를 매듭점의 중복도(multiplicity)라고 합니다. 앞서 서술된 만족할 만한 매듭점 목록의 예에서 매듭점 값 0에 중복도 3, 매듭점 값 1은 중복도 1, 매듭점 값 2는 중복도 3, 매듭점 값 3은 중복도 1, 매듭점 값 7은 중복도 2, 매듭점 값 9는 중복도가 3입니다. 매듭점이 차수의 수만큼 중복되어 있으면, 매듭점 값은 완전 중복도 매듭점(full-multiplicity knot)이라고 합니다. 앞의 예에서, 매듭점 값 0, 2, 9는 완전 중복도를 가집니다. 매듭점 값이 한 번만 나타나면, 이를 단순 매듭점(simple knot)이라고 합니다. 위의 예에서 매듭점 값 1과 3은 단순 매듭점입니다.

매듭점 목록이 완전 다중 매듭점으로 시작하여 그 후 단순 매듭점이 계속되고 다시 완전 다중 매듭점으로 끝나고, 또한 이러한 매듭점 값의 증가치가 일정한 경우, 이러한 매듭점을 균일하다고 합니다. 예를 들면, 차수 3으로 7개의 제어점이 있는 NURBS 커브에 0,0,0,1,2,3,4,4,4의 매듭점이 있다고 한다면, 이 경우의 매듭점은 균일합니다. 목록이 0,0,0,1,2,5,6,6,6의 경우는 그 매듭점은 균일하지 않습니다.균일하지 않은 매듭점은 비균일(non uniform)이라고 합니다. NURBS의 N과 U는 non-uniform(비균일)을 말하는 것으로 NURBS 커브의 매듭점은 비균일이 될 수 있는 것을 의미합니다.

매듭점 목록 중간에 중복된 매듭점이 있으면 NURBS 커브가 덜 매끄러워집니다. 심한 경우, 매듭점 목록의 완전 중복도 매듭점은 NURBS 커브의 한 부분이 구부러져 뾰족한 꼬임(kink)가 생길 수 있음을 뜻합니다. 이에 따라, 일부 디자이너는 매듭점을 더하고 삭제한 후에 제어점을 조정하여 커브를 더 부드럽게 만들거나, 더 뽀족하게 꼬임이 있는 형태로 만들기도 합니다. N이 제어점의 숫자일 때, 매듭점의 수는 (N+차수‑1)이므로 매듭점을 추가하면 제어점도 추가되며, 매듭점을 삭제하면 제어점도 삭제됩니다. NURBS 커브 형태를 바꾸지 않고도 매듭점을 추가할 수 있습니다. 일반적으로 매듭점을 삭제하면 커브의 형태가 달라집니다.

매듭점과 제어점

매듭점 하나와 제어점 하나가 하나의 쌍을 이룬다고 일반적으로 잘못 알려져 있습니다. 차수가 1인 NURBS(폴리라인)에만 맞는 말입니다. 차수가 더 높은 NURBS에서는 2 x 차수 매듭점 그룹이 (차수+1) 제어점 그룹에 대응합니다. 예를 들어, 7개의 제어점이 있고, 매듭점 0,0,0,1,2,5,8,8,8이 있는 차수가 3인 NURBS의 경우를 생각해 봅시다. 처음 4개의 제어점은 처음 6개의 매듭점과 그룹이 됩니다. 두 번째부터 다섯 번째 제어점은 매듭점 0,0,1,2,5,8과 함께 그룹이 됩니다. 세 번째 제어점부터 여섯 번째 제어점은 매듭점 0,1,2,5,8,8과 그룹이 됩니다. 마지막 네 제어점은 마지막 여섯 개의 매듭점과 그룹이 됩니다.

NURBS 평가에 오래된 알고리즘을 채용한 모델러는 2개의 여분의 매듭점 값이 필요하며 매듭점 수는 차수값+N+1 이 됩니다. NURBS 지오메트리를 가져오거나, 내보내는 경우 Rhino는 필요에 따라 이 2개의 여분의 매듭점을 추가하거나, 삭제합니다.

계산 규칙

커브 계산 규칙은 숫자를 입력하여 점을 출력하는 수학적 공식입니다.

NURBS 계산 규칙은 차수, 제어점, 그리고 매듭점이 포함된 수식입니다. 이 수식에는 B스플라인 기저 함수(B-spline basis function)도 있습니다. NURBS에서 B와 S는 Basis Spline (기저 스플라인)을 나타냅니다. 계산 규칙에 입력하는 숫자를 매개변수(parameter)라고 합니다. 이 계산 규칙을, 매개변수를 입력하면 점 위치가 출력되는 블랙박스라고 생각해 보세요. 이 블랙박스가 작동되는 방식을 차수, 매듭점, 제어점이 결정합니다.

수학 공식을 읽는 데 익숙하시다면 ikipedia: Non uniform rational b spline 자료를 참조하시기 바랍니다.