어제는 계획만 세우고 관련 자료 찾기만 하다가 자버렸다.
이제 뭘 만들어야 할 지 생각 났으니 한번 만들어 보려고 한다.
assimp를 활용한 mesh 데이터 로드 -> Picking -> Picking 시 imgui에 Component 메뉴 표기되도록 (Inspector 창 제작)
이 정도 까지 한번 해보려고 한다.
Open Asset input Library (Assimp)
일단 설치를 어떻게 하는 가부터 막막하다. 일단 Doc를 찾아보기로 했다.
https://assimp-docs.readthedocs.io/en/latest/
Welcome to the Asset-Importer-Lib Documentation — Asset-Importer-Lib September 2019 documentation
assimp-docs.readthedocs.io
여기를 찾아보니 여러가지 방법이 있는데, 비쥬얼 스튜디오에서 미리 구축된 라이브러리를 사용하는 방법에 대해 나와있고, vcpkg(패키지 매니저)를 사용하여 설치하는 방법이 있었다.
라이브러리를 처음부터 만드는 방법도 있고, 윈도우 dll을 만드는 방법이 있었다. 클론한 파일들을 보니 sln 파일같은 것도 없고 대체 뭘 해야할 지 모르겠다. cmake는 대체 뭐하는 녀석인지;;
찾아보니 cmake는 멀티 플랫폼으로 빌드하는 Make File 의 사용을 간편화 하기위한 오픈 소스 프로젝트...라고 한다. 사실 잘 모르겠다. 그러니까 컴파일, 링킹, 빌드를 visual studio 이런걸로 하는 게 아니라 make 명령어를 사용하여 만드는데, makefile이란 그 make 명령을 모아놓은 일종의 스크립트라고 한다. 몇 가지 찾아보니 ubuntu나 gcc에서 주로 사용하는 것 같다. vs만 접해본 나로서는 처음 도시에 발을 들인 시골 사람같은 꼴이 될 수 밖에 없었다.
우분투는 리눅스 배포판으로 windows와 다른 또 하나의 운영체제라고 한다. MS visual studio는 이런 리눅스 운영체제는 지원하지 않는 것 같다. code는 지원하는 것 같지만. 그래서 다른 컴파일러를 사용해야하는데, gcc가 그 중 하나이다. 어찌되었든 핵심은 빌드 과정을 자동으로 처리해주는 게 아니라 내가 직접 손으로 써서 그 과정을 제어하는 방법이라고 볼 수 있겠다.
느낌이 좀 온다. 내가 항상 vs에서 헤더랑 소스를 만들어두면 포함된 소스가 모두 exe파일 안에 들어가게 되는데, 이를 makefile 형식으로 작성을 하면 하나의 프로젝트에서도 결과물이 내가 어떻게 설정하는 가에 따라 어떤 헤더와 소스를 포함시키고 아니면 뺄 건지 이런 걸 옵션으로 둘 수 있게 된다. json 같은 걸로 변수 세팅을 해두는 식이다. 오케이. 일단 여기까진 이해가 된다. 그리고 이 makefile을 생성하는 데 도움을 주기 위한 것이 바로 cmake라는 프로젝트이고.
그러니까 cmake를 이용해서 자기들이 만들어놓은 것들에서 라이브러리를 추출하라는 뜻이다. 그러면 cmake를 설치해야하나 하고 다시 검색을 해보았다. 결과는 이미 visual studio에서 cmake를 지원하고 있었다.
나도 모르는 사이에 windows용 c++ CMAKE 도구가 포함되어 있었다.... 그러면 visual studio에서 cmake파일을 가지고 라이브러리를 생성할 수 있을 것이다.
CMake 파일 오픈 하는 메뉴가 이렇게 나오고,
이놈을 열면 뭔가 쥬르르륵 나온다.
저 버튼을 누르면 JSON 파일이 하나 나오는데,
바로 여기서 Assimp 빌드시 세팅을 해줄 수가 있다. 나중에 Release도 해줘야겠지만 일단은 되는지 확인을 하는게 급하니 debug 모드로, x64로 두고 뭔가 짜잘한 이상해보이는 세팅의 체크를 풀어주었다.
그 다음 Current Document가 체크된 상테이서 저 초록 세모 버튼을 눌러주면 내가 위에 옵션에서 지정한 디렉토리에 파일들이 생성된다. 근데 마지막에 이상한 에러 하나가 뜬다. executable이 없어서 실행을 할 수 없다고 나온다. 영어로. 뭐라는지 모르겠지만 일단 무시했다. 라이브러리가 필요하니까 실행할 필요는 없잖아. 에러인게 좀 무섭지만
이런식으로 out 폴더가 디폴트라서 이 안에 뭐가 막 생긴다.
내가 라이브러리 디렉토리 위치를 install 아래에 넣어가지고 lib가 install 내부에 있었다.
뭐가 많은데, zlibd는 뭐하는 녀석인지 모르겠어서 그냥 싹 다 긁어서 가지고 갔다.
그리고 include의 경우 딸랑 파일 하나만 생성되었는데, config.h 라는 파일이었다. 음... 이것만 넣어도 되나 싶어서 넣고 해봤더니 안된다.(바보라서...)
이 config.h에 더해 기본 리포지트리의 include 내부에 있는 헤더와 소스도 같이 넣어줘야 한다.
이것들을 내 프로젝트의 솔루션 디렉토리에 include, lib라는 폴더를 만들어서 각각 저장했고,
Include Directories와 Library Directories에 해당 경로를 추가해주었다.
그리고 마지막으로 Linker에서 assimp 라이브러리를 추가해준다.
이렇게 하고 실행해보니 잘 된다. 후... 이걸 알고 찾아서 적용하는데 몇 시간이 걸렸는지... 정말 초보구나, 나는. 내일은 이제 assimp를 가지고 모델링 임포트를 해보도록 하자.
음.. 이걸 보는 사람이 또 있을까 싶지만, 만약 있다면 이렇게 해놓고 실행시 에러가 났을 것이다.
dll 파일에대한 경로도 지정해주어야 하는데, 다음 글을 읽고 해보길 바란다.
2020/02/04 - [진행과정 기록/GameEngine] - 20200204 'dll이 없어 실행할 수 없습니다.' 오류 해결
'진행과정 기록 > GameEngine' 카테고리의 다른 글
20200204 'dll이 없어 실행할 수 없습니다.' 오류 해결 (0) | 2020.02.04 |
---|---|
20200203 Model (Assimp사용하여 임포팅) (0) | 2020.02.03 |
20200201 앞으로 할일 (0) | 2020.02.01 |
20200131 Texture, SamplerState (0) | 2020.01.31 |
20200130 Input class - Wheel, Mouse Raw Input (0) | 2020.01.30 |