OpenGL 11

[OpenGL-11] object Viewer 구현하기 (3)

■ Object Viewer 구현하기 (3) 안녕하세요. 오늘은 obj viewer 구현하기 세번째 포스팅을 진행하겠습니다. 이번 포스팅이 이 프로그램의 마지막 포스팅이 될 것 같네요 ! 지난 포스팅까지는 obj파일로 표현된 객체를 구현하고, 이를 화면 중앙에 적절한 크기로 위치시키는 것 까지 진행하였습니다. 그리고 카메라와 콜백함수까지 구현하였죠. 오늘은 재질과 조명 효과를 구현하고 프로그램을 마무리해보겠습니다. 그럼 시작해보겠습니다. ● 재질 및 조명 이번 포스팅의 첫 번째는 재질입니다. 그리도 두 번째는 조명이죠 사실 재질과 조명은 하나로 설명하고 구현하는 것이 더욱 좋은데요. 자세한 세부 설명 및 개념은 아래 'Lighting' 포스팅을 참고하시면 되겠습니다. http://zamezzz.tisto..

OpenGL 2017.05.27

[OpenGL-10] object viewer 구현하기 (2)

■ Object Viewer 구현하기 (2) 안녕하세요. 오늘은 지난포스팅에 이어 obj viewer 구현하기 두번째 포스팅을 진행하겠습니다. 지난 포스팅에서는 obj파일로 표현된 객체를 구현하고, 이를 화면 중앙에 적절한 크기로 위치시키는 것 까지 진행하였습니다. 오늘은 지난 포스팅에서 말씀드린 것 처럼 구체화된 오브젝트를 조명, 모델 효과를 통해 좀 더 이쁘게(?) 만드는 것에 대한 내용입니다. 카메라, 조명, 재질, 콜백함수 이렇게 4가지 효과를 적용하여 그럴싸하게 만들어봅시다. 그럼 시작해보겠습니다. 1. 카메라(Camera) 첫 번째는 카메라입니다. 화면에 나타내는 방법은 크게 2가지가 있죠. 객체를 카메라의 view 내로 움직이는 방법과 카메라를 객체를 향해 움직이는 방법입니다. 여기서는 카메..

OpenGL 2017.05.17

[OpenGL-9] object viewer 구현하기 (1)

■ Object Viewer 구현하기 (1) 안녕하세요. 오늘은 지난시간까지 배운 내용을 바탕으로 간단한 viewer를 함께 구현해봅시다 ㅎㅎ obj viewer라고 하니 뭔가 어려워보일수도 있는데요. 전혀 새로운 것이 아닌 매우 간단한 프로그램입니다. object파일 형식으로 된 obj파일을 입력받아 view해주는 간단한 프로그램이에요. 이번 포스팅은 2번에 나뉘어 진행하고자 합니다. 첫 번째는 obj란 무엇인지와 프로그램의 목차, 그리고 view하는 것에 대한 것이고요. 두 번째는 viewer에 띄운 오브젝트를 좀 더 이쁘게(?) 만드는 것에 대한 내용입니다 그럼 함께 시작해보겠습니다. 1. Obj File Format이란 obj는 가장 오래되고, 기본적으로 사용되는 3차원 모델 표현 파일입니다. 이..

OpenGL 2017.04.06

[OpenGL-8] Lighting

안녕하세요. 오늘은 Lighting에 대해서 정리해보겠습니다. 말 그대로 그래픽에서의 빛에 대한 개념이라고 생각하시면 됩니다. 순서는 다음과 같습니다. 8.1. Light Sources 8.2. Surface Type 8.1 Light Sources 우리말로 번역하자면 광원이라는 뜻입니다. 빛이 시작되는 곳이라고 생각하시면 됩니다. 이 Light Source에도 여러 가지 종류가 존재합니다. 빛은 그 종류가 다양하기 때문이죠 ● Point light sources 첫 번째 광원은 '점광원'입니다. 하나의 점에서부터 빛 에너지가 시작됩니다. 아래 사진을 보시죠 하나의 점에서부터 시작된 빛이 객체에 직접 영향을 끼치고 있습니다. 점 광원에서 가장 중요한 것은 위치와 방향, 그리고 뿜어져 나오는 빛의 색입니다..

OpenGL 2017.03.16

[OpenGL-7] Projection Matix

안녕하세요. 일곱번째 포스팅입니다 ^^ 오늘은 Projection Matrix라는 개념에 대해서 정리해볼까 합니다. * 요구사항 * 7.1. Projection Matrix 7.2. Parallel Projection 7.3. Perspective Projection 7.1 Projection Matrix Projection Matrix가 무엇일까요? Projection이란 투사, 투영이라는 뜻입니다. 쉽게 말해 원근감을 어떻게 표현할 것인지에 대한 부분을 정하는 부분이라고 생각하시면 되요. 이후 3차원 좌표를 우리의 2D 모니터로 투영시키는 것이 Projection Matrix의 역할입니다. 한번 투영된 이후에는 z 값이 사라지므로 역산을 할 수는 없습니다. 크게 2 가지의 Projection으로 나뉘..

OpenGL 2016.12.31

[OpenGL-6] Model View Matrix

안녕하세요. 여섯번째 포스팅입니다 ^^ 지난번 cube는 모두 잘 만들어보셨나요? 오늘은 Model View Matrix라는 개념에 대해서 정리해볼까 합니다. * 요구사항 * 6.1. Model View Matrix 6.2. Local to World Coordinate Transform 6.3. Camera Positioning 6.4. World Frame to Camera Frame 6.1 Model View Matrix Model View Matrix란 개념에 대해 알기 전 OpenGL에서 어떻게 객체를 표현하는지 다시 볼게요. 실제 객체가 Output되기까지 (우리 눈에 보일 때 까지) 많은 과정을 거치는데요. 그 중 하나의 과정이 바로 Model View 과정입니다. 전체 과정은 다음과 같습니..

OpenGL 2016.11.13

[OpenGL-5] Cube Control Program

안녕하세요. 다섯번째 포스팅입니다 ^^ 오늘은 드디어 cube를 만들고, 여러 콜백함수를 통해 이를 제어하는 프로그램을 만들거에요. 먼저 간단하게 요구사항부터 정리해보고, 이 후에 프로그래밍을 진행해봅시다~* 요구사항 * 5.1. Color cube 만들기 5.2. 키보드 콜백을 통한 cube 회전 5.3. 마우스 콜백을 통한 회전축 변환 5.4. GLSL 연결 5.1 Color cube 만들기 먼저, Color cube를 만들어 봅시다. 지금까지 배운 개념을 활용한다면, cube를 만드는 것은 어렵지 않습니다! 다음 순서로 진행할 거에요. cube 데이터 초기화 -> face 구성 -> cube 구성 가장 처음으로 실시할 것은 Cube의 데이터를 초기화 하는 것입니다. Cube의 각 면은 아래 사진처럼..

OpenGL 2016.11.02

[OpenGL-4] Callback and Transformation

안녕하세요. 네번째 포스팅입니다 ^^ 오늘은 cube를 만들고, 여러 콜백함수를 통해 이를 제어하는 프로그램을 만들예정이었지만... 그 전에 좀 더 확실히 하기 위해 콜백함수와 여러 변형에 대해서 알아보려고 합니다. 이후에는 정말로 프로그램을 만들어 봅시다~ 4.1 Callback Callback 함수에 대해서 들어보신적 있으신가요? 어느 언어를 사용하던지 꼭 듣게되는 녀석입니다 opengl의 glut라이브러리 역시 callback 함수를 가지고 있는데요. Main event loop에서 여러 callback함수를 제어합니다. 그럼 먼저 callback함수의 종류에 대해 알아보겠습니다. * Display() : 윈도우가 그려질 때 * Idle() : 아무 이벤트가 없을 때 * Keyboard(unsign..

OpenGL 2016.10.30

[OpenGL-3] GLSL이란

안녕하세요. 세번째 포스팅입니다 ^^ 오늘은 지난번에 말씀드린대로 GLSL에 대해서 알아보겠습니다! 3.1 GLSL이란 GLSL이란 무엇일까요? GLSL은 openGL Shading Language의 약자로 opengl에서 사용하는 쉐이딩 언어입니다. 즉, OpenGL의 쉐이더를 컨트롤할 수 있는 간략하고 효율적인 언어입니다. 언어라고 하니 어려우실 것 같나요? glsl은 c언어와 매우 비슷해서 어렵지 않아요. c언어와 같이 다양한 기능을 제공 합니다. c언어와의 차이점은 포인터, 재귀, 동적할당을 제공하지 않는다는 점입니다. 그 외 연산(벡터, 행렬 등), 구조체, 함수, i/o 등등 다 같습니다 ㅎㅎ 예제를 볼까요 #version 430 uniform mat4 u_ModelView; in vec3 P..

OpenGL 2016.10.24

[OpenGL-2] OpenGL 시작하기

안녕하세요. 오늘부터 본격적으로 코드와 함께 OpenGL을 다시 공부하겠습니다. 오늘의 순서는 대략적으로 아래와 같습니다. 2. 1. 렌더를 위한 3가지 접근방법 2. 2. OpenGL Version Setting 2. 3. VBO & VAO 2.1 렌더를 위한 3가지 접근방법 렌더링을 위해 크게 3가지 접근방법으로 나누어 볼 수 있습니다. 예제 이미지와 함께 보겠습니다. 위와 같은 이미지를 그리기 위해서는 어떻게 해야 할까요? 저의 기억으로는 3가지 방법으로 나누어 볼 수 있습니다. 1. Immediate mode 2. Retained mode 3. GPU based mode 먼저 Immediate mode는 하나하나 계산해서 정보를 얻자마자 즉시 그리는 방법입니다. 이 방법은 매우 작은 일이 반복되는..

OpenGL 2016.10.20