어제 이것 때문에 12시간을 고통받아서, 언젠가 또 나중을 위해서 기록해둘 겸 글을 남기려고 한다.
쓰는 사람이 적어서 그런지 인터넷 상에 정보가 매우 적어서, 이 글이 조금이나마 다른 분들에게 도움이 되었으면 좋겠다.
먼저 ImGui가 설치되어있다는 것을 전제로 한다.
https://ciel45.tistory.com/111
[OpenGL] 게임 엔진 개발 (1) - 시작 + ImGui
지금까지 학습한 내용을 바탕으로 게임 엔진 제작을 시작하였다. 우선 엔진의 기본 구성 요소들(Camera, Model, Mesh, Light, Material 등)은 공부 일지에서 사용했던 코드를 사용하되, 내 스타일에 맞게
ciel45.tistory.com
ImGuizmo는 ImGui에서 사용할 수 있는 gizmo 라이브러리이다.
https://github.com/CedricGuillemet/ImGuizmo
GitHub - CedricGuillemet/ImGuizmo: Immediate mode 3D gizmo for scene editing and other controls based on Dear Imgui
Immediate mode 3D gizmo for scene editing and other controls based on Dear Imgui - CedricGuillemet/ImGuizmo
github.com
깃허브 페이지를 보면 알 수 있듯이 물체를 움직이고, 회전하고 스케일링하는 gizmo를 제공하여, 진짜로 게임 엔진 느낌이 나게 해준다.
이제 이걸 설치해야 하는데.. 맨 하단 Install을 보면 vcpkg를 통해 install하라고 나와있다.
그런데 이걸로 설치하면 cpp 파일 없이 헤더 파일들만 받게된다.
그렇게 cpp 파일 없이 실행하면 gizmo가 화면에 표시는 된다. 다만 조작이 불가능해서 무용지물이다.
그래서 이거 말고 Releases에 들어가서 압축 파일을 받아주면 된다.
받아서 압축을 풀면 이렇게 파일들이 있다.
다른 하위 디렉토리들은 무시하고, 여기에 있는 헤더/cpp 파일들을 프로젝트로 복사해주면 된다.
마지막으로 솔루션 탐색기에 필터를 추가하여 파일들을 드래그 앤 드롭 해주었다.
이제 본격적으로 활용할 차례인데, 이 영상을 참고하는 것을 추천한다.
그런데 코드를 짜고 실행하면, 바로 에러가 반겨줄 것이다.
저 에러를 보고 #define이 없어서구나~ 해서 main.cpp에 해당 #define을 추가해도 에러는 계속 뜨게된다.
아마 컴파일 시점에 imgui.h를 사용하는 라이브러리가 부리는 말썽인 것으로 추정된다.
이걸 해결하려면 그냥 imgui.h 최상단에 #define IMGUI_DEFINE_MATH_OPERATORS 를 추가해주면 된다.
그러면 이제 보스 2페이즈 마냥 ImGuizmo의 cpp 파일들에서 많은 양의 컴파일 에러가 나올 것이다.
왜냐하면 ImGuizmo는 ImGui의 1.53버전을 타겟으로 하고있어서,
현재는 제거된 메소드들을 마구 사용하고 있기 때문이다.
그렇다고 ImGui를 다운그레이드하자니, 1.53 버전은 2017년에 쓰던 너무나도 구닥다리 버전이다.
그래서 ImGuizmo 소스코드들에서 해당 메소드들을 사용하는 부분을 모두 삭제해주었다.
GetMousePos()가 대부분일텐데, 어차피 이제 ImGui에서 마우스 포지션은 자동으로 캡쳐해주기 때문에 삭제해도 상관 없는 것이다.
이러한 작업들을 모두 거친 후, ImGuizmo가 잘 작동하는 것을 볼 수 있었다.
'OpenGL > 공부' 카테고리의 다른 글
[OpenGL] Skybox (0) | 2024.07.18 |
---|---|
[OpenGL] FrameBuffer 생성, 사용 (0) | 2024.07.16 |
[OpenGL] Model Loading (Assimp) (1) | 2024.07.13 |
[OpenGL] Phong Reflection Model - 구현 (0) | 2024.06.19 |
[OpenGL] Normal Transformation (Normal Matrix) (0) | 2024.06.15 |