2023. 2. 5. 01:01ㆍ컴퓨터 그래픽스/그래픽 알고리즘 및 표현
honglab 강의를 듣고 공부한 내용입니다.
honglab
About Jeong-Mo Hong 약력 2020-2021 인스타그램 소프트웨어 엔지니어 2008-2019 동국대학교 컴퓨터공학과 부교수 2005-2007 스탠포드대학교 전산과 박사,연구원 2002-2005 고려대학교 전산학 박사 1996-2002 KAIST
honglab.co.kr
Ray tracing 방식을 가져와서 구를 그릴 것이다.
모든 픽셀에서 Ray 빛을 쏜다고 생각하는 것이 ray tracing에서 ray를 다루는 방식이다.
ray가 구를 충돌할 때 색을 입혀주는 방식으로 구를 그릴 것이다.
표현과정
필요한 알고리즘들이 무엇일까 생각해보면
Ray를 쏜다, Ray가 구와 충돌한다, 충돌하는 부분들만 색을 표현해준다.
이때 색을 표현하는 것은 ray와 충돌점 사이의 거리이다.
Ray는 방향벡터와 시작점을 가진다.
충돌하는 지점과 충돌하는 지점 사이의 거리가 필요하다.
구와 직선이 닿는지 안 닿는지에 대한 판단이 필요하다.
ray의 방향벡터는 z 방향으로 고정되어 있다. 여기서는 orthogonal projection을 이용하여 표현한다.
즉 모든 ray의 방향벡터가 (0,0,1)로 고정이다. 방향벡터는 normalize된 벡터를 이용하도록 한다.
openGL에서는 카메라가 보는 방향이 -Z로 표현되는데 DirectX에서는 보는 방향은 +Z로 표현된다.
여기서는 DirectX의 방식을 따라간다.
충돌하는 지점을 구하기 위해서는 구 위의 점 x와 구의 중심 사이의 거리가 구의 반지름 r과 같을 때 충돌지점을 구할 수 있다.
d가 음수일 경우에는 충돌하지 않은 것으로 여기고 넘긴다.
https://en.wikipedia.org/wiki/Line-sphere_intersection
Line–sphere intersection - Wikipedia
From Wikipedia, the free encyclopedia The three possible line-sphere intersections: 1. No intersection. 2. Point intersection. 3. Two point intersection. In analytic geometry, a line and a sphere can intersect in three ways: No intersection at all Intersec
en.wikipedia.org
선과 구가 닿는지 안 닿는지에 대한 수학적 표현이 있는 위키문서이다.
o: ray의 시작점
u: ray의 방향벡터
d: 구와 ray의 시작점 사이의 거리
c: 구의 중심좌표
라고 할 때 구의 방정식은 구 위의 점을 x라고 했을 때
로 표현할 수 있다. d를 근으로 보고 근을 구했을 때 2개가 나오는데 가장 작은 값이 거리 d가 되는 것이다.
그리고 구의 color와 d를 곱하여 표현한다.
'컴퓨터 그래픽스 > 그래픽 알고리즘 및 표현' 카테고리의 다른 글
Rasterization 원 그리기 (0) | 2023.02.22 |
---|---|
Rasterization (0) | 2023.02.15 |
perspective 원근표현 (0) | 2023.02.09 |
Phong shading 을 이용한 물체의 표현 (0) | 2023.02.05 |
좌표계 변환 (0) | 2023.02.04 |