본문 바로가기

College Computer Science/Computer Graphics9

[Graphics] 컴퓨터 그래픽스 공부과정, 그리고 알게 된 것 나는 2019년 3월부터 컴퓨터 그래픽스에 관심을 가지고 공부하기 시작했다. 2년이 넘는 시간동안 (지속적이진 않았지만) 그래픽스를 나름대로 공부한 과정과 그 과정에서 알게 된 것들을 정리해보는 시간을 가지려고 한다. 그래픽스 전공 교수님들과 상담 MAYA에서 pymel, cmds로 간단한 스크립트 모델링 컴퓨터 그래픽스에 대한 리서치 :: 기본 웹서치, 포프, 채용공고 등 쉐이더 GLSL 공부 :: 생활코딩 이을, thebookofshaders OpenGL 공부 :: Computer Graphics Programming in OpenGL 대학교 컴퓨터 공학 수업 :: 프로그래밍언어론, 그래픽프로그래밍설계, 컴퓨터그래픽스, 머신러닝 머신러닝 :: 비주얼라이제이션 연구실 학부연구생 컴퓨터 그래픽스에 관심을.. 2022. 8. 29.
[컴퓨터그래픽스] 기말고사 대체 레포트 1 : Control Point로 Bezier Curve 구성 계산하기 2 : Liang-Barsky 알고리즘으로 Line Clipping 파라미터 값 계산 3 : 3차 Bezier Curve 4 : 3차 Bezier Curve 5 : Homogeneous Coordinate의 개념과 사용 이유 6 : Ray-Tracing 알고리즘 시선 방정식 7 : Open Uniform B-spline Curve와 Bezier Curve 8 : 터틀 그래픽과 symbol 2021. 4. 3.
[컴퓨터그래픽스] 중간고사 대체 레포트 1 : Raster Scan Display와 Random Scan Display의 특징과 구조 2 : 사각형을 직선(일차식의 그래프)을 축으로 하여 회전하기 (matrix 활용 계산) 3 : 3D viewing 좌표계 순서 (Modeling - World - Viewing - Projection - Normalized - Device Coordinates) 4 : 좌표계 변환 계산 (World -> Viewing) (matrix 활용 계산) 5 : Ray-Tracing, Distributed Ray-Tracing 6 : Shading의 종류 - flat, gouraud, phong 2021. 4. 3.
[컴퓨터그래픽스] 키보드 마우스 입력을 통한 화면 변경 #include #include #include #define PI 3.141592 #define CCW 0 #define CW 1 using namespace glm; vec3 my_triangle1[3] = { vec3(-10.f, 0.f, 0.f), vec3(10.f, 0.f, 0.f), vec3(0.f, 10.f, 0.f) }; // CCW vec3 my_triangle2[3] = { vec3(10.f, 0.f, 0.f), vec3(-10.f, 0.f, 0.f), vec3(0.f, 10.f, 0.f) }; // CW vec3 faceNorm[2]; vec3 eyeVec; GLfloat angle[2]; GLint culling = 3; // nothing first GLint isTriangle1.. 2021. 4. 3.
[컴퓨터그래픽스] openGL 사용하지 않고 culling 수행하기 #include #include #include #define PI 3.141592 #define CCW 0 #define CW 1 using namespace glm; vec3 my_triangle1[3] = { vec3(-10.f, 0.f, 0.f), vec3(10.f, 0.f, 0.f), vec3(0.f, 10.f, 0.f) }; // CCW vec3 my_triangle2[3] = { vec3(10.f, 0.f, 0.f), vec3(-10.f, 0.f, 0.f), vec3(0.f, 10.f, 0.f) }; // CW vec3 faceNorm[2]; vec3 eyeVec; GLfloat angle[2]; GLint culling = CW; GLint isTriangle1 = 0; GLint isTr.. 2021. 4. 3.
[컴퓨터그래픽스] gluLookat 변경을 통한 애니메이션 만들기 #include //#include int g_timeDelta = 0, g_prevTime = 0; GLfloat g_x = 0.f; GLfloat g_velocityX = 0.f; void RenderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); g_x += g_velocityX + (GLfloat)g_timeDelta / 1000.f; //printf("%f", g_x); glLoadIdentity(); gluLookAt(g_x, 0.f, -0.1f, g_x, 0.f, 0.f, 0.f, 1.f, 0.f); glColor3f(1.0f, 1.0f, 1.0f); glRectf(.25, .25, -.25, -.25); glu.. 2021. 4. 3.
[컴퓨터그래픽스] transformation, scale, rotation #include #include #include int g_timeDelta = 0, g_prevTime = 0; int inc_y = 1; GLfloat g_x = 0.f; GLfloat g_y = 1.f; GLfloat g_velocityX = 0.5f; GLfloat g_velocityY = 0.01f; GLfloat vertices[] = { -0.8, -0.8, -0.8, 0.8, -0.8, -0.8, 0.8, 0.8, -0.8, -0.8, 0.8, -0.8, -0.8, -0.8, 0.8, 0.8, -0.8, 0.8, 0.8, 0.8, 0.8, -0.8, 0.8, 0.8 }; GLubyte faces[] = { 7, 5, 6, 7, 4, 5, 3, 2, 1, 3, 1, 0, 2, 6, 5, 2,.. 2021. 4. 3.
[컴퓨터그래픽스] 소용돌이 실습 (함수 사용하지 않기) void RenderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); GLfloat rotation[16] = { cos(30.0), 0, -sin(30.0), 0, 0, 1, 0, 0, sin(30.0), 0, cos(30.0), 0, 0, 0, 0, 1 }; GLfloat translation[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.1, 0, 1 }; glPushMatrix(); glColor3f(0.5f, 0.5f, 0.5f); glPointSize(3); glBegin(GL_POINTS); glVertex4f(0.25f, 0.8f, 0.0f, 1.0f); glEnd();.. 2021. 4. 3.
[컴퓨터그래픽스] 세가지 방법으로 오각형 그리기, OpenGL에서 primitive 그리기, glVertex, glDrawArrays, glDrawElements 이번 학기 컴퓨터 그래픽스 과목 첫 번째 실습은 바로, '세 가지 방법으로 오각형 그리기'이다. OpenGL 애플리케이션에서 primitave를 그리는 방식은 세 가지가 있는데, glBegin - glVertex - glEnd를 사용하는 방법과, glDrawArrays를 사용하는 방법, glDrawElements를 사용하는 방법이다. glBegin - glVertex - glEnd 직접 vertex의 위치를 지정하여 그려주는 방식이다. 먼저 glBegin()을 실행해야 한다. 이 때 parameter로 primitive의 종류*를 정해준다. 1) glBegin(GL_POINTS) 2) glBegin(GL_TRIANGLES) 3) glBegin(GL_POLYGON) ... 등등 glBegin()의 뒤를 이.. 2020. 5. 22.