CG|CGAL-SDF原理讲解以及使用
综述
最近老师安排我们熟悉CGAL的SDF工具。上周才弄完,这周发一下。
作业较多所以拖的有点晚。
环境
clion
基础知识
SDF详细讲解
这里面讲的很详细,但是需要注意SDF算法本身是有缺陷的。对于那么环状的处理是不佳的。
代码
核心代码 导入为mesh
SM mesh;
if (argc==2){
std::ifstream input(argv[1]);
input >> mesh;
} else {
std::ifstream cactus("/Users/frankdura/Desktop/CG_playground/bunny.off");
cactus >> mesh;
}
//将mesh导入
将mesh灌入函数,在此之前你需要将面与id相关联
CGAL::sdf_values(mesh, sdf_property_map);
【CG|CGAL-SDF原理讲解以及使用】对mesh分割
std::size_t number_of_segments = CGAL::segmentation_from_sdf_values(mesh, sdf_property_map, segment_property_map);
完整代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef CGAL::Surface_mesh SM;
typedef boost::graph_traits::face_descriptor face_descriptor;
int main(int argc, char** argv )
{
SM mesh;
if (argc==2){
std::ifstream input(argv[1]);
input >> mesh;
} else {
std::ifstream cactus("/Users/frankdura/Desktop/CG_playground/bunny.off");
cactus >> mesh;
}
//将mesh导入
typedef SM::Property_map Facet_double_map;
Facet_double_map sdf_property_map;
sdf_property_map = mesh.add_property_map("f:sdf").first;
CGAL::sdf_values(mesh, sdf_property_map);
// 为每个segment创建联系
typedef SM::Property_map Facet_int_map;
Facet_int_map segment_property_map = mesh.add_property_map("f:sid").first;
;
// segment the mesh using default parameters for number of levels, and smoothing lambda
// Any other scalar values can be used instead of using SDF values computed using the CGAL functionstd::size_t number_of_segments = CGAL::segmentation_from_sdf_values(mesh, sdf_property_map, segment_property_map);
typedef CGAL::Face_filtered_graph Filtered_graph;
Filtered_graph segment_mesh(mesh, 0, segment_property_map);
for(std::size_t id = 0;
id < number_of_segments;
++id)
{
if(id > 0)
segment_mesh.set_selected_faces(id, segment_property_map);
//得到被选中的曲面
std::cout << "Segment "<
推荐阅读
- 做一件事情的基本原理是什么()
- 【读书笔记】贝叶斯原理
- SG平滑轨迹算法的原理和实现
- “写作宝典”《金字塔原理》之读书笔记
- 演讲手势
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- Vue源码分析—响应式原理(二)
- MYSQL主从同步的实现
- (1)redis集群原理及搭建与使用(1)