이전 글(libigl 시작하기)에서
libigl을 설치하고 예제를 돌려보았다면 나만의 프로젝트를 시작해 보자.
목표
libigl을 이용하여 내프로젝트를 만들기.
추가 목표
빠른 컴파일을 위한 환경 설정 : 원래 libigl은 header 파일만 있으면 사용할수 있어서, 사전 빌드과정이 필요는 없다. 하지만 이 방식을 사용하면 코드 한 줄을 고칠때마다 전체 빌드를 해야 하므로 개발할때 답답해진다. 코도 한줄 고치고 20초간 컴파일한다고 생각하면 개발이 너무 지루해진다. 그래서 이전글을 참고해서 빌드를 했다면 정적 라이브러리 파일이 하나 생성되는데 해당 라이브러리파일을 이용하여 빌드시간을 줄이는 환경을 설정하면 개발이 편해진다.
선행조건
개발툴 : Visual studio 2022 Community
libigl include 경로 : C:\libigl\include
libigl 빌드된 경로 : C:\libigl\build
pc 사양 :
GPU 3070
개발 환경 설정
Window용 C++ 빈프로젝트 만들어서 main.cpp 파일 생성
프로젝트 속성 [C/C++] [추가 포함 디렉토리]에 3개 경로(C:\libigl\include;C:\libigl\build\_deps\glad-src\include;C:\libigl\build\_deps\glfw-src\include) 추가
프로젝트 속성 [C/C++] [전처리기 정의]에 IGL_STATIC_LIBRARY 추가
- 이 옵션이 빠른 컴파일을 위한 설정이므로 꼭 해주자. 안하면 컴파일 20초의 지옥이 펼쳐진다.
프로젝트 속성 [C/C++] [모든 옵션] [추가 옵션]에
%(AdditionalOptions) /external:I "C:/libigl/build/_deps/eigen-src" /bigobj 추가
프로젝트 속성 [링커] [추가 라이브러리 디렉터리]에 C:\libigl\build\lib\<개발구성> 설정
프로젝트 속성 [링커] [입력] [추가 종속성]에 아래 종속성들 추가igl.lib;igl_glfw.lib;igl_opengl.lib;glad.lib;glfw3.lib;opengl32.lib;kernel32.lib;
user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;
comdlg32.lib;advapi32.lib;%(AdditionalDependencies)
코드 작성 및 실행
아래의 코드를 입력
#include <igl/readOBJ.h>
#include <igl/opengl/glfw/Viewer.h>
#include <igl/cotmatrix.h>
#include <iostream>
using namespace std;
using namespace Eigen;
int main()
{
Eigen::MatrixXd V;
Eigen::MatrixXi F;
// libigl에서 제공하는 기본 obj 파일을 로드
igl::readOBJ("C:/libigl/build/_deps/libigl_tutorial_tata-src/cube.obj", V, F);
// 입력된 데이터의 정점과 페이스 출력
std::cout << "Vertices: " << std::endl << V << std::endl;
std::cout << "Faces: " << std::endl << F << std::endl;
igl::opengl::glfw::Viewer viewer;
viewer.data().set_mesh(V, F);
viewer.launch();
return 0;
}
아래와 같은 정육면체가 출력되면 성공 ^^.
수고하셧습니다~~
'3D Graphics > libigl' 카테고리의 다른 글
libigl에서 Colormap(Lookup Table) 사용하기 (0) | 2023.05.05 |
---|---|
libigl에서 Rendering 관련 옵션들 (0) | 2023.05.05 |
libigl에서 Keyboard, Mouse Picking 이벤트 처리 (0) | 2023.05.05 |
libigl 시작하기 (0) | 2023.04.23 |