본문 바로가기

Computer Graphics11

컴퓨터 그래픽스 - Object Picking Picking 했을때 우리가 얻을 수 있는 것은 스크린에서의 2차원 Pixel좌표 (x,y)밖에 없었다. 어떻게 주전자가 하이라이트되어 색이 바뀔까? 각 픽셀은 어떤 영역에 속하는지 정보가 없다. 3차원으로 넘어가서 기하적인 추론을 해야할 것이다. 그림에 보이는 박스는 View Port 영역이다. 2차원 Screen 공간에서는 커서가 (X_s, Y_s) 2차원 좌표로 주어지지만, 클릭한 점이 3차원 공간에서는(X_s, Y_s, 0)일 것이다. 여기서 뻗어나가는 ray를 생각해보자. ray란 시작점이 있고 한쪽으로 무한하게 뻗어나가는 직선이다. 3차원 뷰포트에서 모든 Ray는 z축 방향으로 뻗어나간다고 생각하면된다. 이때 direction Vector는 (0,0,1)이다. 3차원 Ray가 뻗어나가면서 누구.. 2024. 3. 1.
컴퓨터 그래픽스 - Quaternions Euler Transform이 직관적이지만 올바르게 보간된다는 보장이 없기 때문에 KeyFrame Animation에서는 쓰기가 어렵다는 결론으로 지난 포스팅을 마무리 하였다. 이번엔 이에 대한 해결책을 알아본다. Quaternion 기법은 항상 올바르게 보간된다. Quaternion은 Complex Number 복소수를 확장한 것이다. a + bi b를 허수부, a를 실수부라고 배웠었다. 여기서 b를 확장하게 된다. i에서 j와 k가 추가된다. 그 앞에 스칼라값이 붙게 되어 허수부를 결정하게 된다. 그 결과 4개의 스칼라값이 나오는데 이것을 4차원 벡터로 표현하게 된다. 4차원 벡터이기 때문에 쿼터니언이라 부른다. 두개의 서로 다른 허수 단위가 곱해지면 Cyclic Permutation 적인 특징을 가.. 2024. 2. 18.
컴퓨터 그래픽스 - 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(3), Scan conversion 회사생활에 무난하게 적응했다 사수분께서 워낙 잘해주신 덕분인 것 같다. 이번주엔 회사 코드를 분석하는 시간을 가졌다. 분석하는 동안 궁금한점, 개선하고 싶은 점, 프로젝트의 방향성과 상반기 목표, 곧 출시될 Vision Pro 개발 여부 등등... 정말 많은 이야기를 나누었고 벌써 이번주가 끝나간다. 드디어 기다리던 수습 기간 동안의 과제가 주어졌다. 과제는 현재 서비스의 기능 중 하나를 구현하고 학습한 내용을 발표하는 것이다. 학습 주제는 구현하면서 알게된 부분도 있겠지만 더 중요한 건 수습이 끝난 후 본격적으로 필요한 기술과 관련이 있다는 것이다. 남은 이번주도 화이팅! 모든 삼각형들을 Window Space(Screen Space)로 옮기는 뷰 포트 변환이 수행된다. 그리고 Rasterizer의 마.. 2024. 1. 19.
컴퓨터 그래픽스 - 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.
728x90