3D Graphics/libigl

libigl을 이용하여 새로운 프로젝트 시작하기

leonhong 2023. 4. 29. 11:58

 

 이전 글(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 파일 생성

프로젝트 종류
main 폼

 

프로젝트 속성 [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;
}

 

아래와 같은 정육면체가 출력되면 성공 ^^.

 

수고하셧습니다~~