본문 바로가기
728x90

분류 전체보기222

[Math] 3D 회전행렬 ■ 배경 3차원 공간에서의 이동과 크기 변환 행렬은 각 축들이 서로 독립적으로 직교하기 때문에 어렵지 않게 적용이 가능하다. 하지만 회전 변환 행렬 같은 경우에는 훨씬 복잡해진다. x, y, z 세 축이 서로 연관이 되어있기 때문에 크기, 이동 변환같이 단순히 차원을 추가하는 것만으로 해결이 안된다.■ 회전의 방향에 따른 범용적 명칭(출처: 링크)3D 프로그램마다 다른 형태의 좌표계를 갖고있기 때문에 서로 다른 응용프로그램들의 오일러각(x, y, z)의 정보를 그대로 넘기면 원하는 방향대로 진행되지 않을 것이다. 예로 Unity의 x, y, z와 Unreal의 x, y, z의 축의 방향은 서로 다르다. 이런 호환성을 해결하기 위해 표준기저벡터를 축으로 하는 회전 방향에 따라 Yaw, Roll, Pitch.. 2023. 12. 12.
[Math] 브레젠험 알고리즘 with Unity ■ !! 이론 이전 포스팅에서 이론 관련 게시글을 포스팅하였다. https://yjhdevelopdiary.tistory.com/158 [Math] 브레젠험 알고리즘 (Bresenham's algorithm) ■ 개념 및 배경 선 그리기 알고리즘 (line algorithm)의 대표 모델이다. 우리가 원하는 물체를 컴퓨터 스크린 화면에 나타내는 작업을 픽셀화(Rasterization)라고 한다. 데카르트 좌표계 위에 존재하는 yjhdevelopdiary.tistory.com ■ 유니티 먼저 아래와 같이 Hierarchy와 Scene을 세팅해놨다. PixelManager에서 Canvas에 동적으로 내가 만든 픽셀 이미지와 화살표를 그려 놓을 것이다. ▼ 제작한 화살표 프리팹 ▼ 제작한 픽셀 프리팹 스크립트.. 2023. 12. 9.
[Math] 브레젠험 알고리즘 (Bresenham's algorithm) ■ 개념 및 배경 선 그리기 알고리즘 (line algorithm)의 대표 모델이다. 우리가 원하는 물체를 컴퓨터 스크린 화면에 나타내는 작업을 픽셀화(Rasterization)라고 한다. 데카르트 좌표계 위에 존재하는 벡터들을 스크린 좌표계로 옮겨주는 작업인데 이때 신경써야할 점들이 존재한다. 이름 데카르트 좌표계 (Cartesian coordinate) 스크린 좌표계 (Screen coordinate) 집합 실수 집합 (R) 양수 집합 (H) 성질 연속성 이산성 원소 벡터 픽셀 예시 그림 우리가 수학에서 일반적으로 사용하는 좌표계이다. 연속성을 가지고 있으며 무한한 실수로 이루어져 있다. 서로 독립된 픽셀 영역을 가진 스크린 좌표계이다. 0부터 시작하는 정수값을 가지고 데카르트 좌표계의 좌표를 스크린.. 2023. 12. 7.
[Math] 내적, 램버트 반사, 시야각 판별 ■ 램버트 반사 램버트 반사 모델 (Lambertian reflection)이란 현실 세계와 비슷한 조명 효과를 주기 위해 고안된 방법이다. 계산량이 적어 속도가 빠르지만 그럴듯한 조명 효과를 줄 수가 있어 3차원 실시간 조명 구현에 널리 사용된다. 두 벡터 N, L의 내적을 사용하면 램버트 반사에 필요한 cos사잇각을 구할 수 있다. ■ 램버트 반사 (유니티 실습) 이해한 내용을 바탕으로 유니티에 0부터 구현해봤다. (구조) 1. Start에서 텍스처를 복사하여 새로운 스프라이트를 객체에 씌워준다. 2. 스프라이트의 픽셀(256x256) 하나하나를 대상으로 픽셀의 위치(표면)가 향하는 단위 벡터 n과 원점을 기준으로 공전할 mover의 위치에 따른 l값을 내적하여 사잇각 cosθ값을 구한다. 3. 기존.. 2023. 12. 6.
[Math] 삼각함수 ■ 각도법, 호도법 각도법 (Degree) 호도법 (Radian) 180˚ π 180 / π˚ 1 1˚ π/180 90˚ π/2 60˚ π/3 45˚ π/4 120˚ 2π/3 ★ 왜 호도법을 배우냐면 컴퓨터에서 Sin, Cos, Tan을 다룰 때는 기본적으로 호도법을 기준으로 전개하기 때문이다. ■ 삼각비 (출처) https://en.wikipedia.org/wiki/Sine_and_cosine#/media/File:Circle_cos_sin.gif [간단한 공식] 1. Sin(θ) != Sin(-θ) 2. Sin(θ) = -Sin(-θ) 3. Cos(θ) = Cos(-θ) ■ 역함수 역함수가 존재하기 위해선 해당 함수는 전단사함수 이어야한다. 하지만 Sin, Cos, Tan 함수는 전단사 함수가 아니다.. 2023. 12. 3.
[Diary] 23.11월 정리, 시험 합격 ■ 네트워크 관리사 2급   다행히 합격 했다 :) 자격증 관련 계획은 차질 없이 이루어지고 있다. ■ 11월 정리 현재 블로그에는 기록을 안하였지만, 삼각함수와 행렬, 아핀 공간, 내적 등 게임 실무에 적용할 수 있는 수학과 관련된 공부를 하고 있었다. 수학이 프로그래밍에 왜 필요한지 알게 되었고, 이를 실습해봄으로써 한 단계씩 성장할 수 있게 되었다.12월 중순까지 그래픽스와 수학을 다 끝내려고했으나, 가면 갈수록 더욱 어려운 내용들과 중간에 계속 생기는 약속과 크리스마스를 생각한다면 이번 달을 다 소비하되 한 번 할 때 정확히 이해하고 넘어가자 라는 생각을 하게 되었다 :)  진로에 대한 걱정과 두려움은 전혀 없어졌다. 마음을 비우고 내적으로 강한 사람이 먼저 되고자 생각하게 되었기에, 하루 이틀 .. 2023. 12. 3.
[Computer Graphics] OpenGL, 더블 버퍼링 ■ 더블 버퍼링 요즈음 대부분의 GUI 프로그래밍에선 일반적으로 사용자에게 연속적인 이미지를 보여주기 위해 더블 버퍼링을 사용한다. 구성은 프론트(Front) 버퍼, 백(Back Buffer)가 있는데 프론트에서는 현재 프레임(마지막프레임)의 버퍼를 보관해주고 백에서는 이후에 (다음프레임) 보여줄 버퍼를 보관하고있다. [원리] 그러므로 CPU에서 GPU에게 그래픽 데이터를 전달해주면은 GPU에서는 BackBuffer에다가 해당 데이터에 맞게 객체를 그려준다음 SwapBuffer 등을 통하여 FrontBuffer와 BackBuffer를 교체하여 디스플레이에 띄워준다. [이유] 이렇게 까지 하는 이유는 무엇인가? 먼저 렌더링에는 (1) 내가 원하는 것을 그려줘 와 (2) 니가 그린 것을 보여줘의 두 가지 신.. 2023. 11. 16.
[Computer Graphics] 공부 시작 및 목표 ■ Computer Graphics 3차원 물체를 보여준다는 것은, 기반이 되는 것은 3차원이지만 사진을 찍으면 2차원으로 변하는 것처럼, 우리 눈에 3차원 물체를 2D로 보여주는 것이다. 그래서 3D Computer Graphics라고 하고 렌더링 파이프라인 과정을 거쳐서 계산 후 나오는 결과 이미지를 '프레임 (fps; Frames Per Second)'이라고 한다. 컴퓨터 그래픽스의 종류는 크게 두 가지인데 내가 공부하고자하는 (1) 실시간 [온라인] 컴퓨터 그래픽스 와 (2) 비실시간 [오프라인] 컴퓨터 그래픽스이다. 종류 특징 실시간 컴퓨터그래픽스 시간으로 초당 30프레임 이상을 그려내야하기 때문에 작업을 간략화하고 GPU에서 집중해서 병렬처리를 하는 것이다. 이와 같은 실시간 그래픽스가 필요한.. 2023. 11. 16.
[Diary] 23.9월 정리 : 정보처리기능사 결과, 장학금, 앞으로의 계획 ■ 정처기 결과정보처리 기능사 합격했다 :) ■ 학점은행제 장학금일단 예상치 못했는데 장학금을 받게 되었다. 장학금도 20만원이다. 적지 않은 용돈 자기 계발에 감사히 쓰겠습니다. 감사합니다 :) ■ 앞으로의 계획 현재 10월, 11월, 12월의 계획은 이렇다 1. K-MOOC를 통하여 딥러닝, 머신러닝과 응용 분야에 대한 적용 사례 등 양질의 강의를 무료로 접할 수 있는 기회를 활용할 예정이다.  기계 학습이 무엇인지 대충 겉으로만 알고있기에 내가 선택한 이 길이 올바른 길인지 중간중간 찝찝한 불안감이 생겨난다. 그러기에 여러 강의를 들어보고 정말로 이 분야가 나에게 맞는 지를 먼저 탐색한 뒤에 내년 부터는 원래 진행했던 머신러닝 관련 실습책을 마무리하고 한 분야에 대해서 깊게 파고들 생각이다.  2... 2023. 10. 3.
728x90