Navier-Stokes 방정식

Thumbnail of Fluid

이번 포스트에서는 유체 시뮬레이션 기법을 다룬다. 물, 불, 폭발 등은 매우 복잡한 현상을 나타내며, 애니메이터가 움직임을 수작업으로 지정하기에는 너무 복잡하다. 유체 시뮬레이션은 많은 연산량을 필요로 하기 때문에 영화에서 적극적으로 도입되어 왔으나, 그럴듯한 근사도로 실시간으로 연산할 수 있는 기법들이 최근 개발되고 있는 추세이다. 이 포스트는 난해한 유체 시뮬레이션 분야에 입문하기 위한 과정으로, 유체 방정식인 Navier-Stokes 방정식을 소개한다. Read the rest of this entry »

Comments

Meshless Deformations Based on Shape Matching

thumbnail of meshless deformation

최근 들어 게임에서는 좀 더 다이나믹한 시각효과를 얻기 위해 물리 기반 애니메이션 기법을 점차 도입하고 있다. 그러나 물리 시뮬레이션은 많은 연산량을 필요로 하기 때문에 게임과 같은 실시간 애플리케이션에서는 제한적으로만 사용되며, 변형되는 물체(deformable object)는 특히 더 많은 연산을 필요로 하므로 거의 사용되지 않는다. 그러나 이 포스트에서 소개할 Meshless deformations based on shape matching논문에서는 변형되는 물체를 실시간으로 시뮬레이션할 수 있는 매우 빠른 방법을 제안한다. 게다가 이 방법은 미리 연산하는 과정(precomputation)도 없다! Read the rest of this entry »

Comments

Mass-spring 구조

가상 세계 안에서 자연스럽게 움직이는 물체를 표현하기 위해 물리적 지식을 동원하는 방법이 많이 쓰인다. 튕겨 다니는 돌덩이 같은 단순한 운동부터 최근에는 옷감, 머리털, 불, 물 등을 시뮬레이션하는 상당히 복잡한 기법까지 개발되어 있다. 이번 포스트에서는 물리 기반 시뮬레이션의 가장 기본이 되는 mass-spring구조를 다룬다. Read the rest of this entry »

Comments

Precomputed Radiance Transfer

Thumbnail of precomputed radiance transfer

지난 Spherical harmonics irradiance 포스트에서는 영역 광원을 spherical harmonics로 근사함으로써 부드러운 조명을 빠르게 렌더링하는 방법에 대해 설명하였다. 그러나 그 방법은 그림자를 만들지 못하기 때문에 현실감에 한계가 있다. 이번 포스트에서는 영역 광원에 대한 그림자 뿐만 아니라, 물체에서 반사된 빛이 다시 조명 역할을 하는 간접 조명, 투명하게 비쳐 보이는 물체까지 실시간으로 렌더링할 수 있는 Precomputed Radiance Transfer(PRT)라는 기법을 소개한다. Read the rest of this entry »

Comments

GPU를 이용한 양면 굴절

thumbRefraction.gif

레이 트레이싱은 복잡한 물체를 지나면서 굴절되는 빛의 궤적을 효과적으로 시뮬레이션한다. 그러나 레이 트레이싱은 매우 많은 연산량을 필요로 하기 때문에 실시간 애플리케이션에서는 적합하지 않다. 굴절 물체를 실시간으로 표현하기 위한 타협책으로 배경 이미지를 일그러뜨려서 굴절 효과를 모사하는 방법이 있다 [Oliviera00]. 이 방법은 GPU로 효과적으로 구현되어서 빠르게 수행되지만, 단면 굴절만을 표현할 수 있다는 한계가 있다. 레이 트레이싱 이미지(그림 1c)와 비교할 때, 단면 굴절은 그림 1a에서와 같이 상대적으로 심심한 결과를 나타낸다. 이 글에서는 GPU를 이용해 이미지-공간(image-space)에서 양면 굴절을 모사하는 방법에 대해 설명한다. Read the rest of this entry »

Comments

Spherical Harmonics Irradiance

Thumbnail of irradiance maps

컴퓨터그래픽스는 빛을 다루는 기술이다. 그런데 실시간 그래픽스에서 가장 표현하기 어려운 것이 역설적이게도 빛이다. 부드러운 느낌을 주는 영역 조명(areal light)을 표현하는 것은 특히 많은 연산량이 필요한 것으로 여겨지고 있는데, 수년 전부터 제한된 조건 아래에서 영역 조명을 받는 물체를 표현하는 매우 빠른 방법이 소개되고 있다. 여기서는 실시간 영역조명 기술의 기초가 되는 irradiance environment maps에 대해서 다룬다. Read the rest of this entry »

Comments (1)

텍스처 합성 입문

Thumbnail of introduction to texture synthesis 

게임을 하다 보면 텍스처 맵이 바둑판 모양으로 늘어선 모습을 볼 수 있다. 벽돌이 붙어있는 모양이라면 모르겠지만, 흙바닥이나 자갈밭이 일정하게 같은 모양으로 되어있다는 것은 어쩐지 부자연스럽다. 왜 이런 모양이 나오는 것이며, 극복할 수 있는 방법은 없을까? 텍스처 합성 분야에서는 작은 이미지를 부풀릴 때 생겨나는 문제들에 대해 다룬다. Read the rest of this entry »

Comments

About

아름다운 가상, 그 끝없는 도전

왜 그런것일까? 사람들은 시대와 신분을 막론하고 환상을 꿈꾼다. 지옥이나 천당과 같은 사후세계, 엘프와 드워프가 나오는 북유럽 신화의 세계, 우주 저편에서 벌어지는 별들의 전쟁. 추상적인 배열로 가득찬 음악의 세계. 지금 여기에 있는 것이 아닌, 현실 저편의 것에 대한 상상력은 인간이 아마 태초부터 갖고 있었을 예술 활동의 원동력이 아닐까. 그래서 어떤 이는 예술을 아름다운 가상이라고 했다.

시각적 환상에 대한 표현욕구는 회화, 조각, 건축 등의 영역에서 드러났다. 현대에 가까워지면서 그 중 회화의 비중이 커져가는데, 건축은 지나치게 추상적이고, 조각은 재현의 충실성에서 벗어나기 어려운 반면, 회화는 과감한 상상력을 섬세한 디테일로 담아낼 수 있었기 때문이다.

회화 기법은 오래 전 완성되어 500년 전에도 이미 생동감이 넘치는 표현을 할 수 있었다. 현대의 화가가 아무리 발달된 화법을 사용한들 미켈란젤로보다 특별히 더 생기있는 그림을 그리기는 힘들 것이다.

atom

기술이 발달함에 따라, 사람들은 움직이는 그림을 그릴 수 있게 되었다. 움직이는 그림은 초당 십수장의 그림을 빠르게 넘겨야 하므로, 그림을 그리는 데 드는 수고가 이만저만이 아니다. 그래서 작업의 효율성을 위해, 움직이는 그림을 그릴 때에는 디테일을 어느정도 희생하는 화법을 택해야 했다.

monsters

이 기법으로 만들어진 그림들도 충분히 매력적이긴 했지만, 사람들은 더 다양한 표현을 원했다. 부드러운 조명이 드리운 피부, 자연스레 흩날리는 머릿결이나, 뭉게뭉게 피어나는 연기와 같은 생생한 효과를 위해 어마어마한 노력을 들여 그림을 그리는 대신, 사람들은 컴퓨터를 부리기 시작했다. 사람이 컴퓨터에 어떠한 방식으로 그림을 표현하고 싶은지 지시를 내려놓으면, 컴퓨터가 실제로 색칠하는 일을 담당한다. 충직하지만 융통성없는 하인인 컴퓨터에게 현명한 지시를 내리는 법을 고안하는 것은 만만치 않은 일이지만, 기법을 도입한지 불과 20년만에 컴퓨터 없이 영화나 애니메이션을 만드는 것은 생각하기 힘든 시대가 되었다. 그리고 그 환상의 효과는 매우 강력해서, 현실과 대등한 디테일을 지닌 이미지를 연출하기에 이르렀다. 작업의 효율성을 높이는 마무리 과정만 완료한다면, 시각표현 기법의 역사는 끝나는 것일까?

wolfenstein 3d

1992년, 울펜슈타인 3D라는 게임과 함께 새로운 시대가 왔다. 투박하긴 하지만, 이것은 지금까지 구경만 해왔던 시각적 가상의 표현 기법과 근본적으로 다른 방법이었다. 이 게임은 가상으로 표현되는 영상세계에 사건이 개입되도록 만들어져 있다. 누군가가 입력을 가하게 되면 즉각적으로 영상이 반응한다. 사건이 개입될 수 있다는 것은, 인터넷이 연결되고, 만남과 이별을 하고, 정치를 하고, 나들이를 할 수 있다는 것을 뜻한다. 다시 말해, 인간이 스스로 창조한 세계의 주민이 될 수 있다는 뜻이다.

그러나 거창한 수사와는 달리, 아직 실시간 그래픽이 표현할 수 있는 것은 별로 없다고 해도 과언이 아니다. 표현력이 부족하다는 것은 오프라인 렌더러가 수십 분에 걸쳐 여유있게 그리는 그림을 실시간 렌더러는 수십 밀리초에 그려야 한다는 시간상의 불리함 이상의 것이다. 영화에서는 모든 것을 계획대로 준비해 놓는다. 그러나 실시간에서는 무슨 일이 일어날지 모르고, 모든 상황에서 자연스럽게 반응해야 한다. 이것은 문서편집기로 극본을 열람하는 것과, 실시간 자연어처리 에이전트와 대화하는 것의 차이에 맞먹는다. 시간이 흘러서 현재 영화에 쓰이는 기법을 모두 실시간으로 구현한다고 하더라도, 사람들은 몇 분 돌려보고는 금방 생생함이 부족하다고 느낄 것이다.

반대로 말하면, 실시간 컴퓨터 그래픽스에는 어마어마한 발전가능성이 내재해 있다는 말도 된다. 지난 10년간 성장해 온 실시간 기술의 흐름을 상기해 본다면, 앞으로의 10년의 변화 역시 매우 혁신적일 것임을 예감할 수 있을 것이다. 10년이면 강산이 변한다고는 하지만, 그리 먼 미래는 아니다.

태동하는 실시간 CG, 변화의 문턱에서

third life

CPU와 GPU의 성능이 향상됨에 따라 실시간 그래픽스 응용프로그램에서 텍스처가 입혀진 삼각형을 렌더링하는 것은 더이상 도전적인 문제가 되지 않는다. 이제 오브젝트의 삼각형 수를 늘리는 것만으로는 눈이 높아진 사용자의 기대에 부응하는 매력적인 실시간 3차원 애니메이션을 연출할 수 없게 되었다. 이를 위해서는 캐릭터 애니메이션, 물리 시뮬레이션, 고급 렌더링 등 더 넓은 분야의 CG기술들이 응용되어야 하며, 이것은 그래픽스 개발자가 더 많은 지식을 익혀야 함을 의미한다. 변화는 우리 앞에 놓여 있다.

EveryCG는 변화를 기회로 삼을 CG개발자를 독자로 한다. 컴퓨터그래픽스 분야에서 소개된 기술들 중 응용가능성이 높지만 국내에 널리 알려지지 않은 기술들을 소개한다. 범위를 제한하지는 않지만, 게임과 같은 실시간 그래픽스 응용프로그램과 관련있는 기술을 위주로 소개한다. 새로운 기술을 제안하는 논문들은 기존 기술에 익숙한 독자들을 대상으로 하므로 독해에 많은 배경지식이 필요하다. EveryCG는 배경지식이 부족한 독자들도 기술의 요점을 가능한한 쉽게 이해하고, 원문을 읽는 데에 길잡이가 되는 것을 목표로 한다.

그렇지만 설명의 편의상 일정한 수준의 배경지식을 갖춘 독자를 가정할 것이다. DirectX나 OpenGL등의 그래픽스 라이브러리는 다뤄본 경험이 있어야 한다. 물론 이에 수반하는 쉐이딩과 프로젝션 등의 그래픽스 기초개념을 이해하고 있는 것도 필수이다. 고등학교 자연계열 수준의 수학 지식은 이 사이트에서 요구하는 최소한의 것이다. 다변수미적분, 선형대수, 수치해석 등의 학부 기초과정에 해당하는 수학은 되도록 풀어서 설명할 것이지만, 결국 그래픽스 알고리즘을 이해하기 위해서는 알아야 하는 내용들이므로, 관련 서적이나 인터넷의 자료를 참고하여 익혀야 한다.

여기 컴퓨터를 통해 새로운 세계를 창조하고 싶은 소박한 꿈을 안고 노력하는 이들과 연대하고 싶은 희망을 담아 이 사이트를 연다.

Comments