OpenGL 기초 7: 조명, 재질, 법선

출처: http://soen.kr/lecture/library/opengl/opengl-9.htm 31. 조명 개요 OpenGL은 조명을 성격에 따라 다음 세가지로 분류한다. 주변광(Ambient) : 도처에 존재하는 빛이다. 광원에서 나온 빛이 여러 경로로 반사 및 재반사되어 방향성을 잃어버린 빛이다. 사방에서 물체의 모든 면에 골고루 비쳐지며 밝기도 일정하다. 분산광(Diffuse) : 한 방향으로 들어와서 물체의 표면에 반사되어 여러 방향으로 흩어지는 빛이다. 빛을 받는 부분이 더보기…

OpenGL 기초 6: 행렬, 출력 영역의 제한

출처: http://soen.kr/lecture/library/opengl/opengl-8.htm 29. 행렬 OpenGL은 각종 변환에 행렬을 많이 사용한다.  행렬의 수학적 특성을 잘 이용하면 빠른 속도로 연산을 수행할 수 있다. OpenGL이 변환에 사용하는 행렬은 4*4 크기의 행렬이다. 3차원 공간은 3개의 좌표로 구성되지만 연산의 편의를 위해 한차원 더 높은 4*4 행렬을 사용한다. 메모리에서 4*4 행렬을 표현하는 방법은 여러 가지가 있는데 일단 다음 더보기…

OpenGL 기초 5: 변환(관측, 모델링), 투영(직교, 원근), 뷰포트

출처: http://soen.kr/lecture/library/opengl/opengl-8.htm 24. 변환 – 개요 3차원 공간에 배치된 물체의 전체적인 변환 과정은 다음과 같다. OpenGL은 변환 단계에서 수행되는 복잡한 연산들을 행렬로 처리한다. 모든 변환 함수의 연산 결과는 현재 행렬에 반영된다. 좀 더 정확하게는 현재 선택된 행렬 스택의 최상단 행렬인데 일단은 현재 행렬이라고 생각하면 된다. 다음 함수는 행렬 연산의 목적지를 지정한다. void 더보기…

OpenGL 기초 4: 버텍스 배열, 인덱스, 색상 배열, 인터리브 배열, 출력 목록

출처: http://soen.kr/lecture/library/opengl/opengl-7.htm 19. 버텍스 배열 OpenGL은 배열로 정점의 집합을 정의하는 방법을 공식적으로 지원한다. 먼저 다음 함수를 호출하여 배열을 사용하도록 설정한다. void glEnableClientState(GLenum cap); 배열을 사용하는 것은 OpenGL 서버인 그래픽 카드의 설정과는 상관이 없고 그래픽을 그리는 클라이언트인 CPU와 상관이 있으므로 glEnable 함수를 사용하지 않는다. 어떻게 그릴 것인가의 문제가 아니고 어떻게 정보를 전달할 더보기…

OpenGL 기초 3: 3차원 좌표, 와인딩 & 컬링, 폴리곤 모드, 예제(주전자, 도넛 등) 호출

출처: http://soen.kr/lecture/library/opengl/opengl-6.htm 15. 3차원 좌표 OpenGL의 3차원 공간은 다음과 같은 좌표계로 정의되어 있다. x 축은 오른쪽으로 증가하고 y축은 위쪽으로 증가하며 z축은 사용자 반대쪽으로 증가한다. 클리핑 영역, 즉 좌표의 범위는 x, y, z 모두 -1 ~ 1 사이이다. 원점은 (0, 0, 0)이고 사용자 가까운 쪽의 왼쪽 아래는 (-1, -1, -1)이고 사용자와 먼쪽의 더보기…

OpenGL 기초 요약 2: 블렌딩, 앤티앨리어싱, GLUT

출처: http://soen.kr/lecture/library/opengl/opengl-5.htm 11. 블렌딩 블렌딩은 색상 버퍼에 이미 기록되어 있는 값과 새로 그려지는 값의 논리 연산 방법을 지정한다. 다른 모드를 사용하면 두 값을 논리적으로 연산한 결과를 써 넣음으로써 특이한 효과를 낼 수 있다. 블렌딩 기능은 glEnable(GL_BLEND); 로 사용한다. 블렌딩은 색상 버퍼에 이미 기록되어 있는 값 D와 새로 기록되는 값 S와의 연산을 정의한다. 연산 방법은 더보기…

OpenGL 기초 요약 1: 기본 타입, 색상 변경, 점, 선, 사각형, 다각형

출처: http://soen.kr/lecture/library/opengl/opengl-4.htm 1. 기본 타입 2. 함수 형식 glVertex3i(1,2,3); int arv[]={1,2,3}; glVertex3iv(arv); 3차원상의 좌표는 x, y, z 세가지 값으로 표현하는 것이 원칙적이되 분수 표현을 위해 w로 분모를 지정할 수 있다. 또 평면상의 정점인 경우는 z 좌표를 생략하고 x, y만 밝힐 수도 있다. w가 생략되면 1로 간주되며 z를 생략하면 0으로 간주한다. 더보기…

자바스크립트: 캔버스(Canvas) 에서 픽셀 단위로 다루기

모질라 재단 ‘픽셀 다루기’ 링크 data 속성은 원시 픽셀 데이터를 보기 위해 액세스할 수 있는 Uint8ClindedArray를 반환합니다. 각 픽셀은 네 개의 1바이트 값(적색, 녹색, 파란색, 알파, 순서대로 “RGBA” 형식)으로 표현됩니다. 각 색상 구성요소는 0 ~ 255 사이의 정수로 표시됩니다. 각 구성요소는 배열 내에서 연속적인 색 바이트 값이 할당되며, 최상단 좌측 더보기…

자바(Java)에 프로세싱(Processing) 라이브러리 Minim을 설치하는 방법 + 예제: 주파수 그래프가 있는 오디오 플레이어

노래 파일을 불러와 500 구간으로 쪼갠 뒤 각각 구간의 평균 주파수를 리스트에 삽입해 사운드클라우드의 플레이어 비슷한 효과를 내는 예제입니다. 이 기능을 사용하려면 Minim이라는 Processing기반의 라이브러리가 필요합니다. (참고: Processing: 미디어아트 프로그래밍 언어 기초)   Minim을 사용해 음악 파일의 주파수를 분석  주파수 분석은 고속 푸리에 변환(FFT) 방식.  Minim은 음악 재생, 분석과 관련하여 다양한 기능을 더보기…

Processing: 미디어아트 프로그래밍 언어 기초

프로세싱(Processing)은 멀티미디어 아트, IoT 장비 등을 다루기 위한 특수 프로그래밍 언어입니다. JVM 가상 머신을 기반으로 하였기 때문에 자바와 많은 부분이 유사합니다. 자바 초급 수준의 프로그래밍을 학습하였다는 전제 하에 기초적인 부분만 살펴보도록 하겠습니다. 직접 프로세싱 IDE 프로그램을 설치 후 실행하는 방법 또는 온라인에서 실행해불 수 있는 사이트에서 작성 후 실행하는 방법 더보기…