본문 바로가기

게임 수학과 물리

(3)
민코프스키 합 (Minkowski Sums)을 컴퓨터 과학에서 응용하는 사례 (길찾기 알고리즘 , 효율적인 거리 측정 알고리즘) https://www.youtube.com/watch?v=OL6zwhV4rc4 유클리드 공간에서 시간이 정지된 (시간축을 다루지 않는) 3차원 벡터에 관한 자료를 조사하다가 우연히 시간을 다루는 민코프스키 시공간을 접하고, 민코프스키 합이라는 수학 공식을 접하게 되었습니다. 수학에 깊이 관여하진 않았기 때문에 부정확할 수도 있지만, 민코프스키 합은 컴퓨터 공학 특히 선형대수 , 길찾기에서 충분히 적용 가능한 공식이기 때문에 기록해보겠습니다. 민코프스키 합은 2차원 유클리드 공간에 볼록한 다각형 (어떤 선분도 다각형 외부로 나가지 않는 단순 다각형 , 일반적인 다각형이라고 생각하시면 됩니다.)P와 R가 존재한다고 가정합니다. 민코프스키 합은 P와 R의 위치 벡터 집합의 모든 원소를 더하여 새로운 집합을 만..
선형 보간과 구면 선형 보간 선형 보간은 보통 Math.f 라이브러리의 Lerp 함수를 사용한다. 선형 보간은 일반적으로 두 벡터 사이에 직선의 위치를 파악할 때 사용된다. 그리고 오늘 Lerp 함수가 아닌 SLerp 함수를 사용하는 것을 보았다. SLerp 클래스는 구면 선형 보간을 수행해주는 함수이다. 이번 게시글에선 Lerp와 SLerp의 차이와 둘이 돌아가는 원리에 대해 공부한 것을 적겠다. 1. 선형 보간 (Linear interpolate) 선형 보간은 두 지점을 선형으로 연결해서 두 지점사이의 위치를 파악하는 방법이다. t를 기준으로 t가 0일 때 시작 벡터이고 t가 1일 때 목표벡터에 도달한다. 당연히 이는 직선 벡터에서 적용되는 것이다. 선형 보간에서 사용하는 직선은 두 벡터를 감싸는 외접원이 있다고 가정했을 때 둘..
Unity2D에서 메쉬를 활용한 출렁이는 물 구현 2달 전에 공부한 것을 이제야 블로그 포스팅 합니다. 0. 유니티에서의 일반적인 물 Unity에서 물은 일반적으로 쉐이더를 사용하여 구현한다. 이때 쉐이더는 메테리얼의 형태로 평면 메쉬에 적용된다. 평면메쉬에 적용 되기 때문에, 출렁이는 시각적인 효과를 나타내는 데는 수월하다. (쉐이더를 활용해 파티클을 묘사해도 부작용이 거의 없다.) 그러나 평면 메쉬이기 때문에 실제 물과같은 운동을 기대하기는 어렵다. 1. 유니티에서 파동운동을 구현하는 법 내가 묘사하고 싶은 실제 물의 운동은 아래 영상과 같다. 물 표면에 닿는 오브젝트의 운동량에 따라 물의 표면이 파동이 치는 효과를 연출하고 싶었다. 이런 효과는 최근에 개발되는 3d 게임에서는 꽤 흔한 편이지만, 이런 효과가 구현 되어있는 라이브러리는 거의 존재하지..