본문 바로가기

전체 글

(152)
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 12 - 스크린 물체 조작 [1/2] 12.1 물체 선택 다음 그림과 같이 마우스를 클릭하여 물체를 선택할 수 있다. 이를 피킹(picking) 이라고도 한다. 스크린에 렌더링된 영상은 픽셀의 2차원 배열이다. 따라서 피킹 시 얻을 수 있는 정보는 마우스로 선택한 점의 2차원 좌표 (x_s, y_s)일 뿐이다. 즉, 물체에 대한 정보는 없고, (x_s, y_s)를 사용해서 해당 위치의 물체를 찾아내는 기법을 이번 장에서 설명한다. 12.1.1 스크린 공간 광선 마우스 커서의 위치가 주어졌을 때, 시작점은 위치에서 z는 0이고, 방향 벡터는 (0, 0, 1)인 스크린 공간 광선(ray)을 정의할 수 있다. 이 광선에 의해 처음 부딪히는 물체가 선택될 것이다. 즉, 광선을 오브젝트 공간까지 변환하여 그 공간에서 광선-물체 교차 검사를 수행해야 ..
[Unity] 내부 저장소를 통해 Package Manager 활용하기 (Verdaccio 설치 및 실행) 여러 프로젝트를 진행하다 보면 중복되는 기능을 가진 기능을 패키지화(Export)를 통해 공유하고 재사용하기도 합니다. 재사용할 때 활용할 수 있는 방법은 여러가지가 있는데 그 중에 Unity Package Manager를 활용한 패키지 관리 방법에 대해서 요약을 하겠습니다. 유니티에서도 Scoped Registries라는 기능을 활용하여 레지스트리 서버와 패키지 관리자가 통신하여 여러 패키지에 접근할 수 있습니다. 유니티의 경우 레지스트리 서버가 npm 기반으로 되어 있는 레지스트리 서버는 접근할 수 있다고 합니다. Unity - Manual: Scoped Registries Scoped Registries Scoped Registries allow Unity to communicate the loca..
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 11 - 오일러 변환 및 쿼터니언 [2/2] 11.3 쿼터니언 11.3.1 쿼터니언 표현 쿼터니언 q는 복소수를 확장한 것으로 네 개의 항으로 표현된다. 여기서 q_x, q_y, q_z는 허수부(imaginary part)를 구성하고, q_w는 실수부(real part)인데, i, j, k를 허수단위(imaginary unit)라 한다. 허수단위는 다음과 같은 특징을 가진다. 두 개의 서로 다른 허수단위가 곱해지면 다음과 같은 순환치환(cyclic permutation)적인 특징을 가진다. 일반 복소수처럼 쿼터니언도 켤레(conjugate)를 가진다. 허수부를 음수로 만드는 게 켤레 쿼터니언이다. 식을 이용하면 두 개의 쿼터니언 p와 q에 대해 (pq)* = q*p*임을 쉡게 증명할 수 있다. 쿼터니언의 크기(norm)는 일반적인 벡터의 경우와 같..
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 11 - 오일러 변환 및 쿼터니언 [1/2] 4.3.2절에서 우리는 x, y, z축을 중심으로 하는 세 종류의 회전을 소개했다. 이 장은 그러한 회전을 적절하게 결합하면 물체가 임의의 방향을 가지게 됨을 보여줄 것이다. 그 다음 주축이 아닌 임의의 축을 중심으로 물체를 회전하는 기법에 대해 기술할 것이다. 11.1 오일러 변환 세 개의 주축 중심 회전을 결합한 것을 오일러 변환(Euler transform)이라 한다. 그런데, 이 주 축은 월드 공간에서 택할 수도 있고, 오브젝트 공간에서 택할 수도 있다. 11.1.1 월드 공간 오일러 변환 11.2 키프레임 애니메이션과 오일러 변환 11.2.1 2차원 키프레임 애니메이션 p_i는 사각형 중심의 좌표를, ∂_i는 회전각 즉 방향을 나타낸다. 중간 프레임 t에서의 사각형의 위치는 위의 식과 같이 선형..
[게임리뷰] 쿼터뷰와 로그라이트, 탄막게임이 합쳐지면? - 이라(IRA) 이라(IRA) 게임 개요 플랫폼 : Windows 장르 : 탄막슈팅, 로그라이트, 액션 출시 : 얼리억세스 - 2021.08.31 한국어 지원 : 지원 트레일러 이라(IRA) Trailer ABShot(에이비샷)이라는 게임사의 로그라이트 탄막 슈팅 게임이다. 이 게임을 처음 본 건 2021 BIC(Busan Indie Connect Festival)에서 처음 보고 플레이해봤다. 꽤 고급스럽고 깔끔한 그래픽 디자인 퀄리티와 탄막게임이라는 것에 끌려 플레이해보았다. 기본적으로 대화 컷신이나 인게임 캐릭터의 2D 스프라이트들이 깔끔하고 자연스럽다. 또한, 게임을 플레이하면서 플레이 사운드 또한 깔끔하고 잘 어울리는 느낌을 많이 받았다. 게임장르는 로그라이트 탄막게임인데, 쿼터뷰의 게임 시점을 가지는게 독특하다..
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 10 - 출력 병합기 이번 챕터에서는 출력 병합기가 수행하는 두 가지 주된 작업인 z-버퍼링과 알파 블렌딩을 다룬다. 10.1 Z-버퍼링 GL은 컬러 버퍼(color buffer), 깊이 버퍼(depth buffer), 스텐실 버퍼(stencil buffer)를 제공하는데, 이들을 합해서 프레임 버퍼(frame buffer)라고 한다. 컬러 버퍼는 스크린의 2차원 뷰포트에 나타날 픽셀 전체를 저장하는 메모리 공간이다. (w x z 해상도) 깊이 버퍼는 z-버퍼라고도 불리는데, 컬러 버퍼와 동일한 해상도를 가지며 현재 컬러 버퍼에 저장되어 있는 픽셀의 z값을 저장한다. z가 프래그먼트마다 겉으로 안들어나지만 계산이 된다. 프래그먼트에서 나오는 normal은 라이팅(lighting), texcoord는 텍스쳐링(texturing..
[게임리뷰] 아름다운 그래픽과 함께 수영을 - 압주(ABZU) 압주 (ABZU) 게임 개요 플랫폼 : Windows / / PS4 / Xbox One / Nintendo Switch 장르 : 어드벤처 출시 : PC,PS4 - 2016.08.02 / XBOX - 2016.12.06 / Switch - 2018.11.29 한국어 지원 : 비공식 지원 엔진 : Unreal 심의 등급 : 전체 이용가 트레일러 ABZU E3 Trailer Journey의 그래픽, 음향 팀이 참가한 어드벤처 인디 게임이다. 하지만, Journey의 중요 인물이었던 제노바 첸이 개발에 참가하지는 않았기 때문인지 게임 플레이 느낌은 Journey와 비슷하면서도 상당히 다르다. 분위기나 플레이어에게 제공하려는 느낌은 비슷한 듯 하지만, 조작감이나 상호작용, 친절함에 있어서는 Journey보다는 다..
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 9 - 라이팅 (앰비언트, 발산광) [2/2] 9.1.3 앰비언트 항 공간 내 다양한 물체로부터 반사된 빛을 앰비언트 빛(ambient light)이라 부르는데, 이는 간접 조명에 해당한다. 앰비언트 빛은 특정한 방향이 아닌 '모든 방향을 따라' p점에 들어온다. 따라서 이는 p에서 '모든 방향을 따라' 반사된다. 결국 p에 들어오는 앰비언트 빛의 양은 p의 노멀에 무관하고, p에서 반사되는 빛의 양은 카메라 시선에 무관하다. 여기에서 s_a는 앰비언트 빛의 RGB 색상이고, m_a는 물체의 앰비언트 계수(ambient reflectance)이다. 간접 조명을 표현하는 앰비언트 항 덕분에 우리는 광원으로부터의 빛이 직접 닿지 않는 부분에도 조명 효과를 줄 수 있게 된다. 주전자의 다른 부분과 마찬가지로 약간의 조명을 받는다. 하지만 실세계 간접 조명..