맨위로가기

비균일 유리 B-스플라인

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

비균일 유리 B-스플라인(NURBS)은 컴퓨터가 등장하기 전 선박 설계에 사용되던 스플라인을 수학적으로 일반화하여 개발된 자유 곡면 표현 방식이다. NURBS는 1950년대에 자동차, 항공기 등의 자유 곡면을 정확하게 표현하기 위해 개발되었으며, 피에르 베지에와 폴 드 카스텔자우가 그 개발에 기여했다. NURBS는 CAD/CAM 시스템 도입과 함께 한국에서도 조선, 자동차 산업을 중심으로 활용되기 시작하여 다양한 산업 분야에서 사용되고 있다.

NURBS는 모델링, 렌더링, 애니메이션, 공학 분석 등 다양한 프로그램에서 활용되며, 기하학적 정보를 효율적으로 저장하고 계산할 수 있다. NURBS 곡선과 곡면은 차수, 컨트롤 포인트, 매듭, 계산 방식으로 제어되며, 컨트롤 포인트의 가중치를 통해 원과 같은 원뿔 곡선을 정확하게 표현할 수 있다는 특징을 갖는다. NURBS는 위치, 접선, 곡률 연속성을 통해 표면의 부드러움을 제어하며, 매듭 추가, 차수 올리기 등의 변형을 통해 객체를 수정할 수 있다. NURBS는 CAD, CAM, CAE, 컴퓨터 그래픽스 소프트웨어 등에서 널리 사용되며, 유기적인 곡면 모델링에는 서브디비전 서피스가 더 적합하기도 하다.

더 읽어볼만한 페이지

  • 스플라인 - 스플라인 보간법
    스플라인 보간법은 주어진 데이터 점들을 부드럽게 연결하는 곡선을 생성하는 방법으로, 원래 기술 도면을 그릴 때 사용된 탄성 자에서 유래되었으며, 수학적으로는 일련의 다항식을 사용하여 곡선을 모델링하고, 3차 스플라인을 포함한 다양한 형태가 존재하며, 컴퓨터 그래픽스 등 다양한 분야에서 활용된다.
  • 스플라인 - B-스플라인 곡선
    B-스플라인 곡선은 제어점을 연결하여 부드러운 곡선을 생성하는 수학적 표현 방식이며, B-스플라인 기저 함수와 제어점의 선형 결합으로 표현되고, 매듭의 배치에 따라 균일, 개방 균일, 비균일 B-스플라인으로 분류되며, CAD, 컴퓨터 그래픽스 등 다양한 분야에서 활용된다.
  • 보간법 - 선형 보간법
    선형 보간법은 두 점 사이의 값을 직선으로 추정하는 방법으로, 다양한 분야에서 활용되지만 비선형 데이터에는 정확도가 낮아 다른 방법으로 대체될 수 있다.
  • 보간법 - 보외법
    보외법은 수치 데이터가 없는 범위의 값을 추정하는 방법으로, 다양한 외삽 방법이 존재하며 데이터 생성 프로세스에 대한 사전 지식에 따라 적용 방법을 선택한다.
  • 컴퓨터 지원 설계 - 빌딩 정보 모델링
    빌딩 정보 모델링(BIM)은 건축물의 전 생애주기 동안 발생하는 정보를 디지털 모델로 통합 관리하는 프로세스이다.
  • 컴퓨터 지원 설계 - 컴퓨터 지원 제조
    컴퓨터 지원 제조(CAM)는 컴퓨터 소프트웨어를 사용하여 제조 공정을 제어하고 자동화하는 기술로, 설계 데이터를 기반으로 공작 기계 작동을 위한 NC 데이터를 생성하며 다양한 가공 방식과 차원을 지원한다.
비균일 유리 B-스플라인

2. 역사

NURBS는 1950년대에 프랑스르노 엔지니어 피에르 베지에시트로엥의 폴 드 카스텔자우에 의해 독자적으로 개발되었다.[4] 베지에 곡선은 그의 이름을 따서 명명되었으며, 드 카스텔자우의 이름은 관련 알고리즘에만 연관되어 있다. 1960년대에 NURBS는 베지에 곡선의 일반화된 모델임이 밝혀졌다.

초기에는 NURBS는 자동차 제조업체의 프로프라이어터리 CAD 소프트웨어에만 사용되었으나, 이후 표준 컴퓨터 그래픽 소프트웨어에도 채택되었다. 1989년에 실리콘 그래픽스 워크스테이션에서 실시간 인터랙티브 NURBS 렌더링이 가능해졌으며, 1993년에는 베를린 공과대학교와 협력하는 작은 스타트업 기업인 CAS 베를린에서 PC용 NURBS 모델러인 NöRBS를 개발했다.

3. NURBS 모델링의 장점

NURBS 기하체는 다양한 산업 분야에서 표준으로 사용되며, 모델링, 렌더링, 애니메이션, 공학 분석 등 다양한 프로그램에서 활용 가능하다. NURBS는 20년 후에도 사용 가능한 방식으로 기하학적 정보를 저장한다.

NURBS는 수학 및 컴퓨터 과학에서 중요하게 다뤄지며, 많은 대학에서 교육된다. 소프트웨어 생산자, 엔지니어, 산업 디자인 회사, 애니메이터 등이 필요에 따라 프로그램을 수정하여 사용하기 쉽다.

NURBS는 선분, 원, 타원, 구부터 자동차나 사람의 몸과 같은 자유 곡면의 기하체를 매우 정확하게 묘사할 수 있으며, 다른 방식보다 정보의 양이 훨씬 적다.

NURBS의 계산 방식은 컴퓨터에서 효과적이고 정확하게 실행될 수 있다.

4. NURBS 기하체

NURBS 곡선과 NURBS 곡면은 차수(degree), 컨트롤 포인트(control points), 매듭(knots), 그리고 계산 방식(evaluation rule)에 의해 제어된다.[6]

NURBS 곡선은 차수, 가중 제어점 집합, 매듭 벡터로 정의된다. NURBS 곡선 및 표면은 B-스플라인과 베지어 곡선 및 표면의 일반화이며, 주요 차이점은 제어점의 가중치이다. 이로 인해 NURBS 곡선은 '유리(rational)'해진다. 2차원 제어점 그리드를 사용하면 평면 패치 및 구면의 단면을 포함한 NURBS 표면을 만들 수 있다. NURBS 표면은 두 개의 변수(일반적으로 's'와 't' 또는 'u'와 'v'라고 함)로 매개변수화된다.

NURBS 곡선 및 표면은 다음과 같은 이유로 유용하다.


  • 주어진 차수의 NURBS 집합은 아핀 변환에 대해 불변하다.[9] 회전변환과 같은 연산은 제어점에 적용하여 NURBS 곡선 및 표면에 적용할 수 있다.
  • 원뿔 곡선과 같은 표준 분석적 형태와 자유 형태 모두에 대한 하나의 공통 수학적 형식을 제공한다.
  • 다양한 형태를 설계할 수 있는 유연성을 제공한다.
  • 형태를 저장할 때 메모리 소비를 줄인다(더 간단한 방법과 비교).
  • 수치적으로 안정적이고 정확한 알고리즘으로 상당히 빠르게 평가할 수 있다.


NURBS는 주로 1차원(곡선)으로 논의되며, 2차원(표면) 또는 그 이상의 차원으로 일반화할 수 있다.

'''NURBS 곡선'''은 ''차수'', 가중치가 지정된 여러 개의 ''제어점'', 그리고 ''노트 벡터''로 구성된다.[13] NURBS는 B-스플라인과 베지어 곡선의 일반화된 표현이지만, 가장 큰 차이점은 제어점이 가중치를 갖는다는 것이다. 가중치를 갖는다는 것을 '유리(rational)'라고 하며, NURBS는 B-스플라인의 유리인 특별한 경우이다.

베지어 곡선 또는 NURBS 곡선에 포함된 파라미터(매개변수)를 다양한 값으로 변화시키면 2차원 또는 3차원 직교 좌표계에서 곡선을 나타낼 수 있다. 마찬가지로 베지어 또는 NURBS 곡면에 포함된 파라미터(매개변수)를 다양한 값으로 변화시키면 직교 좌표계에서 곡면을 나타낼 수 있다.

4. 1. 차수 (Degree)

NURBS 곡선의 차수는 양의 정수이다. 일반적으로 1차, 2차, 3차, 5차가 사용된다. NURBS로 그려진 원은 2차이며, 대부분의 자유 형상 곡면은 3차 또는 5차이다. 곡선의 차수를 변경하면 선분의 형태가 변한다.[6]

250px


NURBS 곡선의 *차수*는 곡선상의 임의의 주어진 점에 영향을 미치는 인접 제어점의 수를 정의한다. 곡선은 수학적으로 곡선의 차수보다 1 작은 차수의 다항식으로 표현된다. 따라서 2차 곡선(선형 다항식으로 표현됨)은 선형 곡선이라고 하고, 3차 곡선은 2차 곡선이라고 하며, 4차 곡선은 3차 곡선이라고 한다. 제어점의 수는 곡선의 차수보다 크거나 같아야 한다.

실제로 3차 곡선이 가장 일반적으로 사용된다. 5차 및 6차 곡선은 특히 연속적인 고차 도함수를 얻는 데 유용할 수 있지만, 더 높은 차수의 곡선은 내부 수치 문제로 이어지고 지나치게 많은 계산 시간을 요구하는 경향이 있기 때문에 실질적으로는 거의 사용되지 않는다.

NURBS 곡선의 *계수(order)*는 곡선상의 임의의 점에 영향을 미치는 제어점의 수이다. *차수(degree)*는 곡선의 항의 수이다. 계수는 차수 + 1이며, 곡선은 차수(즉, 계수 - 1)개의 항을 가진 다항식으로 나타낸다. 계수 2인 NURBS 곡선의 차수는 1이며, y=ax+b와 같은 직선이다. 차수 2인 NURBS 곡선의 계수는 3이 되며, 두 개의 항으로 구성된 *선형* 다항식으로 표현된다. 따라서 이차 곡선이라고 불린다. 마찬가지로 계수 4의 경우 차수는 3이며, 삼차 함수를 나타낸다. 제어점의 수는 계수 이상이어야 한다. 대부분의 CAD에서는 그 이하의 제어점으로 곡선 그리기를 완료할 수 없거나, 그렇지 않으면 취할 수 있는 최고 계수로 대체된다.

정의상 계수 5나 계수 7도 문제없지만, 실제 CAD에서는 2, 3, 4, 6, 8(각각 차수가 1, 2, 3, 5, 7), 특히 대부분의 용도를 소화할 수 있는 계수 4=차수 3의 곡선이 많이 사용된다. 높은 계수의 것은 더 매끄러워지지만, 너무 높은 계수는 내부적으로 수치적 문제를 일으키기 쉽고, 게다가 계산이 무의미하게 느려지기 때문에 실용상 의미가 없다.

4. 2. 컨트롤 포인트 (Control Points)

NURBS 곡선은 곡선의 차수에 1을 더한 수 이상의 (degree +1) ‘컨트롤 포인트’를 가진다. NURBS 곡선의 형태를 바꿀 수 있는 가장 쉬운 방법은 바로 이 컨트롤 포인트들을 움직이는 것이다. 컨트롤 포인트들은 ‘무게(weight)’와 관련되어 있다. 몇 가지 예외를 제외하고, 이 컨트롤 포인트들의 무게는 양수이다. 한 곡선의 모든 ‘컨트롤 포인트’들이 같은 무게를 가지고 있을 때 (보통 1), 이 곡선을 비유리(non-rational)라고 한다. NURBS에서 R은 이 ‘유리(rational)’을 의미한다. 실생활에서 대부분의 경우 NURBS 곡선은 유리하지 않다. 타원은 항상 ‘유리(rational)’한 곡선의 예이다.[6]

제어점은 곡선의 모양을 결정한다.[10] 일반적으로 곡선의 각 점은 여러 제어점의 가중치 합을 구하여 계산된다. 각 점의 가중치는 지배 매개변수에 따라 달라진다. 차수 d인 곡선의 경우, 모든 제어점의 가중치는 매개변수 공간의 d+1개 구간에서만 0이 아니다. 이러한 구간 내에서 가중치는 d차 다항식 함수(''기저 함수'')에 따라 변경된다. 구간 경계에서 기저 함수는 부드럽게 0으로 이동하며, 부드러움은 다항식의 차수에 의해 결정된다.

더 많은 제어점을 추가하면 주어진 곡선에 대한 더 나은 근사가 가능하지만, 특정 종류의 곡선만 유한한 수의 제어점으로 정확하게 표현할 수 있다. NURBS 곡선은 또한 각 제어점에 대한 스칼라 ‘가중치’를 특징으로 한다. 이를 통해 제어점 수를 과도하게 늘리지 않고 곡선의 모양을 더 잘 제어할 수 있다. 특히, 원과 타원과 같은 원뿔 곡선을 정확하게 표현할 수 있는 곡선 집합에 추가한다. NURBS에서 "유리"라는 용어는 이러한 가중치를 나타낸다.

제어점은 일반적으로 곡선 위의 점이 아니라 곡선의 모양을 결정하기 위해 사용된다. 곡선 위의 어떤 점의 위치는, 그 전후에 배치된 몇 개의 제어점 위치의 가중 선형 합으로 표현된다. 제어점이 곡선 위의 각 점에 주는 영향은, 그 점과 제어점 사이의 거리에 따라 정의되며, 일반적으로 거리가 짧을수록 영향이 커진다.

4. 3. 매듭 (Knots)

매듭(knot)은 곡선의 차수에 컨트롤 포인트의 개수를 더하고, 거기서 다시 1을 뺀 수들의 목록이다. 이러한 수의 집합을 매듭 벡터(knot vector)라고도 부른다.[6] 매듭 벡터 속 숫자들은 뒤에 나올수록 그 값이 같거나 커져야 한다. 또한, 같은 값이 반복될 경우 그 횟수는 곡선의 차수보다 클 수 없다. 예를 들어 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가 네 번 반복되므로 매듭이 될 수 없다.

매듭 내에서 특정 숫자가 반복되는 횟수를 '매듭 반복횟수(knot’s multiplicity)'라고 한다.[6] 위의 예시에서 매듭값 0은 반복횟수가 3, 1은 1, 2는 3, 3은 1, 7은 2, 9는 3이다. 반복횟수가 차수와 같으면 이 매듭을 '최대반복매듭(full-multiplicity knot)'이라고 한다. 즉, 앞선 예시에서 최대반복매듭은 0, 2, 9이다. 매듭 값이 한 번만 나타나면 '단순 매듭(simple knot)'이라고 부른다. 위 예시에서는 1과 3이 단순 매듭이다.

매듭 값이 중간에서 반복되면, NURBS 곡선이 덜 부드럽다는 것을 의미한다.[6] NURBS 커브에 매듭을 추가해도 그 모양은 변하지 않지만, 매듭을 제거하면 일반적으로 커브의 모양이 변하게 된다.

4. 4. 매듭과 컨트롤 포인트의 관계

흔히 하나의 매듭과 하나의 컨트롤 포인트가 쌍으로 묶여있다고 오해한다. 이것은 1차 NURBS 커브(폴리라인)의 경우에만 성립한다. 하지만 더 높은 차수의 NURBS 커브의 경우 차수에 2를 곱한 수의 매듭이 차수에 1을 더한 수 만큼의 컨트롤 포인트와 상응하게 된다.[6] 예를 들어 7개의 컨트롤 포인트를 가진 3차 NURBS 커브가 0,0,0,1,2,5,8,8,8이라는 매듭을 가지고 있다고 하자. 이 경우 처음 네 개의 컨트롤 포인트들은 처음 여섯 개의 매듭들과 하나의 그룹으로 묶여있다. 두 번째에서 다섯 번째 컨트롤 포인트의 경우 이것은 매듭 0,0,1,2,5,8과 묶여 있으며 세 번째에서 여섯 번째 컨트롤 포인트의 경우 0,1,2,5,8,8이라는 매듭과 묶여 있다. 마지막 네 개의 컨트롤 포인트는 뒤에서 여섯 개의 매듭들과 묶여 있다.

4. 5. 계산 방식 (Evaluation Rule)

곡선을 계산하는 방식은 수를 받아 점을 부여하는 수학적 공식이다. 이는 차수, 컨트롤 포인트, 매듭에 관한 공식으로 B-스플라인 기반 함수가 있다. NURBS의 B와 S는 basis spline을 의미한다. 이 계산 방식에서 사용되는 수를 '매개변수'라고 한다. 차수, 매듭, 컨트롤 포인트는 매개변수 상자가 작동하는 방식을 의미한다.[6]

NURBS 곡선은 차수, 가중치가 지정된 제어점 집합, 노트 벡터로 구성된다.[13] NURBS는 B-스플라인과 베지어 곡선의 일반화된 표현이지만, 가장 큰 차이점은 제어점이 가중치를 갖는다는 것이다. 가중치를 갖는다는 것을 '유리(rational)'라고 하며, NURBS는 B-스플라인의 유리인 특별한 경우이다.

베지어 또는 NURBS 곡선에 포함된 파라미터(매개변수)를 다양한 값으로 변화시키면 2차원 또는 3차원 직교 좌표계에서 곡선을 나타낼 수 있다. 마찬가지로 베지어 또는 NURBS 곡면에 포함된 파라미터(매개변수)를 다양한 값으로 변화시키면 직교 좌표계에서 곡면을 나타낼 수 있다.

5. 곡선・곡면의 연속성

NURBS는 여러 개의 NURBS 곡면("패치")을 이어 붙여 모델을 만들 때, 기하학적 연속성을 확보하는 것이 중요하다. 예를 들어 모터 요트의 선체는 한 장의 NURBS 곡면으로 표현하기 어렵기 때문에, 여러 개의 패치를 이어 붙여 매끄러운 표면을 만든다. 이때 꿰맨 자국이 남지 않도록 기하학적 연속성을 확보해야 한다.

NURBS는 서로 다른 수준의 기하학적 연속성을 생성하고 설정하는 기능을 제공한다. 이러한 기능은 고급 모델링 도구에서 활용된다. 기하학적 연속성은 주로 결과 표면의 모양을 나타내지만, 매개변수 연속성과도 관련이 있다. 주어진 차수의 매개변수 연속성은 해당 차수의 기하학적 연속성을 의미한다. 1차 및 2차 매개변수 연속성(C0 및 C¹)은 위치 연속성 및 접선 연속성(G0 및 G¹)과 실용적인 목적에서 동일하다. 그러나 3차 매개변수 연속성(C²)은 매개변수화 또한 연속적이라는 점에서 곡률 연속성과 다르다. 실제로 균일 B-스플라인을 사용하면 C² 연속성을 달성하기가 더 쉽다.

C''n'' 연속성은 인접 곡선/표면의 ''n''번째 도함수(d^n C(u)/du^n)가 접점에서 동일해야 함을 요구한다.[5] 곡선 및 표면의 (부분) 도함수는 방향과 크기를 가진 벡터이며, 이 두 가지가 모두 같아야 한다.

5. 1. 위치 연속성 (Positional Continuity, G0)

두 곡선이나 곡면이 해당 부분에서 "접속"되어 있음을 보장한다. 접속되어 있을 뿐이므로, 뾰족한 코너나 모서리가 생길 가능성이 있다.[5] 이러한 접속에서는 하이라이트가 연결되어 있지 않아 끊어진다. 또한 제조 과정에서 문제를 일으킬 수 있다.

5. 2. 접선 연속성 (Tangential Continuity, G1)

두 곡선 또는 표면의 끝 벡터가 평행하고 같은 방향을 가리키도록 요구하여 날카로운 모서리를 배제한다. 접선 연속 가장자리에 떨어지는 하이라이트는 항상 연속적이므로 자연스러워 보이기 때문에 이 수준의 연속성은 종종 충분할 수 있다.[5] 일반적인 공업 제품에서 충분한 매끄러움이며, 클래스 B 표면(Class-B Surface)이라고 부르기도 한다.

5. 3. 곡률 연속성 (Curvature Continuity, G2)

곡률 연속성(G²)은 끝 벡터들이 추가적으로 동일한 길이와 길이 변화율을 가지도록 요구한다. 곡률 연속 가장자리에 떨어지는 하이라이트는 어떠한 변화도 보이지 않으므로, 두 표면이 하나처럼 보이게 된다. 이는 시각적으로 "완벽하게 매끄러움"으로 인식될 수 있다.[5] 이 수준의 연속성은 하나의 연속적인 표면을 구성하는 많은 이중 삼차 패치가 필요한 모델을 만드는 데 매우 유용하다.

하이라이트와 반사는 NURBS 표면이 적어도 G² 연속성을 가질 때 완벽한 매끄러움을 나타낼 수 있는데, 이는 실제로 달성하기 쉽지 않다. 표면 평가 방법 중 하나로, 흰색 줄무늬가 반사되는 표면의 광선 추적 또는 반사 매핑 이미지는 표면 또는 표면 집합에서 아주 작은 편차까지도 보여준다. 이 방법은 자동차 프로토타입 제작에서 표면 품질 검사를 위해 네온 조명 천장의 반사 품질을 확인하는 데서 유래되었으며, "얼룩말 분석"이라고도 불린다.

6. 기술적 정의

NURBS 곡선은 차수, 가중치가 지정된 여러 개의 제어점 세트, 그리고 노트 벡터로 구성된다.[6] NURBS는 B-스플라인과 베지에 곡선의 일반화된 표현이며, 제어점이 가중치를 갖는다는 점이 특징이다. 이는 NURBS 곡선이 '유리(rational)' B-스플라인임을 의미한다.[13]

NURBS는 다음과 같은 장점을 가진다:


  • 아핀 변환에 대해 불변이다.[9] 따라서 회전, 이동 등의 변환을 제어점에 적용하여 NURBS 곡선 및 표면에 적용할 수 있다.[14]
  • 원, 타원 등의 표준적인 형태와 자유 형태 모두를 표현할 수 있다.
  • 다양한 형태를 설계할 수 있는 유연성을 제공한다.
  • 폴리곤 메쉬에 비해 적은 메모리로 형상을 표현할 수 있다.
  • 수치적으로 안정하고 정확한 알고리즘으로 빠르게 형상을 평가할 수 있다.


제어점은 곡선의 모양을 결정하는 점들로,[13] 곡선 위의 점은 주변 제어점들의 가중 선형 합으로 표현된다. 제어점이 곡선에 미치는 영향은 거리에 따라 달라지며, 일반적으로 거리가 가까울수록 영향이 커진다. 차수가 1인 NURBS 곡선은 삼각형 함수(텐트 함수) 형태의 기저 함수를 가지며, 이 경우 곡선의 한 구간은 두 개의 제어점의 영향을 받는다.

NURBS 곡선에서 각 제어점에는 가중치(스칼라 값)가 설정되어 있어, 제어점의 수를 늘리지 않고도 더 자유로운 곡선 표현이 가능하다.[13] 가중치가 비균일(non-uniform)하기 때문에 NURBS는 '비균일 유리 B-스플라인(Non-Uniform Rational B-Spline)'이라고 불린다.

NURBS 곡선의 ''계수(order)''는 곡선 위의 한 점에 영향을 주는 제어점의 수이다. ''차수(degree)''는 곡선의 항의 수이며, 계수 = 차수 + 1의 관계를 가진다. 예를 들어, 계수가 4인 NURBS 곡선은 차수가 3인 삼차 함수를 나타낸다.

6. 1. 기저 함수 (Basis Function)

NURBS의 기저 함수는 B-스플라인의 기저 함수와 동일한 것을 사용한다(NURBS는 B-스플라인의 일종이다). 일반적으로 N_{i,n}(u)로 표시된다. 여기서 ii번째 제어점에 대응하며, n은 기저 함수의 차수이다.[15] 매개변수의 의존성(u)은 종종 문제가 되지 않으므로 N_{i,n}으로 표시되는 경우가 많다.

차수 n=0의 함수 N_{i,0}상수 함수가 된다. 대응하는 노드 범위 내에서는 1이고, 그 외의 노드에서는 0이 된다. 마찬가지로 N_{i,n}N_{i,n-1}N_{i+1,n-1}의 선형 근사이다.

6. 2. NURBS 곡선의 일반식

이전 단락의 기저 함수 N_{i,n}의 정의를 사용하면, NURBS 곡선은 다음과 같은 형태를 갖는다.[11]

:C(u) = \sum_{i=1}^{k} {\frac

{N_{i,n}(u)w_i}

{\sum_{j=1}^k N_{j,n}(u)w_j}}

\mathbf{P}_i = \frac

{\sum_{i=1}^k {N_{i,n}(u)w_i \mathbf{P}_i}}

{\sum_{i=1}^k {N_{i,n}(u)w_i}}



여기서, k는 제어점 \mathbf{P}_i의 수이며, w_i는 해당 가중치이다. 분모는 모든 가중치가 1일 때 1로 평가되는 정규화 인자이다. 이는 기저 함수의 분할 속성에서 확인할 수 있다. 이것은 다음과 같이 쓰는 것이 일반적이다.

:C(u) = \sum_{i=1}^k R_{i,n}(u)\mathbf{P}_i

여기서 함수

:R_{i,n}(u) = {N_{i,n}(u)w_i \over \sum_{j=1}^k N_{j,n}(u)w_j}

는 ''유리 기저 함수''로 알려져 있다.[16]

6. 3. NURBS 곡면의 일반식

NURBS 곡면은 두 NURBS 곡선의 텐서 곱으로 표현되며, 두 개의 독립적인 매개변수 uv(각각 인덱스 ij 사용)를 사용한다.[11]

:S(u,v) = \sum_{i=1}^k \sum_{j=1}^l R_{i,j}(u,v) \mathbf{P}_{i,j}

이때, 유리 기저 함수는 다음과 같다.[17]

:R_{i,j}(u,v) = \frac {N_{i,n}(u) N_{j,m}(v) w_{i,j}} {\sum_{p=1}^k \sum_{q=1}^l N_{p,n}(u) N_{q,m}(v) w_{p,q}}

7. NURBS 객체의 변형

모터 요트 디자인에 사용된 NURBS 곡면


NURBS 객체에는 다양한 변형을 적용할 수 있다. 예를 들어, 특정 차수와 N개의 제어점을 사용하여 어떤 곡선을 정의하면, 동일한 차수와 N+1개의 제어점을 사용하여 동일한 곡선을 표현할 수 있다. 이 과정에서 여러 제어점의 위치가 변경되고 매듭 벡터에 매듭이 삽입된다.[18][19]

이러한 조작은 대화형 디자인 과정에서 광범위하게 사용된다. 제어점을 추가할 때 곡선의 모양은 동일하게 유지되어야 하며, 이는 추가 조정을 위한 시작점을 형성한다.

7. 1. 노트 추가 (Knot Insertion)



NURBS 객체에는 여러 변환을 적용할 수 있다. 예를 들어, 특정 차수와 N개의 제어점을 사용하여 어떤 곡선을 정의하면, 동일한 차수와 N+1개의 제어점을 사용하여 동일한 곡선을 표현할 수 있다. 이 과정에서 여러 제어점의 위치가 변경되고 매듭 벡터에 매듭이 삽입된다.[18][19]

이러한 조작은 대화형 디자인 과정에서 광범위하게 사용된다. 제어점을 추가할 때 곡선의 모양은 동일하게 유지되어야 하며, 이는 추가 조정을 위한 시작점을 형성한다.

'''노트 추가'''는 말 그대로 노트 벡터에 노트를 추가하는 변형이다. 곡선의 차수가 d일 때, d-1개의 제어점이 새로운 d개의 제어점으로 대체된다. 노트 추가는 곡선 자체의 모양은 변경하지 않지만, 제어점은 이동한다. 노트는 여러 번 추가할 수 있다.

7. 2. 차수 올리기 (Degree Elevation)

NURBS 객체에는 여러 변환을 적용할 수 있다. 예를 들어, 특정 차수와 N개의 제어점을 사용하여 어떤 곡선을 정의하면, 동일한 차수와 N+1개의 제어점을 사용하여 동일한 곡선을 표현할 수 있다. 이 과정에서 여러 제어점의 위치가 변경되고 매듭 벡터에 매듭이 삽입된다.[18][19]

이러한 조작은 대화형 디자인 중에 광범위하게 사용된다. 제어점을 추가할 때 곡선의 모양은 동일하게 유지되어야 하며, 추가 조정을 위한 시작점을 형성한다.

특정 차수의 NURBS 곡선은 항상 더 높은 차수의 NURBS 곡선으로 표현될 수 있다. 이는 별도의 NURBS 곡선을 결합할 때, 예를 들어 NURBS 표면을 만들거나 인접한 곡선을 통합할 때 자주 사용된다. 이 과정에서 서로 다른 곡선은 일반적으로 곡선 집합의 최대 차수인 동일한 차수로 가져와야 한다. 이 과정을 '''차수 올리기'''라고 한다.

7. 3. 곡률 (Curvature)

미분 기하학에서 가장 중요한 속성은 곡률이다. 곡률은 1차 및 2차 도함수 사이의 관계를 설명하므로 곡선의 가장자리나 코너 등 국부적인 모습을 나타내는 데 가장 적합하다. 또한 곡선의 형상을 정확하게 파악하는 데에도 유용하다. 도함수를 결정한 후에는 다음 식으로 곡률을 계산할 수 있다.

:\kappa=\frac

{|r'(t)|^3}

또는 2차 도함수에서 아크 길이로 근사하여 다음 식으로도 계산할 수 있다.

:\kappa=|r''(s_o)|

이처럼 곡률을 직접 계산할 수 있다는 것은 폴리곤으로 표현하는 것에 비해 NURBS와 같은 매개변수 곡선이 가지는 큰 장점이다.

8. 활용

NURBS는 CAD, CAM, CAE에서 일반적으로 사용되며, IGES, STEP, ACIS, PHIGS 등 여러 국제 표준에 채택되었다. 마야나 시네마 4D 등 컴퓨터 그래픽 소프트웨어 및 애니메이션 소프트웨어 패키지에도 채택되는 경우가 있다.

T-스플라인은 NURBS의 수학적인 정확성과 서브디비전 서피스의 부드러운 모양이라는 강점을 함께 가진 새로운 스플라인이다. T-스플라인은 NURBS의 2분의 1의 제어점 수로 부드러운 모양을 표현할 수 있다.

참조

[1] 웹사이트 Why KeyShot became the most popular product rendering software https://www.willgibb[...] 2022-10-03
[2] 웹사이트 NURB Curves: A Guide for the Uninitiated http://www.mactech.c[...] 2014-09-26
[3] 간행물 NURB Curves: A Guide for the Uninitiated https://vintageapple[...]
[4] 간행물 Spline Functions and the Problem of Graduation National Academy of Sciences 1964-08-19
[5] 서적 Computer Graphics: Principles and Practice Addison-Wesley 1996
[6] 서적 Bio-Inspired Self-Organizing Robotic Systems https://www.springer[...] 2014-01-06
[7] 웹사이트 Rational B-splines https://www.cl.cam.a[...]
[8] 웹사이트 NURBS: Definition https://www.cs.mtu.e[...]
[9] 문서 An Introduction to NURBS with Historical Perspective
[10] 서적 The Nature of Mathematical Modeling Cambridge University Press
[11] 서적 The NURBS Book https://archive.org/[...] Springer 1997
[12] 간행물 Modifying the shape of rational B-splines. Part 1: curves
[13] 서적 Bio-Inspired Self-Organizing Robotic Systems Springer 2014-01-06
[14] 서적 An Introduction to NURBS with Historical Perspective 2001
[15] 문서 The NURBS Book
[16] 문서 The NURBS Book
[17] 문서 The NURBS Book
[18] 문서 The NURBS Book
[19] 간행물 Modifying the shape of rational B-splines. Part 1: curves 1989-10



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com