
개요 - Unreal Cesium은 매우 기가 막 하고 코가 막히는 지형 서비스를 지원한다. - 지형을 불러내기 위해서 Cesium에서 제공하는 Cesium ion으로부터 지형 API를 요청받아야 한다. - 필자는 Cesium ion을 거치지 않고 오프라인에서 지형을 불러내고 싶다. 생각해야 하는 요소 - Cesium이 지형을 생성하기 위해서 요청하는 데이터는? -> Georeferncing Raster Image : 2D 형태의 위성(or 항공) 사진 https://desktop.arcgis.com/en/arcmap/latest/manage-data/raster-and-images/what-is-raster-data.htm -> quantized mesh : 지형 타일 https://cesium.c..

개요본 장에서는 이전에 포스팅한 SAT 이론 및 구현 스터디(1) 한 개념들을 SFML 환경의 코드로 구현한 내용들을 다룬다. 코드 구현전에 전반적인 흐름을 파악하기 위해서 플로우 차트를 작성해 보았다. 1. Convex Polygon의 Edge Vector 구하기먼저 Edge Vector를 구하기 위해서는 두 개의 정점의 x, y 성분을 알아야 한다. 두 정점은 좌표가 아닌 벡터 성분이고 벡터 뺄셈을 통해서 Edge Vector를 구하게 된다. 연산은 존재하는 Convex Polygon의 정점의 갯수만큼 반복된다. 해당 코드는 다음과 같다. sf::Vector2f Collision::DetermineEdgeVector(sf::Vector2f* vertices, uint32_t index, uin..

SAT 는 무엇인가?SAT(Separating Axis Theorem)는 두 개의 볼록 다각형 또는 볼록 다면체가 충돌하지 않는지를 확인하는 데 사용되는 알고리즘이다. SAT(Separating Axis Theorem)두 개의 볼록 다각형 또는 볼록 다면체가 충돌하지 않는지 확인하는 로직이다.SAT는 유명한 강체 충돌 탐색 알고리즘 중 하나이다.SAT는 오직 볼록 다면체(convex polygons)에서만 작용한다. SAT에서 "충돌했다" 의 정의 위 이미지의 내용을 풀이하자면, 두 개의 도형을 분리할 수 있는 적어도 하나의 축이 주어진다면 SAT 관점에서 두 도형은"충돌하지 않았다." 상태로 정의할 수 있다. 즉 두 도형을 분리할 수 있는 축이 하나도 존재하지 않을 때, 비로소 "충돌 했다"..

이 포스트에서 알 수 있는 것sf::Keyboardsf::Mousesf::Joystick이벤트 로직을 구현했는데 원하는데로 작동되지 않아...sf::Event::Keypressed 를 통해서 키보드 입력 이벤트를 받아서 플레이어 이동 기능을 구현하려고 하는데 특정 상황에서 나의 의도에 맞지 않는 현상이 나왔다. 키보드 입력을 한번만 입력 받았을 때, 입력 이벤트는 빠르게 생성되는데 키보드 입력을 계속 누르고 있을 때 일정 시간이 지난 후, 이벤트가 지속적으로 생성된다. 나는 모든 입력 반응이 빨랐으면 좋겠는데, sf::Event 를 사용해서는 한계가 있어 보였다. 이럴 때 사용하는게 바로 Global Input Global Input은 sf::Event 보다 빠르게 입력 상태를 받아낼 수 있는 (모..

이 포스트에서 알 수 있는 것sf::Eventsf::Event::getIfsf::WindowBase::handleEventssf::Event::Closedsf::Event::Resizedsf::Event::FocusLostsf::Event::TextEnteredsf::Event::KeyPressedsf::Event::KeyReleasedsf::Event::MouseWheelScrolledsf::Event::MouseButtonPressedsf::Event::MouseButtonReleasedsf::Event::MouseMovedsf::Event::MouseMovedRawsf::Event::MouseEnteredsf::Event::MouseLeftsf::Event::JoystickMovedsf::Event..

이 포스트에서 알 수 있는 것 sf::Window sf::Stylesf:StateSFML 응용프로그램 수명주기 들어가기 전에...SFML 프로젝트 셋팅이 힘든이들에게 이전 포스트에 SFML 프로젝트 생성하는 방법을 포스팅 해두었다. https://kwonvector.tistory.com/54 [SFML] SFML 3.0 Visual Studio 개발 환경 구축하기개요SFML 환경 셋팅은 공식 사이트의 튜토리얼 페이지를 참고하면 누구나 쉽게 따라할 수 있다. 윈도우, 리눅스, mac 등의 플랫폼마다 설정하는 방법이 명시되어 있었다. 검색창에 "SFML Tutkwonvector.tistory.com 필자가 셋팅한 SFML 프로젝트는 다음과 같다. 아쉽게도 필자는 mac 도 없는 거지라(mac 써..

개요이 장에서 알 수 있는 것 라이브러리에 대한 사용 요구 사항 추가 필요한 C++ 표준을 지정하기 위해 INTERFACE 라이브러리 타겟을 추가 사용한 CMake 커맨드target_compile_definitions()target_compile_options()target_include_directories()target_link_directories()target_link_options()target_precompile_headers()target_sources()타깃 포함 디렉토리 속성에 대한 이해 해당 챕터를 공부하면서 이해하느라 가장 오랜시간을 소비한 부분 같다. target_include_directories() 커맨드 앞 절에도 사용했었지만 3가지 속성을 선택할 수 있다.PRIVATE 지정된..

개요SFML 환경 셋팅은 공식 사이트의 튜토리얼 페이지를 참고하면 누구나 쉽게 따라할 수 있다. 윈도우, 리눅스, mac 등의 플랫폼마다 설정하는 방법이 명시되어 있었다. 검색창에 "SFML Tutorial" 이라고 검색하면 바로 찾을 수 있을 것이다. 튜토리얼 페이지에 바로 이동하고 싶다면 이 링크 를 클릭! SFML 개발 환경 구축하기(CMake 활용)해당 환경을 구축하기 전에 설치되어야 하는 것Visual Studio (C/C++ 개발 플랫폼)CMake 링크를 타고 이동하면 SFML 3.0의 튜토리얼 페이지로 이동되었을 것이다. 필자는 Visual Studio 환경을 구축할 것이다. 하지만 Visual Studio에서 SFML 환경을 셋팅하기에 준비해야 하는 과정이 너무 많다. (어..

SFML를 알게된 계기 유튜브 영상 보면서 시간 떼우다가 어떤 유저가 구현한 Entity 시뮬레이션이 너무 멋져보였다. 필자가 봤었던 영상이 궁금하다면 이 링크를 클릭! 유튜버 Pezzza's Work가 만든 영상인데 그가 만든 로직이 너무 신기했다. 구 모양의 객체가 중력과 충돌에 서로 영향을 주고 받는 로직이 생각보다 어려운데 어떻게 구현한거지? 유니티 나 언리얼 엔진을 사용했다면 위 영상처럼 저렇게 많은 객체를 렌더링하는데 연산 꽤나 먹었을 것이다. 어떤 엔진을 썼는지 궁금해서 알아보니 SFML 이라는 라이브러리를 사용하고 있었다. SFML에 대한 나무위키의 설명 개요SFML(Simple and Fast Multimedia Library)은 프랑스의 Laurent Gomila사가 만든 멀티미..

개요이 장에서 알 수 있는 것CMake에서 라이브러리 추가 하는 방법사용한 CMake 커맨드 add_library()add_subdirectory()target_include_directories()target_link_libraries()PROJECT_SOURCE_DIR연습 1. 라이브러리 생성 연습 1.1. 라이브러리 디렉토리 CMakeLists.txt 편집 'Step2' 디렉토리의 'MathFunctions' 디렉토리에 들어가면 위 이미지와 같이 소스코드와 CMakeLists.txt 파일이 있다. 우리는 해당 디렉토리에 있는 소스 코드들을 라이브러리 형태로 만들 것이다. 일반적인 정적 라이브러리를 빌드하는 원리를 생각해보면 헤더파일은 원형 그대로 유지대고 나머지 구현부(.cpp)는 .lib 형태..