2013-04-19 6 views
0

개척 CSG 라이브러리를 성공적으로 컴파일하고 사용한 사람이 있습니까? 나는 그것을 프로젝트에서 사용하려고 노력하고 있으며, 제대로 작동하지 못하고있다. 또한, 문서는 꽤 끔찍합니다. Blender 소스를보고 있었는데 성공적으로 Carve를 사용하는 것처럼 보였습니다. 그러나 복제하는 데 문제가있었습니다. 여기 개척 CSG 라이브러리

내가 개척과 함께 사용할 단지 큐브를 생성, 사용하려고 시도했던 코드입니다 :

std::vector<carve::geom3d::Vector> vertices; 

vertices.push_back(carve::geom::VECTOR(+1.0, +1.0, +1.0)); 
vertices.push_back(carve::geom::VECTOR(-1.0, +1.0, +1.0)); 
vertices.push_back(carve::geom::VECTOR(-1.0, -1.0, +1.0)); 
vertices.push_back(carve::geom::VECTOR(+1.0, -1.0, +1.0)); 
vertices.push_back(carve::geom::VECTOR(+1.0, +1.0, -1.0)); 
vertices.push_back(carve::geom::VECTOR(-1.0, +1.0, -1.0)); 
vertices.push_back(carve::geom::VECTOR(-1.0, -1.0, -1.0)); 
vertices.push_back(carve::geom::VECTOR(+1.0, -1.0, -1.0)); 

std::vector<int> f; 
int numfaces = 6; 

f.push_back(4); 
f.push_back(0); 
f.push_back(1); 
f.push_back(2); 
f.push_back(3); 

f.push_back(4); 
f.push_back(7); 
f.push_back(6); 
f.push_back(5); 
f.push_back(4); 

f.push_back(4); 
f.push_back(0); 
f.push_back(4); 
f.push_back(5); 
f.push_back(1); 

f.push_back(4); 
f.push_back(1); 
f.push_back(5); 
f.push_back(6); 
f.push_back(2); 

f.push_back(4); 
f.push_back(2); 
f.push_back(6); 
f.push_back(7); 
f.push_back(3); 

f.push_back(4); 
f.push_back(3); 
f.push_back(7); 
f.push_back(4); 
f.push_back(0); 

carve::mesh::MeshSet<3> *poly = new carve::mesh::MeshSet<3> (vertices, numfaces, f); 
장기 실행 루프에 떨어지는, 마지막 줄에 갇히지 것으로 보인다

, 그때 seg-faulting.

답변

0

블렌더 소스의 버전을 사용하고 있습니까? 다른 종류의 오류가 있었지만 나는 그와 함께 약간의 문제가있었습니다. 내 문제는 믹서기 라이브러리가 컴파일 된 동일한 컴파일러 플래그를 모두 사용하여 컴파일하지 못했다는 점입니다. 빌드에 추가 할 때 모든 것이 잘 동작했습니다. 일반적으로 라이브러리를 사용하는 데 필요한 비밀 컴파일러 플래그에 대해서는 애원하지만 블렌더 프로젝트에는 내부적입니다. CMake를 통해 블렌더 카브 라이브러리를 빌드하는 경우, "make VERBOSE = 1"(닌자를 사용하는 경우 "ninja -v")로 컴파일하여 모든 것을 컴파일 한 방법을 정확히 확인한 다음 빌드를 적절하게 수정할 수 있습니다. 내가 사용 플래그 (분명이 아마 시간이 지남 및 빌드 환경에서 변경됩니다, 그들이 올바른 인에 의존하지 않는)가 있습니다 : 나는 필요한 최소 설정하려면 다음을 줄이기 위해 시도하지 않은

-DCARVE_SYSTEM_BOOST -DDEBUG -DHAVE_BOOST_UNORDERED_COLLECTIONS -DHAVE_STDBOOL_H -DWITH_BOOL_COMPAT -D_DEBUG -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D__LITTLE_ENDIAN__ -D__MMX__ -D__SSE2__ -D__SSE__ 

; 나는 단지 내 탐험/테스트 코드 빌드와 관련이있는 모든 플래그를 잘라내어 붙여 넣었다.