Site Tools


NURBS의 의미, 그리고 사용해야 하는 이유?

자세히

Non-Uniform Rational B-Spline (NURBS)

“NURBS”란 무엇인가?

NURBS 는 non-uniform rational B spline (비균일 유리 B 스플라인)의 머리글자입니다. Non uniform rational B splines 은 3D 지오메트리를 표현할 수 있습니다.

3D 지오메트리를 표현하기 위해 NURBS를 사용하는 이유는?

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

  • NURBS 지오메트리를 교환하는 방법으로는 몇몇의 업계 표준이 있습니다. 이것은 사용자의 중요한 기하학 모델을 여러 가지 모델링, 렌더링, 애니메이션, 또한 공학 분석 소프트웨어간에 이동할 수 있으며, 또한 이동이 가능하다는 전제를 두고 작업할 수 있어야 합니다. 이러한 소프트웨어는 사용자의 기하학 정보를 20년 후에라도 사용할 수 있는 방법으로 저장할 수 있습니다.
  • NURBS에는 정확한 정의가 있으며, 그 정의 방법은 많이 알려져 있습니다. NURBS 지오메트리의 수학과 이에 대한 컴퓨터 과학은 대부분의 주요한 대학에서 가르치고 있습니다. 이것은 커스텀 응용 프로그램을 만들 필요가 있는 전문적인 소프트웨어의 판매자, 공학팀, 산업 디자인 사무소, 애니메이션 제작 회사 등은 NURBS 지오메트리에 정통한 프로그래머를 쉽게 발견할 수 있습니다.
  • NURBS는, 선, 원, 타원, 구, 원환 등의 표준 기하학 개체로부터 차체와 인체와 같은 자유 형식 지오메트리까지 정확하게 표현할 수 있습니다.
  • 패싯으로 개체의 근사치를 표현하는 일반적인 방법보다, NURBS로 표현하는 방법이 훨씬 소량의 정보로 1개 분량의 지오메트리를 표현할 수 있습니다.
  • 다음의 NURBS 평가 공식은 컴퓨터에서 효율적이며 정확하게 실행될 수 있습니다.

NURBS 지오메트리는 무엇인가?

이 질문은 많은 방법으로 대답할 수 있습니다. 수학 공식에 익숙하다면, opennurbs 웹사이트에서 Books and papers on NURBS 부분에 소개된 서적과 논문의 링크를 참조하시기 바랍니다.

Rhino는 NURBS를 사용하여 커브와 서피스를 표현합니다. NURBS 커브와 서피스는 조작이 유사하고, 공용의 용어가 사용됩니다. 커브가 가장 설명하기 쉬우므로, 여기에서는 커브를 예로 들어 자세히 설명하겠습니다. Rhino에는 서피스 도구도 있으며, 이것은 다음에 설명하는 커브 도구와 매우 유사합니다.

NURBS 커브는 차수, 제어점, 매듭점, 평가 공식, 이 4가지로 정의됩니다!.

차수(degree)는 양의 정수로 나타냅니다.

이 숫자는 보통 1, 2, 3, 또는 5입니다. Rhino의 선과 폴리라인은 차수 1, Rhino의 원은 차수 2, 그리고 Rhino의 자유 형식 커브의 대부분은 차수 3 또는 5입니다. Rhino는 차수 1에서 32까지의 NURBS를 다룹니다. 차수 1~ 5를 각각 1차(linear), 2차(quadratic), 3차(cubic), 5차(quintic)라고 합니다.

NURBS 커브에 대한 논문 중에는 계수(order)에 대하여 설명하고 있는 것도 있습니다. NURBS 커브의 계수 는 양의 정수로, (차수+1)과 같습니다. 마찬가지로 차수는 (계수-1)입니다.

NURBS 커브의 형태 변화 없이 차수를 올릴 수 있으나, 차수를 내리면 NURBS 커브의 형태 또한 반드시 변합니다. Rhino에는 차수를 1과 32 사이의 범위 내에서 어떤 값으로도 변경할 수 있는 도구가 있습니다.

제어점(control point) 은 적어도 (차수+1)개수의 점의 목록입니다.

NURBS 커브의 지오메트리를 변경하는 가장 간단한 방법 중 하나는 제어점을 움직이는 것입니다. Rhino에서 제어점을 이동하는 방법으로는 여러 가지가 있습니다. NURBS 커브를 자유롭게 조정하려면 마우스로 제어점을 하나씩 끌어 이동합니다. Rhino에는 정확하고 세밀한 조정을 위한 도구가 있습니다.

제어점에는 웨이트(무게:weight)라고 불리는 수치가 붙어 있습니다. 일부 예외를 제외하면 웨이트는 양의 정수입니다. 커브 제어점의 무게가 모두 같은 경우(일반적으로 1), 커브는 비유리(non-rational)로 불립니다. 그렇지 않은 경우에는 유리(rational)라고 합니다. NURBS의 R은 rational(유리)을 뜻하며 NURBS 커브가 유리화 될 가능성이 있음을 뜻합니다. 실제로 대부분의 NURBS 커브는 비유리 커브입니다. 호, 원, 타원과 같은 일부 커브는 언제나 유리 커브입니다.

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

매듭점 숫자의 목록은 몇몇의 기술적인 조건을 만족시켜야 합니다. 이 기술적인 조건을 만족시키는 표준적인 방법은, 매듭점의 목록에서 아래로 내려갈수록 각 숫자가 전의 숫자와 동일하거나 커지도록 할 것, 그리고 중복된 매듭점의 수가 차수의 수를 넘지 않도록 하는 것입니다. 예를 들면 차수 3으로 11 제어점이 있는 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의 숫자가 차수보다 크므로 매듭점의 목록으로 볼 수 없습니다.

매듭점 값이 여러 차례 중복되어 있는 것을 매듭점의 다중도(multiplicity)라고 합니다. 앞의 만족할만한 목록의 예에서는 매듭점 값 0은 다중도가 3, 매듭점 값1은 다중도가 1, 매듭점 값2는 다중도 3, 매듭점 값7은 다중도가 2, 그리고 매듭점 값 9는 다중도가 3입니다. 매듭점이 차수의 수만큼만 중복되어 있는 예에서는 매듭점 값은 완전 다중도 매듭점(a 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의 NU는 non-uniform(비균일)을 말하는 것으로 NURBS 커브의 매듭점은 비균일이 될 수 있는 것을 의미합니다.

매듭점 목록 안의 매듭점 값이 중복된 경우, NURBS 커브는 덜 매끄럽습니다. 극단적인 경우에는 매듭점 목록 안에 완전 다중 매듭점이 있다는 것은 NURBS 커브의 한 부분이 구부러져 뾰족한 꼬임이 생길 수 있다는 것을 의미합니다. Rhino에는 매듭점을 제거하고 추가하는 기능이 있습니다. 디자이너 중에는 이 성질을 이용하여 매듭점을 추가 또는 삭제로 제어점을 조정하여, 커브를 보다 매끄럽게 또는 더욱 날카롭게 솟은 형태로 만드는 사람도 있습니다. N을 제어점의 수라고 하면, 매듭점의 수는 (N+차수-1)이므로, 매듭점을 추가하면 제어점도 추가되며, 매듭점을 삭제하면 제어점도 삭제됩니다. NURBS 커브 형태를 변경하지 않고 매듭점을 추가할 수 있습니다. 일반적으로, 매듭점을 삭제하면 커브의 형태도 변합니다. Rhino에는 사용자가 제어점을 삭제하면 적합한 매듭점을 자동으로 제거하는 고급 매듭점 제거 인터페이스가 있습니다.

일반적으로 잘못 알려진 사실로는 매듭점과 제어점이 일대일의 관계라는 개념입니다. 이것은 오직 차수 1의 NURBS(폴리라인)에만 적용될 때 맞는 말입니다. 그러나 차수가 1 보다 높은 NURBS의 경우, 2 x 차수값의 매듭점과 차수값+1의 제어점이 대응하여 순서대로 그룹화됩니다. 제어점이 7이고, 매듭점이 0,0,0,1,2,5,8,8,8인 차수3의 NURBS의 경우를 예를 들겠습니다. 이 경우 처음의 4개의 제어점이 처음의 매듭점 0,0,1,2,5,8에 대응하여 그룹이 됩니다. 2번부터 5번까지의 제어점은 매듭점 0,1,2,5,8,8에 대응하여 그룹이 됩니다. 3번째부터 6번째의 제어점은 매듭점 0,0,1,2,5,8에 대응하여 그룹화됩니다. 마지막 4개의 제어점은 마지막 6개의 매듭점에 대응하여 그룹이 됩니다.

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

평가 공식은 숫자를 입력하여 점을 출력하는 수학식을 사용합니다.

이 공식은 차수, 제어점, 그리고 매듭점을 사용합니다. 또한 이 식에는 B스플라인 기저 함수(B-spline basis function)도 포함하고 있습니다. NURBS의 BS는 B-spline(B스플라인)을 말합니다. 평가 공식에 입력하는 숫자를 매개 변수라고 합니다. 이 평가 공식을 매개 변수를 입력하면 점 위치가 나오는 하나의 블랙박스라고 생각해 보십시오. 차수, 매듭점, 제어점은 이 블랙 박스의 작동을 결정합니다.

Rhino에는 NURBS 평가 도구가 있어, NURBS 커브를 선택하여 매개 변수값을 입력하고 이에 대응하는 점을 얻을 수 있습니다.

개념적으로 매듭점은 B스플라인 기저 함수를 결정합니다. 매개 변수의 B스플라인 기저 함수의 값은 위와 같은 점을 얻기 위해 어떻게 제어점과 무게가 함께 평균화되는가를 결정합니다. 이러한 평가 공식과 B스플라인 기저 함수에 대한 내용은 많은 교과서와 웹사이트에 상세하게 설명되어 있습니다.

ko/rhino/nurbs.txt · Last modified: 2020/08/14 (external edit)