블로그

  • DarkSoul

    1. 두 번의 엔딩
    2. 기사의 명예 
      1. 희귀한 무기입수
        • 보스 소울(거인대장장이에게 강화)
        • 쿠라그 – 쿠라그의 마검(곡검+10), 혼돈의칼날(도+10)
        • 월광나비 – 결정륜의 방패(방패+10), 월광나비의뿔(창/자검+10)
        • 시프 – 아르토리우스의 대검(무속성-단검/직검/대검+10, 마법속성-부러진 직검+10), 아르토리우스의 대방패(방패+10)
        • 아이언 골렘 – 골렘엑스(도끼+10), 용골의주먹(주먹무기+10)
        • 온스타인 – 용사냥꾼의 창(창/자검+10)
        • 스모우 – 스모우의 헤머(망치+10)
        • 반룡 프리실라 – 생명수확의 낫(도끼창/낫/채찍+10)
        • 검은 태양 그윈돌린 – 암월궁(활+10), 암월의석장(지팡이)
        • 작장의 왕 그윈 – 대왕의 대검(단검/직검/대검+10) 
      2. 꼬리절단
        • 헬카이트 – 비룡의 검(송진 바르고 3방)
        • 반룡 프리실라 – 프리실라의 단검(절단 후 화염폭풍)
        • 백룡 시스 – 월광의 대검(끝자락 중간 꼬리에 혼돈의 대화염구)
        • 고룡 – 고룡의 대검(살신성인? / 아낌없이주는 나무 / 나는 결초보은?)
        • 탐식 드래곤 – 용왕의 큰도끼(엉덩이에 붙은 꼬리를 살포시)
      3. 몹 격파 습득
        • 흑기사 시리즈 – 대검(2개), 도끼창, 큰도끼, 방패
        • 은기사 시리즈 – 직검, 창, 방패
        • 검은 숲 거인 – 바위의 대방패
        • 에스트로병 주던 병사 – 문장의 방패
        • 성전사 리로이(암령) – 그랜트(큰추), 상투스(방패)
        • 전도자 – 전도자의 삼우창(oTL)
      4. 길가에서…..
        • 용사냥꾼의 대궁(아노르론드)
        • 베르카의 자검(회화세계)
        • 대룡아(아노르론드)
        • 사신방패(거인무덤)
        • 용문장의 방패(비룡계곡)
        • 피의 방패(회화세계)
        • 흑철의대방패(아노르론드)
        • 하벨의 대방패(아노르론드)
        • 아스토라직검(비룡계곡)
      5. 계약
        • 카아스 – 다크핸드
        • 묘왕 니토 – 묘왕의 검
      6. 상인에게……
        • 거인의 할버트
        • 크레센트 엑스
        • 바위의 대검
    3. 현자의 지혜(마술)
      소울화살, 강력한소울화살, 소울볼트, 강력한소울볼트, 유도소울덩어리, 유도소울결정체, 소울창, 소울결정창, 백룡의 숨결(로건사살), 마법무기, 강력한마법무기(아노르론드), 결정마법무기, 마법의 방패, 강력한마법방패(공작의 서고), 소리미끼, 음소거, 낙하제어, 무기은닉, 투명화, 수리, 조명, 의태, 치료(병자의 마을), 디스펠(작은론드)
    4. 주술사의 유대(주술)
      화염구, 화염옥, 대화염구, 혼돈의대화염구(거미공주), 화염폭풍, 화염태풍, 혼돈의 폭풍(거미공주), 발화, 대발화, 화염분출(회화세계), 화염채찍, 혼돈의화염채찍, 독안개(엔지),맹독안개(엔지), 산성분자(회화세계), 격심한발한, 강철화, 내면의 힘, 매료
    5. 성녀의 기도(기적)
      회복, 제한된대회복, 대회복, 태양의치유(공작의 서고), 생명의 샘(거인무덤), 태양의 은혜(공작의서고), 포스, 신의 분노,포스방출, 마법보호, 강력마법보호(잿빛호수), 귀환, 조언구하기, 인과응보, 침묵의 금침, 고요한평화의산책(지하묘지), 뇌창, 대뇌창(태양계약), 태양의 창(태양계약후 그윈소울), 태양의 검(그윈돌린격파 후 상자), 암월의 검(암월계약),묘왕의검무(묘왕계약), 묘왕의 대검무(묘왕계약)
    6. 계약
      1. 백교 – 계승의 제사장 그뚱보(개XX), 레아(구해주면어디 가는 거니) – 계약만
      2. 왕녀의 수호자 – 가슴 큰왕녀(이름이 기억 나지 않게 상체가 이뻐) – 계약만
      3. 암월의 검 – 암월 영묘안개전 융단(안개로 들어가면 전투) – 복수의 증거 10개
      4. 태양의 전사 – 태양의 제단 – 태양의 메달10개
      5. 숲의 사냥꾼 – 하얀 고양이(시프에게 가기 전 중간 건물 왼쪽 창문) – 안개반지를 위한 3승 시바이야기 4승
      6. 다크레이스 – 카아스(왕의 그릇을 이놈에게) – 인간성30개
      7. 고룡의 길 – 고룡(꼬리를 잘라도 계약을 해주는 인자함) – 용비늘30개
      8. 묘왕의 권속 – 니토(머리없는 데몬이 있던 지역 관으로 들어가자) – 죽음의 눈동자10개
      9. 혼돈의 종자 – 거미 공주(목소리가 이뻐) – 인간성30개
    7. 최강의 무기(일반+15) – 안드레이
    8. 결정의 무기(결정+5) – 거인대장장이
    9. 벼락의 무기(번개+5) – 거인대장장이
    10. 조잡한 무기(조잡한+5) – 안드레이
    11. 마법의 무기(마법+10) – 작은론도 대장장이
    12. 마력의 무기(마력+5) – 작은론도 대장장이
    13. 축복받은 무기(신성한+10) – 안드레이
    14. 암흑의 무기(사교+5) – 안드레이
    15. 화염의 무기(화염+10) – 바모스
    16. 혼돈의 무기(혼돈+5) – 바모스
    17. 화톳불을 밝히다 – 첫 화톳불을밝히면……
    18. 에스트병 입수 – 첫 에스트병을입수하면……
    19. 로드란 도착 – 까마귀에게납치당하면……
    20. 각성의 종 – 불사, 쿠라그 종을 울리면……
    21. 불쏘시개 – 삼인귀를 격파하면……
    22. 심연의 걷다 – 시프를 격파하면……
    23. 아노르 론드 도착 – 센의고성을 넘어……링을 만지면……
    24. 왕의 그릇 – 온스타인/스모우 격파 후 왕녀에게 청혼을 하면……
    25. 묘왕 니토 격파 – 주술사용
    26. 혼돈의 못자리 격파 – 버그사용
    27. 4인의 공왕 격파 – 강력한마법 방패나 강철화 사용
    28. 백룡 시스 격파 – 주술사용
    29. 검은태양 그윈돌린 격파 – 닭치고돌격/강력한 마법 방패 사용
    30. 반룡 프리실라 격파 – 주술사용
  • 3D 기초상식:SPLINE에 관해

    http://fazz.tistory.com/m/post/98

    NURBS는 Non-Uniform Rational B-Spline의 약자로써 일종의 컴퓨터에서 곡률을 나타낼 수 있는 여러 선(SPLINE) 종류중 하나인데 이 NURBS를 설명하려면 먼저 SPLINE의 종류에 대한 이해가 필요합니다. 그래서 먼저 각 SPLINE의 종류와 그에 따른 아주 간단한 설명을 한 다음 NURBS에 대해 본격적으로 다뤄보도록 하겠습니다.
    그렇기에 이번에는 NURBS 모델링에 관한 전반적인 설명을 다루지 못하고 다음 포스팅으로 넘겨야겠군요.(생각지도 않게 더 자세하게 들어갔습니다. -_-)

    참고로 컴퓨터에서 구현되는 곡선에 대한 설명은 필연적으로 수학적 함수 공식이 수반됩니다. 저도 전공자가 아니기 때문에 최대한 이쪽 전문적인 지식은 배제하고 이해하기 쉽게 하려고 인터넷 및 컴퓨터 그래픽에 관련된 서적을 뒤져서 정리를 했지만……… 그게 그렇게 쉽게 되는 성질의 것이 아니더군요. 결국 이쪽 전공이 아니신 분은 뭔 소리하는겨? 하고 전혀 이해 할 수 없으실지 모르겠다는 생각이 듭니다. 그러니 그냥 이런 것이 있고 각 곡선의 특징이 그렇구나 그래서 NURBS가 유용하게 쓰이는구나만 아시면 될 듯합니다.
    극단적으로 말해서는 이번 포스팅은 그냥 넘어가고 다음 포스팅부터 보셔도 무방할듯합니다. 암튼 제가 생각하고 있는 3D 관련 포스팅중에서 이 포스팅만 어려운 것이니 다음 포스팅은 상식 수준에서 이해하실 수 있을거라 생각합니다. -_-;;

    자료출처:
    GRAPHICS LIVE 2001년 8월호
    http://www.copyeditor.co.kr/reference/char-font/bezier.htm
    http://210.94.177.75/laser/lecture/cadcam1/ch3.html
    http://fiadot.com/wiki/home/moin.cgi/3D_bf_eb_be_ee_c1_a4_b8_ae
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/aboutGDIPlus/linescurvesandshapes/cardinalsplines.asp

     

    1. SPILNE이란?

    왜 컴퓨터에서 수학적 함수를 이용해 그려지는 선을 단순히 LINE이라 하지 않고 SPLINE이라 하는 이유는 곡률표현 때문에 그렇습니다. 과거에 선의 곡률이 매우 중요한 배의 선체나 건물의 돔을 디자인하기 위해서 제도사들은 가늘고 긴 철사나 나무로 그 곡률을 맞추기 위해 운형(雲形)의 자를 사용했는데 그것을 SPLINE이라 불렀습니다. 그리고 이를 유연하게 조절하기 위해서 필요한 곳에 납덩이를 달아서 그 무게 정도에 따라 세밀하게 곡률을 조절하였습니다. 이것에 착안해서 현재 다양한 프로그램에서 현재 우리가 곡률을 사용하는 선을 그리는 툴로 프로그램화시켰지요. 그렇기 때문에 곡률이 구현되는 선을 단순히 LINE이라 하지 않고 SPLINE이라고 부르는 것입니다. 실제로 베지어 커브나 CARDIANL SPLINE이나 NURBS나 실제 끝점을 가지고 선분의 곡률을 조정하는 것이 아닌 조절점을 가지고 곡률을 조정하는 것이니, 옛날 SPLINE에 달린 납을 가지고 곡률을 조정한 제도사들이 했던 것과 같은 이치라서 더더욱 SPLINE이라 부르는 것이지요. 보면 서양애들 옛날 조상들이 쓰고 발전 시킨 것에 대한 존경의 의미로 용어를 채택해 쓰는 경향이 많은 거 같습니다.

     

     

     
    2. 컴퓨터의 곡선 표현 방법

    1960년 보잉 항공사의 J. C. 퍼거슨이 자유곡선을 표현하는 방법을 처음 내놓음으로써 컴퓨터에서 곡선을 표현할 수 있는 방법이 처음 제시되었고, 우리가 널리 쓰고 있는 BEZIER CURVE가 나온 것은 1971년 르노 자동차의 P. 베지어에 의해서였습니다. 그러니까 컴퓨터에서 곡선을 표현할 수 있게 된 것은 35년 정도 되었다고 할 수 있습니다.
    이런 곡선 표현 문제는 설계 관련 영역에서 먼저 연구되었습니다. 위에서 퍼거슨 곡선이나 베지어 곡선을 고안해 낸 사람들을 살펴면 항공사와 자동차 회사 소속이라는 사실에서도 알 수 있듯이, 컴퓨터로 이러한 기계들을 설계하는 과정에서 나타날 수밖에 없는 곡선 문제를 해결하기 위해 연구된 결과였다는 것이죠.
    왜 곡선 표현이 문제인가? 컴퓨터는 곡선이라는 개념을 알지 못합니다. 다만 어떤 함수를 주고, 여기에 연속되는 x 값을 넣어주면 그에 대응되는 y 값이 나옴으로써 곡선을 표현할 수 있게 되는 것일 뿐입니다.
    우리가 화면에서 보는 곡선은 사실 곡선이 아니라 점들이 촘촘하게 모여 있는 집합이라고 할 수 있습니다. 예를 들어서 어떤 곡선을 x 좌표가 1부터 5까지인 범위 안에서 그린다고 했을 때, 적절한 함수를 만들어 x 값으로 1, 2, 3, 4, 5를 차례대로 넣어 주면 그에 따르는 y 값이 계산될 것입니다. 이렇게 얻어진 점들을 화면에 찍어 주면 곡선과 같은 모습을 볼 수 있게 됩니다.

    이미지

    (그림1. 컴퓨터에서 곡선을 표현하는 방법)

    이렇기 때문에 SPLINE의 종류는 곡선 표현을 어떤 함수로 가지고 나타내느냐에 따라 구분되는데 현재 상용화 되어 사용하고 있는 SPLINE의 종류를 보면 크게 LINEAR SPLINE, CARDINAL SPLINE, B-SPLINE, BEZIER CURVE, NURBS 정도 되겠습니다.

     

     

     

     
    3. LINEAR SPLINE : 가장 기본이 되는 SPLINE

    말 그대로 직선입니다. 함수 좌표 값을 간단히 이은 간단한 구조로써 베지어 커브등의 곡률을 긋는 방법이 개발되기 전에 쓰였던 방식입니다. 다른 말로 하면 그 유명한 폴리곤(polygon) 이라고도 합니다. 원리는 아주 간단합니다. 곡선 위에 있는 몇 개의 점을 집어내고, 이 점을 그냥 직선으로 이어서 곡선을 표현하는 방법입니다. 지금도 3차원 그래픽 프로그램이나 CAD에서는 이 방법을 많이 쓰고 있으며, 외곽선 글꼴의 초기 형식에서도 이 방식을 사용했습니다.

    이미지

    (그림2. LINEAR SPLINE의 곡선표시 방법)

    회색 실선으로 된 곡선을 표현할 때 폴리곤 방식은 이 곡선 위에 있는 몇 개의 점에 대한 정보를 갖고 있다가, 곡선을 그려야 할 때에는 그냥 이 점들을 이어서 표현합니다. 위 그림에서 알 수 있는 바와 같이, 4개의 점을 사용한 회색 점선보다는 9개의 점을 사용한 검은색 점선이 원래 곡선에 더 가까운 모습을 가지게 됩니다. 그렇다면 우리 인간의 눈으로 봤을 때 곡선처럼 보이게 하려면? 함수 좌표값, 즉 점의 수를 늘리면 됩니다. 만약 수백개의 점을 촘촘히 배열해서 이것을 연결하면? 비록 완전한 곡선은 아닐지라도 곡선처럼 우리 눈에 보이게 될 것입니다. 이를 응용한 것이 바로 3D에서 POLYGON GEOMETRY방식이며 단위 면적당 면수를 많이 줘서 곡면처럼 보이게 하는 MESH SMOOTH 명령도 다 여기서 응용되고 시작된 방법이란 소리입니다.
    이 방법이 가진 좋은 점은 직선을 계속 이어서 만드는 방법이기 때문에 계산이 간단해서 빠르게 곡선을 구현할 수 있다는 것입니다. 그 때문에 1초에 수십 장씩, 엄청난 양 그려내야 하는 3차원 그래픽에서는 아직도 이 폴리곤 방식을 널리 쓰고 있습니다. 하지만 확대를 하면 할수록 각진 모양이 뚜렷해지며, 매끈하게 표현하기 위해서는 곡선에서 많은 점을 뽑아서 보관해야 하고 그럴수록 컴퓨터에 부하를 가져온다는 약점을 안고 있습니다.

    4. 퍼거슨 곡선

    컴퓨터에서 곡선을 표현한다는 의미를 다시 한번 생각해 본다면, 곡선 위에 있는 몇 개의 점에 대한 정보를 가지고 나머지 빠진 부분, 곧 점과 점 사이를 채우는 것이라고 할 수 있습니다. 이것을 흔히 보간법(INTERPOLATION)이라고 하는데, 위에서 살펴본 폴리곤은 그냥 직선을 가지고 점과 점 사이를 채우는 것이기 때문에 보통 선형 보간이라고 합니다. 자유 곡선을 표현하는 문제에 대해 수학자들이 관심을 갖게 되면서 여러 방법들이 나왔는데, 그 가운데 1960년대 초에 보잉 항공사의 J. C. 퍼거슨(J. C. Ferguson)이 고안한 방법이 초창기에 널리 쓰이던 방법입니다. 보잉 항공사에서는 이 방식을 FMILL이라는 시스템에 적용했으며, 다음과 같은 장점 덕분에 많은 주목을 받게 되었습니다.

    I)평면에 있는 곡선만 아니라 3차원 공간에 있는 형상도 간단히 표현할 수 있다.
    II)곡선이나 곡면의 일부에 대한 표현도 간단히 할 수 있다.
    III)곡선이나 곡면이 좌표 위에서 존재하는 자리를 옮기고자 하면 단순히 주어진 벡터만을 옮겨서 변환하여 원하는 결과를 얻을 수 있다.

    퍼거슨 곡선이 갖고 있는 방법은 요즘 널리 쓰이고 있는 베지어 곡선이나 B-스플라인 곡선과 크게 다른 것은 아닙니다. 곡선을 단위로 쪼개어 (이것을 pach라고 합니다) 이 단위 각각마다 시작점과 끝점, 그리고 이 사이를 잇는 곡선을 표현하기 위한 벡터 값을 지정하고 이 정보를 토대로 곡선을 표현합니다. 그리고 이러한 단위 곡선을 계속 이어나가면 원하는 곡선이 만들어집니다.

    하지만 이 방법은 문제를 안고 있는데, 이러한 단위 곡선들을 이어서 복합 곡선을 만들었을 경우, 각 단위의 모서리 부분이 원래 뜻했던 것보다 평평해져 버리는 현상이 있습니다. 물론 눈에 확 뜨일 정도로 심하지는 않지만, 설계와 같이 미세한 곡선 변화가 중요한 경우에는 문젯거리가 될 수 있습니다.
     

    5. Hermite interpolation

    여기서 잠깐 한가지 복잡한 공식을 소개하자면

    p=p(u)= p0 (1- 3u2 + 2u3 )+ p1(3u2 – 2u3 )+ p0′ (u- 2u2 + u3 )+ p1′ (- u2 + u3 )

    이것이 바로 The solution of cubic polynomial curves (3차 곡선식의 해)로써 이 공식을 HERMITE INTERPOLATION(허마이트 보간법)이라 합니다. 이 식을 아주 간단히 설명하자면 두 점과 그 점에서의 기울기를 만족하는 삼차곡선에 관한 해법이며, 여기에서 u의 값은 0과 1 사이입니다. 여기에서 p0, p1, p0′, p1′ 값이 어떻게 되는가에 따라서 이 공식으로 어떤 곡선이 만들어지는가가 결정됩니다. 이러한 함수를 블렌딩 함수(blending function)라고 하고 이것을 응용하여 어떤 곡선도 표현이 가능해 졌습니다.
    알다시피 이런 곡면에 대한 함수는 방정식으로 표현이 되는데 1차 방정식으로는 직선이 표현되며, 2차 방정식으로는 포물선이 표현됩니다. 3차 방정식을 사용하면 포물선의 반쪽을 꺾어 내린 듯한 모양이 되는데, 이 3차 방정식에서 나오는 곡선 모양이 보통 BEZIER나 B-스플라인에서 표현하는 곡선 형태입니다. 곧, 이런 형태의 곡선을 기본 단위인 패치(pach)로 보고 패치를 여러 개 이어서 원하는 곡선을 만드는 것입니다. 물론 함수는 x값 하나에 대하여 y값이 하나밖에 존재할 수 없는 데 비하여 곡선은 그렇지 않으므로 곡선을 계산하는 방정식에서는 보통 숫자가 아닌, 방향이 있는 벡터 값을 씁니다.

    여태까지 설명한 내용은 전공자가 아니면 무슨 소리하는지 모르실 겁니다.(다시 한 번 밝히지만 저도 잘 모릅니다. -_-) 그래서 아주 알기 쉽게 정리를 하자면, 3차원 모델링에서는 단일 평면상에 있지 않은 곡선을 나타내면서도 계산하기 어렵지 않고 또 고차 다항식을 사용할 때 발생할 수 있는 원치 않는 진동(undulations)을 피할 수 있는 표현 방법이 필요하다. 이는 삼차 다항식(cubic polynomial, 동일 평면상에 있지 않는 곡선의 표현을 위한 최소 차수)을 사용하면 해결이 되는데 그것을 해결하는 공식이 바로 HERMITE INTERPOLATION이며 이를 이용해 현재 우리가 컴퓨터 그래픽에서 쓰이는 각종 CURVE들이 만들어졌다….라고만 아시면 됩니다. 왜 골치 아프게 이런거 하나 하나 언급하냐면 이것을 토대로 각종 곡선이 나왔으며 그 곡선의 최신형이자 완결형이 바로 NURBS이기 때문이지요. 암튼 이것을 토대로 현재 우리가 쓰는 BEZIER CURVE, CARDINAL SPLINE, B-SPLINE, NURBS가 탄생하였으니 이제 이것들에 대해 하나씩 또 보도록 하겠습니다.

     

     

     

    6. BEZIER CURVE

    HERMITE INTERPOLATION을 응용한 첫 SPLINE이 바로 BEZIER CURVE입니다. 앞에 소개한 Hermite Interpolation은 사실 사용자가 대화형 설계를 진행하기에는 적합하지 않은데, 그 이유는
    (i)원하는 형상을 자유자재로 생성하는데는 부적절하며,
    (ii) P0′, P1’의 크기변화에 의한 곡선형상의 변화가 일반인의 직관과 완전히 일치하지는 않기 때문입니다

    이를 해결하기 위해 개발된 것이 Bezier 곡선으로, 60년대초 프랑스 르노 자동차의 Bezier가 제안 하였습니다. 개발자의 이름을 딴 Bezier 커브는 모든 컨트롤 포인트들을 통과하지만 각각의 컨트롤 포인트마다 tangent vector라고 하는 방향과 길이를 동시에 표시하는 조절선을 가집니다. 특정한 컨트롤 포인트에서 그 커브를 스치고 지나가는 이 접선(tangent)의 방향과 길이(vector)는 각각 그 스플라인 커브의 “곡률 방향” 및 tangent vector에 의해 “영향을 받는 범위”를 나타내지요. 흔히 우리가 잘 알고 있는 2D 벡터 소프트웨어인 ADOBE ILLUSTRATOR에서 쓰이는 커브가 바로 이 베지어 커브이며 3D에서도 쓰입니다.

    이미지

    (그림3. BEZIER CURVE의 구성)

    이 곡선의 특징은 첫 점과 끝점이 반드시 곡선 안에 있으며, 두 컨트롤 포인트는 언제나 이 곡선을 매끄럽게 해주는 효과를 갖는다는 점입니다. 따라서 사용자가 그래픽 인터페이스를 통하여 쉽게 곡선을 표현할 수 있으며, 항상 매끄럽고 정확한 곡선을 그려내는 장점을 갖게 되는 것입니다.하지만 Bezier Curve의 경우 일반적인 방정식이 x와 y에 관한 식이 아닌 t에 관한 식으로 정리되며(자세한 것은 생략하도록 하겠습니다. 어짜피 전문가만 이해하는 수준이고 우리가 이거에 대해 까지 알 수는 없으니까요)  처음과 마지막 점을 제외하면 공간상의 점을 통과하지 않고 근사적으로 나타내게 됩니다. 또한 global modification (전역 조정)만 가능하다는 제약이 있습니다.  다시 말하면, 블렌딩 함수가 0<u<1 의 전 영역에서 0이 아닌 값을 가지게 되므로  조정다각형의 조정점 중 하나라도 움직이게 되면 곡선의 모든 위치가 영향을 받게 되며, 원하는 정점을 지나게 하기 어려운 단점이 있습니다.

     

     

     

     

     

     

     

    7. Cubic spline curves (삼차 스플라인 곡선)

    점들을 보간하는 경우, 여러 개의 곡선 segment(조각)을 이어서 복합곡선(composite curve)을 형성하게 됩니다. 공간상의 곡선을 정의하는 최소 차수의 다항식은 3차곡선이므로, 여러 개의 Hermite curve를 이어서 적절한 복합 곡선을 만들 수 있습니다. 그러나 사용자에게 각 점의 접선 벡터값을 입력하도록 하는 것은 실제로는 너무 불편하므로 곡선의 중간 점에서 1차 및 2차 미분 연속조건을 사용하는 것이 보편적이라 하는군요. 이렇게 만들어진 곡선을 2차 미분 연속의 Cubic spline curves(3차 스플라인 곡선)라 합니다.

    이미지

    (그림4. Cubic spline curves)

    8. CARDINAL SPLINE

    Cardinal spline은 각 curves들이 합쳐져 큰 curve를 이룬 것을 말합니다. 이 Cardinal spline은 각 points와 tension parameter에 의해 특화되는데 선을 구성하는 모든 컨트롤 포인트들을 통과하는 SPLINE CURVE인 것이죠.
    카디널 스플라인의 장점은 컨트롤포인트의 위치와 커브가 그리는 궤적의 직접적인 상관관계에 있습니다. 특정한 지점을 지나는 커브를 그리기 위해서는 컨트롤포인트를 간단히 “그곳”에 위치시키면 됩니다.

    이미지
    이미지

    (그림5. CARDINAL SPLINE과 TENSION값에 의한 곡률 표현 방법)

    이러한 방식의 장점은 point 의 위치에 curve 가 만들어 지는 직접적인 관계를 가지고 있기 때문에 만약 curve 가 위치하고자 원하는 지점이 있다면 그곳에 point 를 위치시키면 됩니다. 반면에 이러한 직접적인 관계의 단점은 그것이 부드럽고 점진적인 곡률의 curve를 만드는데 있어서 문제점을 가지고 있습니다. 만약 control point의 위치가 조금이라고 잘못 놓인다면 curve는 정확히 잘못 놓인 위치를 통과하면서 다음 그림에서 보여 지는 것과 같이 조금 튀는 듯한 부드럽지 못한 모양을 가지게 됩니다. ALIAS 1.0에서는 이 CARDINAL SPLINE을 가지고 모델링을 했습니다.

     

    이미지
    (그림6. CONTROL POINT가 잘못 위치할 경우 위 그림처럼 곡석이 조금 튀게 된다.)

     

     

     

     
    9. B- SPLINE

    Spline의 곡률을 조정하는 방법은 크게 두 가지로 나눌 수 있는데 control point가 curve의 위에 존재하는 interpolating splines 방식과(Bezier curve, Cardinal spline)  두 번째 형태는 curve의 근처에 놓이기는 하지만 직접적으로 control point가 curve의 위에는 놓이지 않는 approximating spline의 형태입니다. Control point가 곡선 위에 있는 Bezier curve, Cardinal spline의 경우,  패치 하나를 구성하는 점 가운데 어떤 것을 움직여도 곡선이 전체적으로 변한다는 것입니다. Adobe Illustrator와 같은 프로그램에서 곡선 한 조각을 그리고 관련된 네 점 가운데 어떤 것을 움직여도 전체 모양이 변합니다. 곧, 편집 과정에서 곡선 가운데 일부 형상만 바꾸고 싶어도 전체적으로 번거롭게 매만져 줘야 한다는 문제점이 있습니다. 거기에다가 조정점의 개수와 곡선식의 차수가 직결되어 근사적으로 나타낼 수 있는 점의 수에 어느 정도 제약이 있습니다. 이러한 문제점을 해결하기 위하여 드보어(de Boor), 콕스(Cox)가 제안한 방법이 B-spline(베지어-스플라인) 곡선입니다. B-spline의 경우는 BEZIER CURVE나 Cardinal Spline같이 곡면을 조절하믄 control point가 spline위에 존재하지 않고, curve의 근처에 놓이기는 하지만 직접적으로 control point가 curve의 위에는 놓이지 않는 approximating spline의 형태를 가지고 있습니다. approximating spline의 경우는 어느 정도 잘못된 위치의 point 에도 부드러운 curve를 계산할 수 있어 각 점이 일정한 범위에만 영향을 미치기 때문에 전체적으로 모양을 바꾸지 않고 원하는 부분만 조절해 줄 수 있는 장점이 있습니다. 이러한 approximating spline 형태를 처음 사용한 것이 B-spline 인것이죠.

    이미지

    (그림7. B-SPLINE의 도식)

    위 그림 7을 살펴 봅시다. 이 그림은 시작점과 끝점, 네 개의 조정점으로 이루어진 B-SPLINE 곡선인데, 베지어 역시도 이론만 가지고 따져 보면 조정점을 두 개보다 많이 가질 수는 있지만 앞에서 말했던 것처럼 그 가운데 단 한 개의 점만 움직여도 곡선 전체가 변하기 때문에 최소 숫자인 두 개만을 쓰는데 반해 B-SPLINE은 여러 개의 조정점을 가져도 각각이 영향을 미치는 구간이 제한되어 있기 때문에 여러 조정점을 한 패치에 한꺼번에 쓰는 경우가 많습니다. 또한 시작점과 끝점이 곡선 위에 있는 베지어와는 달리 B-SPLINE은 V0와 V5가 점 위에 있지 않습니다. 그렇다고 반드시 떨어져 있는 것은 아니며 적절한 방법으로 시작점과 끝점이 곡선 위에 있도록 만들 수도 있습니다. 정확하게 말하면 B-SPLINE은 베지어를 포함하고 있으며, B-SPLINE 곡선을 특정한 형태로 제한해 보면 베지어와 같은 특성을 갖게 할 수도 있습니다. 이 B-SPLINE은 NURBS가 나오기 이전에 CG에서구현되는 최강의 SPLINE이었습니다.

    10. NURBS

    자 드디어 넙스까지 왔습니다. 이것을 설명하기 위해 앞에 여러 곡선과 간단하지만 무척 머리 아픈 공식이 설명되었어야 했지요. 그래야 했던 이유는? NURBS가 그 어떤 SPILINE보다 상위 개념에 있으며 NURBS 하나를 가지고 그 이하 곡선에서 추구하고 구현되었던 것이 다 가능하기 때문입니다.
    이를 자세하게 설명하자면, NURBS는 앞에서 말했듯이 Non-Uniform Rational B-Spline, 즉 NURBS 곡선이며 비균일 매듭 벡터를 사용합니다. NURBS 곡선은 Non-Rational B-Spline과 BEZIER 곡선뿐 아니라 직선과 2차의 해석적 곡선을 하나의 형태로 나타낼 수 있으며, 근사적인 모드나 보간적인 형태로도 사용할 수 있습니다. 즉 NURBS는 모든 곡선을 포용하는 특성이 있어 곡선의 표준으로 설명할 수 있으며 Linear, Bezier, Cardinal, B-Splines 곡선은 NURBS의 하위 개념이라고 할 수 있습니다. 다른 곡선으로 구현할 수 있는 것이면 모두 NURBS로도 구현할 수 있다는 장점을 가지고 있지요.
    이를 다시 거꾸로 생각하면, 넙스커브는 위에서 언급된 스플라인 커브들의 장점을 고루 갖고 있다는 소리기도 합니다. 카디널 스플라인처럼 커브의 시작점과 끝점에서는 컨트롤 포인트를 지나면서도 중간 점들에서는 Approximating spline처럼 컨트롤 포인트 “주변”을 지나기 때문에 부드러운 곡률을 갖습니다. 또한 넙스커브는 컨트롤 포인트 외에 커브위에 존재하는 edit point라고하는 별도의 조절 점들을 갖기 때문에 상황에 따라 정확도가 필요한 경우에는 카디널 스플라인처럼 직접 커브가 지나는 위치를 조절을 할 수도 있습니다. 넙스커브가 가지는 또 하나의 중요한 특징은, 각각의 컨트롤 포인트마다 weight를 조정할 수 있다는 점인데 이 weight값이 클수록 커브는 그 컨트롤 포인트 쪽으로 치우치게 되므로 컨트롤 포인트의 위치이동 없이 커브의 미세한 곡률까지 조정할 수 있다는 장점을 가지고 있습니다. 이런 weight를 조정할 수 있다는 점 때문에 NURBS는 다른 여타 곡선에 비해 많은 자유도를 가지고 있으며 이런 특징 때문에 다른 곡선에서 만들 수 없는 불규칙 곡선까지도 만들 수 있습니다.(그래서 NON-RATIONAL이지요) 그렇기 때문에 현재 CG에서 다른 SPLINE을 제치고 이 NURBS 곡선이 채택되고 추앙받는 이유이기도 합니다.(이 말 설명하려고 앞에 저렇게 삽질?을 하게 되었군요 ^^;;)

    이미지

    (그림 8. NURBS의 도해)

    이미지

    (그림 9. 각 SPLINE의 특징을 다이제스트 한 그림)

    다음 포스팅에서는 이 지식을 가지고 NURBS 모델링의 특징과 장단점에 대해 알아보도록 하겠습니다.(원래 그것이 2번째 포스팅이 되어야 했는데……. 고로 이번 포스팅은 앞에서도 말했지만 그냥 넘어가도 무방할듯 합니다. ^-^;; (그럴 바에는 왜 썼어?)

    뱀발) 언제나 잘못된 점 리플로 지적해주시면 감사하겠습니다.

  • 3D 기초상식: POLYGON에 관해

    http://fazz.tistory.com/m/post/97

     

    AUTODESK의 ALIAS 합병을 계기로 MAJOR 3D 소프트웨어에 관해 기본상식 수준으로 한번 다뤄봐야겠다는 생각이 들었습니다. 개인적으로 3D분야에 있기도 하니, 이쪽 분야에 관심이 많을 수 밖에 없어서요.

    하지만 의외로 인터넷을 둘러보니 3D의 역사와 3D소프트웨어들에 관해 나온 사이트는 없고 거의다가 학원 선전에 관한 것이 대다수라 실망이 크더군요. 물론 제가 알고 있는 이런 저런 3D에 관련된 상식은 많이 알고 있지만 제가 머릿속에 담고 있는 3D에 관한 내용을 글로 정리하는 것은 전혀 다른 것이기 때문에 이를 원활히 하기 위해서는 자료의 중요성은 강조해도 지나치지 않은데 아쉬움이 크더군요.
    혹시 이쪽 분야를 잘 다룬 사이트를 아시는 분은 덧글로 알려주시면 감사드리겠습다.

    암튼 자료가 생각만큼 확보되면 다음과 같은 순서로 연재를 할까 생각중입니다. 어디까지나 생각이 그렇다는 것이지 사정에 의해 대폭 줄어들 수도 있음을 미리 밝힙니다. ^^

    1. 3D 기초상식: POLYGON에 관해
    2. 3D 기초상식: NURBS에 관해
    3. 3D 기초상식: SUB-DIVISION에 관해
    4. 3DS MAX
    5. LIGHTWAVE
    6. SOFTIMAGE
    7. MAYA
    8. 종합편

    자 그럼 첫 번째 장으로 3D 기초상식 중 POLYGON에 관해 알아보도록 하겠습니다.

    1. GEOMETRY란?

    POLYGON과 NURBS를 알기 전에 더 먼저 알아둬야 할 단어가 있는데 바로 GEOMETRY라는 용어가 그것입니다. 지금처럼 상용화된 3D 소프트웨어가 있기 전에 대학이나 관련 연구소에서 컴퓨터를 이용하여 3차원상의 공간에 원하는 가상의 오브젝트를 만들 수 있는 프로그램을 짜는 과정에서 다양한 수학공식과 이론이 동원되었고, 이를 바탕으로 컴퓨터 화면에 탄생된 가상의 오브젝트를 만들 수 있게 되었는데 이 가상의 오프젝트를 바로 GEOMETRY라 합니다. 지금 우리가 사용하고 있는 3D 소프트웨어들은 모두 다 이러한 GEOMETRY 구현 이론에 따라 사용자로 하여금 원하는 것을 쉽게 만들 수 있도록 미리 프로그램화 시켜 놓았고, 그 구현이론에 따라 다양한 모델링 방식을 선보이고 있습니다.  즉 원 클릭으로 3D 소프트웨어에서 아이콘을 클릭해 구(SPHERE)나 여러 기본 입체도형을 만들 수 있는 것도 실제로는 소프트웨어 내에서 다 계산해서 나온 결과의 산물이라는 소리이지요. 옛날 초창기 때 만들어진 원시적인 3D 소프트웨어들을 보면 구나 원뿔 같은 기본 지오메트리를 그릴 때마다 일일이 좌표값을 입력해 줘야 했습니다. 이것이 발전을 하여 간단히 직관적으로 바뀌어 마우스 클릭으로 가능해 진 것입니다.
    이 GEOMETRY 구현은 구현이론에 따라 종류가 나눠지게 되는데 그 구현방식에 따라 POLYGON
    방식이냐 NURBS 방식이냐로 나눠지게 되는 것입니다.

    이미지

     

    (그림1. 폴리곤과 넙스로 구현된 SPHERE GEOMETRY, WIREFRAME 상태)
     

     

     

    이미지

     

    (그림2. WIREFRAME 형태만 다르게 나타나지 렌더링을 걸면, 폴리곤이나 넙스로 만든 SPHERE의 차이가 없음을 알 수 있다. 실제로는 차이가 있지만….)

     

     

    2. POLYGON: 3D OBJECT의 가장 기본형

    POLYGON방식은 가장 많이 쓰이는 모델링 방식이자 거의 GEOMETRY표준으로 쓰이는 방식입니다. 즉 좀 더 비약해서 말하자면 NURBS가 나오기 이전에는 3D에서 GEOMETRY를 만들 수 있는 유일한 방법이기도 했다는 소리입니다.
    여기서 잠시 POLYGON의 사전적 의미를 살펴보면 

    POLYGON: <수학〉 다각형, 다변형(多邊形). a regular ~ 정(正)다각형.

     

    으로 나오는데 이 사전적 의미처럼 POLYGON은 수학적인 면을 기초로 해서 만들어진 2D면이죠.
    여러분 학창시절 수학시간 때 이것을 배웠을 겁니다. 도형의 기본 단위는 점,선,면이고 점과 점 사이를 연결한 것(실제로는 수 많은 일정 개수의 점들의 일렬적으로 늘어선 것)이 선이며 이 선들이 모여 하나의 면을 구성한다는 것을 말이지요. POLYGON도 이런 원리로 이뤄진 2D 면입니다. 이 두께가 없는 2D면들이 모여서 하나의 3D GEOMETRY를 구성하는 것이 바로 POLYGON 방식의 모델링이라 하는 것입니다.

     

    이미지

     

    (그림3. 기본단위인 폴리곤들이 하나로 묶여서 생성된 SPHERE GEOMETRY. 빨간색으로 표시된 것이 기본단위인 폴리곤이다.)

    3D 소프트웨어에서 가장 기본적인 3D OBJECT들이 바로 구(SPHERE), 상자(BOX), 원기둥(CYLINDER)들인데 이 기본적인 오브젝트도 그냥 하나의 ELEMENT로 구성되어진 것이 아닌 이런 기본 2D인 POLYGON들이 모여서 구성된 3차원 GEOMETRY입니다.

    이렇게 POLYGON으로 구성된 3차원 GEOMETRY를 다른 말로 POLYGON MESH라고도 합니다.

    다시 수학적 이야기로 돌아가서 한 면이 형성되기 위해 필요한 최소 점 수는? 바로 3개입니다. 점 3개가 연결되서 면이 형성된 것이 삼각면이지요. 수학에 바탕을 둔 POLYGON OBJECT들도 마찬가지로 최소 POLYGON 단위는 바로 삼각형의 POLYGON입니다.
    그렇기 때문에 어떤 3D POLYGON OBJECT들도 전부다 이 삼각형이 최소 단위인 POLYGON이 연결되어 있는 구조입니다.

     

     

     

     

    이미지

     

    (그림4. 폴리곤 모델링의 가장 기본 단위인 삼각 폴리곤)

     

    그런데 실제로 대부분의 3D 소프트웨어를 구동시켜서 기본 도형을 만들어 보면 기본 폴리곤 단위는 삼각 폴리곤이 아닌 사각 폴리곤으로 구성되어 있음을 알 수 있습니다. 하지만 보이는 것만 그렇게 보이는 것이지 실제로 이 사각 폴리곤들도 2개의 삼각 폴리곤이 붙어서 하나의 사각 폴리곤으로 구성되어 있는 구조입니다. 실제로 옛날 3D 소프트웨어들은 전부다 삼각 폴리곤으로 OBJECT들을 표현했습니다. 그러다 보니 복잡한 물체를 모델링을 할 때 EDGE수가 너무 많이 표현되서 편집할 때 굉장히 복잡해보이는 단점이 생기게 됩니다. 그래서 실제적으로 삼각 폴리곤이 연결된 OBJECT이지만 편집상 편의를 위해 사각 폴리곤을 이룰 경우 가운데 EDGE를 뷰포인트 상에서 생략되게 표현하게 된 것입니다. 각 3D 소 프트웨어들은 이를 옵션에서 조절할 수 있게 해 놨으며 필요에 따라 숨겨진 EDGE를 보이게도 할 수 있습니다. (참고로 3DS MAX의 경우는 4.0버전부터 사각형 폴리곤이 최소단위인 EDIT POLY체계를 도입하였습니다.)

    이미지

     

    (그림5. 겉보기에는 사각 폴리곤으로 이뤄진 SPHERE처럼 보이지만 실제로 모든 EDGE를 선택해보면 삼각폴리곤으로 이뤄저 있음을 알 수 있다. 점선으로 표시된 EDGE가 평상시에는 안보이는 숨겨진 EDGE이다. 그림은 CLICK하면 커집니다)

    암튼 정리하자면 폴리곤 모델링의 요체는 2D의 삼각형 면이 이리저리 모여서 자동차건, 건담이건, 사람이건 만든다는 소리입니다.

     

    3. POLYGON MODELING의 장단점

    일단 모델링이라는 작업 자체가 면을 만들어 내기 위한 작업이고, 이 면들이 모여서 하나의 GEOMETRY 혹은 물체를 만들어 내는 작업이지요.
    앞서 이야기 했지만 POLYGON 모델링은 점 3개가 모인 2D 삼각형인 기본단위인 POLYGON면을 이용해 GEOMETRY를 만드는 것을 의미합니다.
    이 POLYGON을 분석해보면
    점은 VERTEX라 하며 모서리 부분의 선을 EDGE라 하고 면 부분을 FACE라고 합니다.

     

    이미지

    (그림6. 폴리곤의 기본 요소. VERTEX(점), EDGE(모서리 선), FACE(면))
    POLYGON 모델링은 이 3가지 요소를 끌고 당기고 돌출시키고 면을 나누고 해서 하는 것입니다. 그런데 폴리곤 삼각형은 기본이 2D인 평면입니다. 그렇기 때문에 이들이 모여서 하나의 GEOMETRY를 만드는 것은 좋은데 암만해도 평면이다 보니 곡면 모델링 하는데는 한계가 있고 힘든 경우가 많습니다. 실제로 POLYGON을 가지고 어떤 곡면을 만들려고 하면 면을 쪼개고 쪼개고 해서 단위면적당 면을 많이 만드는 수 밖에 없습니다. 그렇기에 완벽한 곡면은 POLYGON 태생상 만들 수 없습니다.
    다음 그림들은 평면인 POLYGON으로 어떻게 곡면을 표현하는지 나타난 그림들입니다. (3DS MAX 기준)

    이미지

    (그림7. 일단 폴리곤으로 이렇게 각진 모델링 덩어리를 만든 다음)

    이미지

    (그림8. MESH SMOOTH명령을 줘서(이 명령어는 3D 소프트웨어마다 이름이 다르다. 3DS MAX기준임) 단위 면적당 면수를 늘려주게 해서 각진부분을 이렇게 곡면처럼 보이게 한다. 그냥 보기엔 완벽한 곡면처럼 보이지만 엄청 확대해 보면 이 모델링도 각이져 있음을 알 수 있다. 이것이 폴리곤의 한계이며 넙스의 경우에는 완전한 곡면이 생성될 수 있다.)
    그렇기에 POLYGON 모델링은 예전에는 각이 만이 들어가는 건축,시뮬레이션 쪽, 그리고 데이터 양이 상대적으로 적게 들어가야 하는 게임분야에서 강세를 많이 띄었고(그러고 보니 넙스로 게임을 만든다는 소리는 못들어 봤군요) NURBS모델링이 개발된 이후 부터는 곡면이 많이 들어가는 유기체나 자동차 모델링쪽은 NURBS를 많이 쓰게 된 이유지요.(지금은 꼭 그런 건 아니지만 여전히 유효한 발언입니다.)
    이런 POLYGON의 특성 때문에 곡면 모델링은 NURBS로는 간단히 만들 수 있는 것도 POLYGON을 이용하면 배 이상의 노력이 들어가는 것이 사실입니다. 그래서 한 때 우리나라에 MAYA열풍이 불었을 때 무조건 NURBS 모델링이 선호되었고 POLYGON 모델링은 3D를 잘 못하는 사람이 하는 것으로 잘못 왜곡되기 까지 했습니다.(과열된 열의가 낳은 일종의 쓸데없는 우월감이었지요)

    그러나 이 POLYGON 모델링이 발전하게 됨에 따라 NURMS라는(3DS MAX에서 쓰이는 용어입니다. 다른 툴에는 또 다른 이름이 존재하지요. 예를 들어 라이트 웨이브에서는 메타넙스라고 합니다.) 새로운 개념의 SUB-DIVISION 모델링이 개발된 이후 POLYGON 모델링은 비약적으로 발전하게 되었고 오히려 지금은 이 모델링 방식이 선호받게 되었고 NURBS는 왜 써야 하나? 까지 유저들이 생각할 정도로 다시 POLYGON 모델링 방식이 다시 선호받게 되는 요상한? 현상까지 벌어지게 되었지요.(유행은 돌고 도는 법…..) 이 SUB-DIVISION방식은 3회째 자세하게 설명하도록 하겠습니다.

    일단 POLYGON이 곡면이나 정교한 모델링 하는 데 NURBS보다 힘들지만 일반 3D 유저들이나 실무진 쪽에서 선호를 하는 이유는 NURBS에 비해 데이터 용량이 적고 가볍기 때문입니다. 지금 PC 성능이 많이 나아졌고 고성능화 돼서 워크 스테이션을 따라잡긴 했지만 아직도 PC에서 NURBS를 막 쓰기에는 상당히 무리가 가는 현실입니다. 그 만큼 NURBS 데이터는 무겁고 용량이 많이 나가서 자본 집약이 가능한 영화나 실제 정확한 데이터가 필요한 CAD 쪽에서 선호되지 게임이나 일반 3D쪽에서는 다소 꺼리는 추세입니다. 이에 대해서는 NURBS를 설명하는 다음 장에서 자세하게 다루도록 하겠습니다.
    이렇게 데이터 자체가 가벼워서 폴리곤이 선호되는 탓도 있지만 폴리곤 모델링이 선호되는 또 다른 이유는 NURBS에 비해 편집이 용이하기 때문입니다.
    보통 3D 소프트웨어를 가지고 하는 모델링 방식은 일반 돌이나 석고를 가지고 조각하는 것 처럼 전체 덩어리를 먼저 잡고 세부적인 디테일로 가는 것이 정석인데, NURBS의 특성상 세부적인 디테일을 다 잡아놨는데, 전체적으로 수정할 일이 생긴다면? 이것은 완전히 사람 돌게 만드는 일입니다. 물론 세부 디테일 다 잡아 놓고 수정들어가는 것은 폴리곤 모델링도 힘들긴 마찬가지지만(특히 MESH수가 많은 것들) NURBS의 경우는 차라리 새로 만드는 것이 더 빠를지도 모를 사태까지 벌어지기 때문이지요(아무리 그래서 새로 만드는 것보다는 수정하는 것이 더 빠르겠지요? ^^)
    어짜피 이것에 대해 설명하려면 NURBS에 대해서도 SUB-DIVISION에 관해서도 대충 알아야 이해가 가는 내용이니, 일단 여기서는 NURBS보다 POLYGON이 데이터 량이 훨씬 가볍고 일단 모델링 완성 후 편집이 용이하기 때문에 선호되고 있다는 정도만 알아두시면 됩니다.