有没有人成功编译并使用了Carve库?我正试图在一个项目中使用它,但我还没能让它工作。此外,文档也非常糟糕。我一直在看Blender的源代码,它似乎成功地使用了Carve,但我在复制它时遇到了麻烦。
这是我一直在尝试使用的代码,只是为了创建一个用于cube的多维数据集:
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);它似乎卡在了最后一条线上,陷入了一个长时间运行的循环,然后出现了凹陷故障。
发布于 2013-10-02 00:17:56
您使用的是来自搅拌器源代码的版本吗?我在这方面也遇到了一些问题,尽管我得到了不同类型的错误。我的问题是,我没有使用编译blender carve库时使用的所有编译器标志进行编译。当我将它们添加到我的构建中时,一切都运行得很好。通常,我会抱怨使用库所需的秘密编译器标志,但它是blender项目的内部标志。如果你正在通过CMake构建搅拌器雕刻库,你可以使用"make VERBOSE=1“(如果你使用的是忍者-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__我没有试图将它们减少到最低要求的集合;我只是剪切并粘贴了所有似乎与我的探索性/测试代码构建相关的标志。
https://stackoverflow.com/questions/16102029
复制相似问题