inhibitor.log development log

inhibitor.log

development log

06. Transformation

WebGL 튜토리얼 목록

지금까지는 화면에 어떤 모델을 그리고 싶을 때, 우리가 작성한 클래스들 중 MeshupdateVertexBuffer 메소드(또는 이 메소드가 이용하는 gl.bufferData API)를 사용하여 GPU에 모델의 vertex attribute 데이터를 전달했습니다. 우리가 접하는 많은 그래픽 어플리케이션에서는 매 프레임마다 화면의 물체들이 움직입니다. 하지만 매 프레임마다 새로운 데이터를 GPU에 전달하는 것은 매우 비효율적인 작업일 것입니다. 특히, 모델의 형태 자체가 바뀌는 것이 아니라 단순히 화면 상에서 돌아다닐 뿐이라면, 다른 방법으로 이것을 구현할 수 있지 않을까요?

불꽃놀이 (fireworks)

문제

여의도에서 열리는 불꽃축제에는 매년 수많은 사람들이 몰린다. 하늘에서 다양한 색깔의 불꽃이 터지는 광경을 사진으로 남기면 정말 멋있지 않을까?

하늘에 N개의 불꽃이 동시에 터질 때, M명의 사진가들이 사진을 찍었다. 각 사진은 서로 다른 각도에서 촬영되었기 때문에, N개의 불꽃 중 일부만을 담고 있다. 그러나, 사진에 같은 색깔의 불꽃이 너무 많으면 단조롭기 때문에 같은 색의 불꽃이 절반보다 많이 담겨 있는 사진을 구별하고자 한다. N개의 불꽃 색깔과 M장의 사진들이 주어질 때, 단조로운 사진을 구별하는 알고리즘을 생각해 보자.

05. Texture

WebGL 튜토리얼 목록

텍스쳐

OpenGL Wiki - Texture

텍스쳐(Texture)는 그래픽스 라이브러리에서 보통 이미지를 부르는 단어로 쓰입니다. 실제로, 3D 게임들의 화면에 그려지는 것들은 단순한 3D 모델들일 뿐입니다. 하지만, 이 모델들에 적당한 이미지를 덮어씌우면 마치 현실에 존재하는 물체와 같이 보이게 됩니다.

화물열차 (cargo-trains)

문제

이웃한 레일 위에 놓인 두 화물 열차 사이에 짐을 옮기려고 한다. 화물 열차는 다양한 길이를 가지 컨테이너가 여러 개 연결된 형태인데, 컨테이너가 놓인 칸이 가장 많이 겹치도록 두 화물 열차를 겹쳐 놓으면 짐을 옮기는 과정이 수월하다. 처음에 두 화물 열차는 아래 그림과 같이 첫 칸의 앞부분이 서로 마주보며 같은 선에 위치하고 있다. 화물 열차 A는 가만히 있고, 화물 열차 B를 움직여 컨테이너가 놓인 칸이 가능한 많이 겹쳐지게 하려고 한다.

Union-Find 자료구조

Union-Find 자료구조는 많은 원소가 여러 개의 서로소 집합(서로 겹치지 않는 집합)으로 나누어진 상태를 표현하기 위한 자료구조입니다.