위치로그 : 태그 : 방명록 : 관리 : 새글

3. 3D 기초상식: NURBS에 관해

Category : 과학,CG,상식 | 2007. 3. 17. 12:19



이전글 참조
1. 3D 기초상식: POLYGON에 관해
2. 3D 기초상식: SPLINE에 관해
 


이전 포스팅에서 어려운 수학공식과 함수 그리고 SPLINE 종류와 특징에 대해 알아보았습니다. 이는 NURBS가 왜 나올 수 밖에 없었으며 어떤 특징을 가지는지 알아보기 위해 한번은 다뤄야 할 문제였지요. 그런데 너무 어려운 전문적 지식이 나올 수 밖에 없다는 단점도 존재하는군요 ^-^
그래서 POLYGON과 함께 GEOMETRY를 양분하고 있는 NURBS에 관해서 다시 한번 아주 간략히 정리하자면 그 동안 컴퓨터상에서 곡률 표현을 하기 위해 여러 방식이 연구되었고 각 SPLINE 방식마다 나름데로 장단점을 가지고 있었는데 NURBS는 그 어떤 곡선 표현 방식을 다 포함하고 있을 뿐 아니라 곡률표현에 있어서 자유도가 매우 높아 미세한 곡률조정및 불규칙한 곡선표현도 무리없이 할 수 있으므로 그 어떤 SPLINE보다 CG구현에 있어서 각광을 받고 선호되고 있다로 정리되겠군요.(그리고 아주 편리하기 까지 합니다.) 이번 포스팅에서는 NURBS 모델링에 관한 특징과 장단점에 관해 서술하도록 하겠습니다.


참고서적은 각종 3D 잡지(GRAPHICS LIVE * 3D ARTISAN)와 외국서적을 참조했으며 특히 GRAPHICS LIVE 2001년 8월호를 참조했음을 밝힙니다.
 
 
 

 


1. NURBS 모델링의 특징

모델링 프로세스가 결국 면(SURFACE)을 만들어서 그 면들이 모여서 어떤 오브젝트를 만드는 과정인데, NURBS 모델링도 결국 NURBS 선을 이용해서 NURBS 면을 만들어가는 방식입니다. 단 이전의 전통적인 모델링 방식인 POLYGON 모델링과 가장 큰 차이점이 있다면 주로 POLYGON 모델링이 기존에 존재하는 POLYGON 면을 돌출시키고 합치고 자르고 해서 모델링을 진척시켜나가는 방식이라면 NURBS 모델링은 기존 사물의 흐름을 잘 관찰해서 거기서 기본 선을 뽑아낸 다음 NURBS 라인을 가지고 모델링을 진행시켜 나간다는 것입니다. 다음 그림을 보면 POLYGON 모델링과 NURBS 모델링의 차이점을 잘 알 수 있습니다.
 

 

 

(그림1. 보통 폴리곤을 이용해서 자동차를 만드는 방법. 이렇게 기존의 PLANE 면을 이용해서 끌고 당기고 위치조정해서 면을 만들어 나감으로 해서 자동차를 만든다. 나중에 곡면은 MESH SMOOTH명령을 줘서 부드럽게 만든다. 이것이 보통의 폴리곤 모델링 방식이다.)
 

 

 

 

 

 

 

(그림2. 그에 비해 NURBS를 이용한 모델링 방식은 보통 이렇게 면을 이루는 NURBS 라인을 그린다음 LOFT시켜서 면을 만들어 나간다. 이 LOFT명령은 선을 선택한후 클릭하면 바로 면이 만들어지기 때문에 매우 편리하며 NURRB자체가 완전 곡선이기 때문에 곡면이 바로 형성된다. 따로 곡면을 만들기 위해 MESH SMOOTH같은 명령을 안줘도 되므로 매우 편리하고 정확하다.)

 

 

 


물론 폴리곤에서도 NURBS가 아닌 기존의 SPLINE과 BEZIER CURVE를 이용해 면을 만들어서 SURFACE 모델링을 할 수 있지만 필요 이상으로 많은 면이 생성 된다던가 기존의 POLYGON 모델링에 비해 복잡한 과정 때문에 별로 쓰이지 않고 있고 (저는 이 방법과 기존의 폴리곤 모델링 방법을 병용해서 많이 쓰고 있습니다.) 그러기에 이 방식보다는 주로 기존의 POLYGON MODELING을 쓴다는 것이고 NURBS 모델링도 SURFACE나 기존의 NURBS PRIMITIVE OBJECT를 폴리곤 처럼 변형시켜서 모델링 하는 방법도 있지만 그런 방식보다는 이렇게 NURBS 커브를 이용 LOFT해서 모델링을 많이 한다는 소리입니다. 이런 모델링 방식은 굉장히 정확한 모델링이 가능하기 때문에 3차원 CAD에서 많이 선호되는 방식이기도 합니다. 이 NURBS가 원래 3차원 설계용으로 계발되었다는 사실을 상기하면 이해가 가는 내용이지요.
그리고 NURBS 모델링의 또 다른 특징은 방향성이 있다는 것입니다. NURBS 커브에는 당연히 끝 점들과 조절점들이 존재하는데 이 점들은 고유의 좌표값을 가지고 있습니다. 이런 좌표값을 가지는 커브들을 LOFT시켜 SURFACE(면)를 만들면 이런 SURFACE도 특유의 좌표값을 가지게 되는데 이것이 바로 UV 좌표값입니다. UV는 3D의 공간좌표를 나타내는 XYZ축과 헷갈리지 말라고 X축에 해당되는 것은 U, Y축에 해당되는 것은 V, Z축에 해당되는 것은 W로 표시한 맵핑 좌표값이라 보면 이해하시기 쉽습니다.(이것도 더 자세하게 들어가면 수학적인 수식이 나옵니다. -_-;; 그러니 단순히 여기까지만 아시는 것이 정신건강에 좋습니다.) 이런 특징 때문에 폴리곤 모델링의 경우 맵핑을 입힐 시에 따로 UVW 맵핑값을 줘야 하지만 NURBS의 경우는 그럴 필요가 없다는 것이지요.

 

 

 

 

(그림3. 이렇게 NURBS는 폴리곤과 달리 면을 형성하게 되면 UV 좌표가 형성된다.)

 

 

 

 



2. NURBS 모델링의 장점

이렇게 자유자제로 곡선 표현이 가능한 NURBS의 특징을 이용한 LOFT 모델링은 폴리곤으로 표현하려면 여러 가지 단계를 거쳐야 하는 것에 비해(일반적인 PLANE이나 박스를 이용 이리저리 끌어당기고 집어넣고 해서 대강의 각진 모양을 갖춘 다음 MESH SMOOTH를 주고 계속해서 수정해 나가는 방식) 커브들만 잘 그려 놓으면 차례로 커브들을 선택해 LOFT 시키면 한 번에 알아서 면이 형성되고 정확하면서 또한 품질도 뛰어납니다. 즉 폴리곤에 비해 모델링 하기가 매우 쉽다는 장점이 있다는 것이죠. 이런 모델링 방식을 이용하면 아무리 어려운 비정형의 곡선이 이어진 유기체 모델링도 폴리곤에 비해 비교적 쉽게 할 수 있습니다.

 

 


 

 

(그림4. NURBS로 형성한 각종 OBJECT면들. 물론 폴리곤으로도 이런 면들을 형성해서 만들 수는 있으나 상당히 어렵고 많은 손이 가는 반면 NURBS의 경우 이런 면들은 마우스 클릭과 명령어 몇 번으로 비교적 쉽게 만들 수 있다.)
 
 

이 장점 하나로만으로도 NURBS는 최고의 모델링 방법으로 인정받기 충분하다고 가히 말할 수 있습니다.
거기다가 당연히 최고의 곡선을 나타낼 수 있는 SPLINE이기 때문에 이를 이용해서 각진 POLYGON보다 곡면이나 유기체 모델링 하기가 너무나 용이하다는 점이 있습니다. 거기에 더해 POLYGON은 처리하기가 어려운 변곡알이라 불리우는 EDGE의 FILLET이 너무나 쉽게 된다는 장점이 있습니다.


(그림5. 왼쪽의 큐브의 모서리(EDGE)를 선택해서 변곡알(FILLET)을 주고 싶을 때 폴리곤의 경우 이렇게 각이진 모따기 밖에 안되나 NURBS의 경우 바로 부드러운 모서리를 만들 수 있다. 가운데가 폴리곤 큐브이고 맨 오른쪽이 NURBS 큐브)


그리고 NURBS이기 때문에 트리밍이나 NURBS SURFACE 자체는 CUT이 안되는데 그렇기에 개발된 PROJECT를 이용한 트리밍은 면의 깨짐없이 너무나 자연스럽게 구멍을 낼 수 있습니다.

물론 POLYGON 모델링에서도 이런 기능이 있으나(3DS MAX기준으로는 SHAPE MERGE라고 합니다.) 이를 사용할 경우 면이 깨지고 이 명령어를 쓴 이후 EDGE자체도 깨지는 불편함이 노출되기 때문에 사용을 자제하는 명령어이기도 합니다. 그리고 이렇게 낸 구명과 새로운 오픈 면과의 연결을 할 때에도 부드럽게 연결이 가능합니다. POLYGON은 MESH SMOOTH를 적절히 적용해야 하는데 그것이 상당히 어렵지요. 이래저래 NURBS 모델링은 POLYGON 모델링에 비해 편리한 점이 한 두가지가 아니며 이것 때문에 한 때 NURBS 모델링은 굉장히 진보적이고 3D 고수들이 하는 모델링으로 인식이 된 것입니다.

 

 

 

 



3. NURBS 모델링의 단점

빛이 있으면 그림자가 있는 법. 이렇게 진보적이며 쉽게 모델링을 할 수 있게한 NURBS 모델링에서도 분명히 단점이 존재합니다.
NURBS 모델링의 가장 큰 단점은 용량이 너무 나간다는 것이지요. 함수로 계산되서 나타내는 NURBS이기 때문에 일일이 좌표값을 설정해줘서 표현해야 하는 POLYGON보다 오히려 용량이 더 적게 나갈텐데(이게 뭔말인지 잘 모르시는 분을 위해 비유를 들자면 단지 몇 개의 점들의 좌표값과 그것이 가지고 있는 방향성 정보만 있는 벡터 방식을 NURBS로 치환해서 생각하고 일일이 수 많은 픽셀들을 가지고 무엇을 표현해야 하는 비트맵 방식을 POLYGON으로 치환해서 생각하면 이해가 좀 가실지도 모르겠습니다. 점 4개와 색상정보만 있으면 원의 표현이 가능한 벡터와 수많은 픽셀이 있어야 같은 원을 표현하는 비트맵을 볼 때 어느것이 용량이 더 적게 나가는지는 다들 아실테죠. 당연히 벡터이지요. 이렇게 비유했는데 더 모르겠다구요? 그럼 대략 낭패......(아 그리고 주의: 용량관계 때문에 저렇게 설명한 것이 아 NURBS가 벡터방식이고 POLYGON이 비트맵 방식이구나 하고 이해하시면 정말 곤란합니다. 단지 비유가 그럴뿐이지 절대로 그런 것이 아닙니다.)) 용량이 많이 나간다니? 하고 의하하게 생각하시는 분들도 계실겁니다. 그 말도 맞는 말인데, 그럼에도 불구하고 NURBS가 POLYGON에 비해 엄청나게 무겁고 용량이 많이 나가는 이유는 현재의 3D PROGAM 기술을 가지고는 NURBS를 그대로 표현할 수 없기 때문입니다. 여기서 더 설명이 들어가야 하는 쉐이딩과 렌더링 설명이 나와야 하지만 지면관계상 생략하도록 하고 암튼 간단히 설명하자면, 3D 소프트웨어에서 작업하는 작업창에서 보이는 OBJECT의 면(SURFACE)를 쉐이딩이라 하고(원래는 면의 표현방식입니다. 이해하기 쉽게 이렇게 설명할 뿐) 와이어 프레임 상태를 우리가 보는 실제 OBJECT로 보여주게 하는 것을 렌더링이라 합니다. 다음 그림을 보면 아 이게 쉐이딩이고 이것이 렌더링이구나 대충 아실 수 있겠군요.


(그림6. 와이어프레임 상태)

 

 

 

 


 

(그림7. 이것이 뷰포인트에서의 쉐이딩 상태)
 
 

 

 


 

(그림8. 작은 박스안의 이미지가 렌더링 된 최종상태이다. 우리가 3D 소프트웨어를 이용해서 만드는 최종 이미지는 바로 렌더링 상태를 거친 이 이미지인 것이다.)
 

 

 


암튼 정리하자면 현재 3D 소프트웨어로는 일종의 함수 집합인 NURBS 자체를 쉐이딩하고 렌더링 할 수 없습니다. 결국 작업은 NURBS로 했지만 3D 소프트웨어에서 그 표현은 폴리곤으로 나타낼 수 밖에 없다는 것이지요. 이 점 때문에 바로 용량 문제가 나타나게 됩니다. 앞선 포스팅에서도 말했지만 각진 폴리곤으로 NURBS급의 곡면을 표현하려면 엄청난 면이 필요합니다.

그렇다면? NURBS를 폴리곤으로 쉐이딩이나 렌더링 표현을 할 때 복잡한 곡면을 폴리곤으로 나타내려면? 그야말로 엄청난 POLYGON들이 쓰일 수 밖에 없다는 결론이 나오지요. 이런 점 때문에 NURBS 모델링은 일반 MESH SMOOTH를 준 폴리곤 모델링 보다 용량이 많이 나갈 수 밖에 없습니다. 그렇기 때문에 NURBS 모델링은 초창기 때는 하이엔드급 3D 소프트웨어에서만 다뤘고 워크스테이션급 컴퓨터에서만 모델링이 가능했었습니다. 지금이야 컴 성능이 많이 좋아져서 일반 컴퓨터에서도 돌아갑니다만 아직도 일반 컴에서 NURBS 모델링은 피하는 것이 좋고 용량 최적화를 위해서도 그다지 쓰이지 않고 있습니다. 결국 이런 것 때문에 고가의 장비가 투여되는 포스트프로덕션이나 영상쪽 그리고 정확한 데이터와 한 장의 스틸 컷이 요구되는 3D CAD/CAM 분야에서 많이 쓰일 수 밖에 없는 현상이 일어나는 것이지요.(게임은 절대 안되지요^^)


 

 


 

(그림9. 좌측이 NURBS로 만든 구(SPHERE) 함수계산이라 와이어프레임 상태에서는 굉장히 간단히 나오나 이를 쉐이딩이나 렌더링을 하려면 NURBS를 결국 POLYGON으로 변환해야 한다. 오른쪽 이미지가 POLYGON으로 변환된 NURBS의 SPHERE이미지인데 와이어프레임상태와 달리 많은 수의 MESH가 생성되어 있음을 알 수 있다. 그렇기 때문에 기존 POLYGON 모델링 보다 더 많은 면이 형성되기 때문에 용량이 많이 나가는 것이다.)

 

 


 

(그림10. NURBS가 폴리곤으로 변형된 다른 예, 여기서도 수많은 MESH 면이 생성됨을 알 수 있다.)
 

 

 


NURBS 모델링의 두 번째 단점은 이전에 언급한 내용인 NURBS 자체에 방향성이 존재한다는 점입니다. 이것은 양날의 검과 같은 것인데 고유좌표를 산출 할 수 있다는 점은 맵핑이나 쉐이딩 작업시 효율이 뛰어난 반면, 면을 형성하고 나면 그 선의 고유 방향성 때문에 면은 방향성을 가지게 됩니다. 이게 무슨 문제점을 양산 하는가? 인체의 얼굴 모델링을 예를 들면, 얼굴을 NURBS 방식으로 모델링 할 경우 입을 중심으로 모델링을 진척시키면 방향이 입을 중심으로 가로로 정렬되어 눈 부분에서 디테일을 추가해야 되는 경우 아주 많은 세로라인이 추가 되야 합니다. 그렇게 되면 세로 라인이 많이 필요하지 않는 부분까지 추가 시켜야 한다는 단점이 존재 하지요. 이에 비해 폴리곤은 가장 기본단위인 VERTEX(점)가 특정한 방향성을 가지지 않기 때문에 언제든지 어느 지점에서 삼각형, 사각형, 다각형등의 다양한 면을 형성할 수 있고 NURBS와 달리 면 방향을 바꿀 수 있습니다. 그래서 부분적으로 디테일을 추가할 경우 다른 면을 건드리지 않고, 또한 디테일을 추가하지 않아도 되는 부분은 쓸데 없이 면을 추가할 필요가 없어 용량 컨트롤 하는 것도 훨씬 이득입니다. 그에 비해 NURBS는 면의 방향을 두 가지중 어느 한가지로 선택해서 모델링해야 하는데, 이것이 위에서 언급한 것 외에 모델링 하다보면 수시로 면을 뒤집을 필요가 생길 경우 아주 머리가 아프게 됩니다. 그래서 이 문제를 해결하기 위해 PATCH 모델링 방식(마야에서는 MULTI-SURFACE라는 말을 더 많이 씁니다.) 유수의 프로덕션에서 오래 전부터 자체적으로 개발되어 사용되었습니다. 이 방식은 쉽게 말하면 다양한 방향성을 요구하는 면 부분에 여러 개의 사각형 NURBS면들을 원하는 부위에 하나의 면인양 인위적으로 퍼즐 맞추듯이 하는 모델링 방식입니다. 이 역시 그림을 보면 이해하기 쉽겠군요.

 


 

(그림11. 위에 그림이 기존의 NURBS 모델링 방법이다. 입 주의에 쓸데없이 많은 헐(HULL)이 있는 것이 보이는데 이는 다른 부분이 디테일하게 들어가기 위해 어쩔 수 없이 만들어 져야 하는 헐이다. 그에 비해 밑에 그림은 헐 수가 적은데도 불구하고 곡면정도나 정교함 정도가 위 그림과 차이가 없다. 이 밑에 방법이 마야나 요즘 넙스에서 많이 쓰이는 멀티 패치 모델링을 이용한 경우이다.)
 
 

 


NURBS 모델링의 세 번째 단점은 수정하기 정말 애매하다는 것입니다. NURBS에서는 다양한 방향성이 존재하는 OBJECT를 맞추기 위해 바로 위에서 언급한 PATCH 방식의 모델링 방식을 쓰는데 이것이 다소 번거롭고 까다로운 작업인데다가 일단 꽤 맞춰 완성하고 나서 수정할 거리가 생기면 그 수정이 매우 어렵다는 단점이 생깁니다. 이 역시 이쪽 3D를 만져보지 않으신 분은 실감이 잘 안가는 내용이지만 NURBS 모델링을 좀 해보신 분이라면 바로 공감할 수 있는 내용이지요. 암튼 수정이 매우 까다롭다라는 것만 알아두시면 될듯 합니다.

마지막 NURBS 모델링의 단점은 직관적이지 못하고 NURBS 커브를 이용한 모델링 방식에 익숙하지 않으면 모델링 하기가 매우 까다롭다는 점입니다. 앞서 말했듯이 폴리곤 모델링과 달리 NURBS 모델링은 주로 커브를 정확하게 그려서 LOFT시키는 방식을 이용하는데 이 정확한 커브를 그리는 것은 사물을 제대로 관찰을 잘 하지 않으면 그려내기 힘들고 어려운 일입니다. 그에 비해 폴리곤은 조각하듯이 직관적으로 큰 덩어리를 잡은 다음 디테일을 추가시키는 방법이기 때문에 모델링 방식이 직관적이고 초보자들도 무리없이 할 수 있습니다.
역시 그림을 보면 대충 커브 뽑아내는게 왜 힘든지 이해가 가실듯 합니다.

 


 

 

(그림12. 사람얼굴을 NURBS로 만들때 필요한 곡선들. 이 곡선을 선택해서 LOFT시키면 사람얼굴이 간편하게 나오나 이런 곡선을 정확하게 뽑아내기가 매우 어렵다.)


 


(그림13. 위 그림11의 과정을 걸쳐서 나온 사람의 얼굴. 요즘은 이런식으로 NURBS 인물 모델링을 하지는 않지만 보통 NURBS 모델링 방식이 이런 것을 보여주는 스탠다드 방식이다.)
 

 


하지만 이점은 익숙해지면 오히려 더 편할 수 있기 때문에 NURBS만의 단점이라 하긴 좀 그렇군요. 암튼 설계쪽이 아닌 디자이너나 애니메이션 하는 사람들에게는 조금 까다롭고 어려운 방식이라는 점은 어쩔 수 없는 듯 합니다.

 

이상 NURBS의 장단점에 대해 간략하게나마 다시 정리하자면,
POLYGON 모델링 방식보다 편하고 기존의 POLYGON 방식으로 만들기 어려운 물체도 쉽게 만들 수 있다는 장점 때문에 처음 이를 이용한 ALIAS가 나왔을 당시부터 매우 각광받던 모델링 방식이고 MAYA를 통해 대중들에게도 널리 각인 시킨 우수한 GEOMETRY 방식이지만 용량문제와 수정 문제, 그리고 다소 직관적이지 못하다는 것 때문에 많은 문제점도 나타나게 된 방식이기도 하지요. 이 방식 이후 많은 사람들은 NURBS의 단점을 보완하고 POLYGON의 편리하고 직관적인 장점을 이용할 수 없을까 하는 연구를 하게 됩니다. 즉 제 3의 GEOMETRY 방식을 연구하게 되는데 그 결과 나오게 된 것이 바로 SUBDIVISION이라는 폴리곤 기반의 새로운 방식의 GEOMETRY가 되겠습니다.
다음 포스팅에서는 이 SUBDIVISION에 대해 다뤄보도록 하겠습니다.









FAZZ 블로그의 모든 저작물들은 특별한 언급이 없는 한 크리에이티브 커먼즈 라이센스에 따라 저작자 표시, 비영리, 동일조건변경허락조건 하에 이용하실 수 있습니다.
FAZZ 블로그는 IE, FireFox, Opera 등의 주요 브라우저 모두에서 테스트 되었습니다.
Except where otherwise noted, All contents on FAZZ's Blog are licensed under a Creative Commons Attribution 2.5 License
Best viewd with all browsers - FireFox, IE, Opera and more...