openmesh的文件操作
//读文件
OpenMesh::IO::read_mesh(mesh, filename);
//写文件
OpenMesh::IO::write_mesh(mesh, filename);
读文件
Mesh src_mesh;
Mesh tar_mesh;
std::string src_file;
std::string tar_file;
std::string out_file;
RegParas paras;
//读文件
Registration* reg;//我新建了一个类,要读取参数并进行初始化
bool use_demean = false;
read_data(src_file, src_mesh, use_demean);
read_data(tar_file, tar_mesh, use_demean);
if(src_mesh.n_vertices()==0 || tar_mesh.n_vertices()==0)
{
exit(0);
}
double scale;
scale = mesh_scaling(src_mesh, tar_mesh);
scale = 1;
//写文件
write_data(out_file.c_str(), src_mesh, use_demean, scale);
std::cout << "write result to " << out_file << std::endl;
delete reg;
read_data(src_file, src_mesh, use_demean);
bool read_data(const std::string filename, Mesh& mesh, bool use_demean)
{
//将文件读到mesh中
bool read_OK = OpenMesh::IO::read_mesh(mesh, filename);
std::cout << "filename = " << filename << std::endl;
if (read_OK)
{
mesh.request_vertex_status();
mesh.request_edge_status();
mesh.request_face_status();
mesh.request_face_normals();
mesh.request_vertex_normals();
printBasicMeshInfo(mesh, use_demean);
mesh.update_face_normals();
mesh.update_vertex_normals();
return true;
}
std::cout << "#vertices = " << mesh.n_vertices() << std::endl;
return false;
}
读文件修改文件1-read_data()
printBasicMeshInfo()中更新点的坐标:
M e s h S c a l e s = [ 1 n ∑ i = 0 N x i , 1 n ∑ i = 0 N y i , 1 n ∑ i = 0 N z i ] MeshScales=[\frac 1 n\sum_{\mathclap{i=0}}^N x_{i},\frac 1 n\sum_{\mathclap{i=0}}^N y_{i},\frac 1 n\sum_{\mathclap{i=0}}^N z_{i}] MeshScales=[n1i=0∑Nxi,n1