본문 바로가기

Graphics7

컴퓨터 그래픽스 - Euler Transform 설 연휴 전날 점심에 칼퇴를 시켜주셨다 ㅎㅎ. 다음주부터 하고싶은 게 많기에 얼른 카페에 와서 이번주 공부한 그래픽스를 정리하고 있다. 그동안 배웠던 3차원 회전은 기본축을 중심으로 이루어지는 변환이었다. 그림을 예시로 x축을 중심으로 회전을해도 여전히 yz평면 위에서 회전할 뿐이다. x축 중심을 회전한 후 y축 중심으로 60도 회전한다면 주전자 주둥이 끝이 yz평면을 벗어나게 된다. 이와 같이 x,y,z축 중심 회전을 고루 이용한다면 물체의 임의 방향으로 변환할 수 있다는 것이다. 이것이 Euler Transform이다. 다시 말해, x,y,z 축 중심의 회전을 결합해서 임의의 방향을 제공하는 것이다. 세 주축을 쓰기 때문에 각도 세가지가 주어지며 이것이 Euler angles이다. 다시 말해, x,.. 2024. 2. 8.
컴퓨터 그래픽스 - Lighting(1) Diffuse 항 - 정반사 Phong Model 빛 (Lighting) 빛과 물체 간 상호작용을 처리하는 기술 광원 (Lighting Source) 점 광원(point light source) 3차원 공간의 한 점으로부터 전방위로 빛이 발산 빛이 물체까지 이동하는 동안 점차 희석됨. 방향성 광원(directional light source) 희석되지 않으며 색상과 단일한 입사 방향만 고려 ex) 태양 Bidirectional reflectance distribution function 정의 양방향 반사율 분포 함수 물체에 들어오는 빛(irradiance)과 카메라를 향해 나가는 빛 (radiance) 사이의 관계 Diffuse 항 - 정반사 확산 반사 (램버트 반사): Lambertian 표면은 들어오는 빛을 모든 방향으로 균등하.. 2024. 1. 30.
컴퓨터 그래픽스 - Rasterizer(2), ViewPort 신입으로 출근한지 일주일이 지났습니다. 첫째주엔 회사 서비스를 이해하는 시간을 가졌습니다. 일반 유저가 사용하는 서비스가 아니다보니 잠이 오더군요... 이번주부터는 본격적으로 회사 코드를 분석하기 시작했습니다. 그래픽스를 공부하고나서 Metal 관련 코드를 보는데 반가운 용어들이 보이더군요 Proj, Rotation, vertex shader, fragment shader 등... 다음주도 화이팅! 폴리곤의 가시성 폴리곤의 가시성 결정은 폴리곤을 구성하는 정점들의 2차원 투영을 사용하여 폴리곤의 면적을 계산함으로써 이루어진다. 폴리곤의 면적을 계산하는 데 사용되는 행렬식(determinant)을 이용하여 폴리곤이 카메라를 향하고 있는지(면적이 양수일 때) 또는 반대를 보고 있는지(면적이 음수일 때)를 판.. 2024. 1. 16.
컴퓨터 그래픽스 - Rasterizer(1) fovy는 시야각(field of view angle)을, aspect는 종횡비(aspect ratio)를, n과 f는 각각 근접 클리핑 평면(near clipping plane)과 원거리 클리핑 평면(far clipping plane)의 위치를 나타낸다. 이러한 값들은 카메라가 어떻게 3차원 공간을 '보는지'를 결정하는데 사용됨. clip space의 각 정점을 자신의 w좌표로 나누면 Cartesian coord의 정점으로 변한다. 이것은 원근법을 구현하는 효과를 가지며 원근 나눗셈이라고 한다. w는 동차 좌표(Homogeneous coordinates) 시스템에서의 한 요소임. 이렇게 얻은 Cartesian 좌표를 Normalized device coordinates 또는 NDC라고 한다. NDC(N.. 2024. 1. 13.
컴퓨터 그래픽스(4) - World Transform 이제 실제 쓰이는 예시를 보자. 유니티를 사용해본적이 있다면 이해할 수 있다. 교실 같은 3차원 공간을 예시로 들 수 있다. 교실 공간을 먼저 만들어야할 것이며 강의실 안에는 책상과 의자와 같은 것들을 Polygon mesh로 만들어야할 것이다. 처음에 만들어질 때 특정 좌표계를 기준으로 만들어질것이고 원점 가까이 놓여있을 것이다. 단일한 공간에 배치를 해야하는데 의자와 책상이 겹쳐있으면 안 될 것이다. 이러한 것을 해결하기 위해서 변환이 쓰인다. Coordinate System을 두가지로 구분하는데 Object를 만드는데 쓰인 공간인 Object Space, 단일한 게임 공간인 World Space이다. World Space 에 만들어진 모든 Polygon mesh가 배치되어야한다. Object Spa.. 2024. 1. 10.
컴퓨터 그래픽스(3) - Affine Transform 학교에서 선형대수 관련 수업을 두개나 들었는데... 기억이 안 난다 ㅎㅎ 닉네임을 eigen으로 했는데 기술면접에서 eigen vector도 제대로 설명을 못했다 ㅋㅋㅋㅋㅋ 선형변환이란? 선형 변환은 벡터를 다루는 일종의 규칙으로 두가지 성질을 가진다. 첫 번째는 '가산성'이라고 해서, 두 벡터를 더한 다음에 그 변환을 적용하는 거나, 각각의 벡터에 변환을 적용한 다음에 결과를 더하는 거나 같다는 것이다. 예를 들어, 두 개의 화살표가 있을 때, 이걸 먼저 합치고 나서 방향을 바꾸는 것과 각각의 화살표 방향을 바꾼 다음에 합치는 것이 같은 결과를 가져온다. 두 번째 성질은 '동차성', 이건 벡터에 어떤 숫자를 곱한 다음에 변환을 적용하는 것과, 변환을 적용한 다음에 같은 숫자를 곱하는 것이 같은 결과를 .. 2024. 1. 7.
컴퓨터 그래픽스(1) - 모델링 서론 시리즈 C 스타트업의 iOS 개발자로 첫 커리어를 시작하게 되었습니다. 지원 당시 채용공고에서 Metal과 같은 저수준 GPU API를 사용하게 될 것이라 명시되어있었습니다. 이와 관련해서 나온 컴퓨터 그래픽스 관련 기술면접 질문은 답변하지 못하여 아쉬웠습니다. 관련 경험이 없었지만 포기하지 않고 iOS에서의 렌더링 사이클과 UIkit과 SwiftUI의 더티영역에 대한 처리 과정 등에 대해 공부했던 내용을 말씀드렸던 기억이 납니다 ㅎㅎ. 그래픽스 관련해서 OpenGL을 먼저 참고해보는 게 좋을 것이라는 면접관님의 조언에 따라 첫 출근전에 이론부터 공부해보고자 합니다. 구립도서관을 열심히 서칭했지만 그래픽스 관련 서적은 찾기가 쉽지 않았습니다. 결국 학교 도서관까지 가게 되었습니다 ㅠㅠ. 3차원 컴.. 2024. 1. 6.
728x90