OpenMesh读取网格默认是不自动读取obj网格中的法向,纹理坐标等信息的,写入网格同样也是。所以要读取(或写入)这些信息需要修改默认的选项。

先看一下其读写网格的函数

   template<class Mesh>
  bool OpenMesh::IO::read_mesh(
  Mesh &_mesh,
  const std::string &_filename,
  Options &_opt,
  bool _clear = true
  )
   template<class Mesh >
  bool OpenMesh::IO::write_mesh(
  const Mesh &_mesh,
  const std::string &_filename,
  Options _opt = Options::Default,
  std::streamsize _precision =
  )

函数中的参数 Options 就可以控制读写其他信息。

  • OpenMesh的IO::Options::Flag

在OpenMesh的官方文档中,有很多关于IO的options,更详细的内容请看这里  http://www.openmesh.org/media/Documentations/OpenMesh-Doc-Latest/a00231.html#details

    enum Flag
{
Default = 0x0000, Binary = 0x0001, MSB = 0x0002, LSB = 0x0004,
Swap = 0x0006, VertexNormal = 0x0010, VertexColor = 0x0020, VertexTexCoord = 0x0040,
EdgeColor = 0x0080, FaceNormal = 0x0100, FaceColor = 0x0200, FaceTexCoord = 0x0400,
ColorAlpha = 0x0800, ColorFloat = 0x1000, Custom = 0x2000
}

这些options可以让你自定义读取/写入网格。

  • OpenMesh 读网格

如果想要在读取obj网格的时候自动读取纹理坐标,只需要添加读取纹理坐标的option,注意在读取网格之前要先给纹理坐标分配内存,即 request_vertex_texcoords2D()。读取法向或其他信息也是一样。

     OpenMesh::IO::Options opt_read = 0x0040;   //选项控制读取纹理坐标
   ptr_mesh_->request_vertex_texcoords2D();
if ( !OpenMesh::IO::read_mesh(*ptr_mesh_, byfilename.data(), opt_read) )
{
std::cerr<< "Cannot Open mesh to file '1.obj'" << std::endl;
return;
}
  • OpenMesh 写网格

如果要想在写入网格时写入顶点的法向信息,也是同样的。

      OpenMesh::IO::Options opt_write = OpenMesh::IO::Options::VertexNormal;
if (!OpenMesh::IO::write_mesh(*ptr_mesh_, "mesh.obj", opt_write))
{
std::cerr << "Cannot Write mesh to file" << std::endl;
return;
}

如果要控制写入网格的数据精度,也很简单:

 OpenMesh::IO::write_mesh(*ptr_mesh_, "mesh.obj", opt_write,)

OpenMesh 读写网格控制(读取写入纹理坐标,法向等)的更多相关文章

  1. 外设:K9F2G08 nandflash 底层读写、控制驱动程序,可随机读写

    /****************************************************************************** Copyright (C), 2001- ...

  2. Python文件操作:文件的打开关闭读取写入

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  3. java 读写word java 动态写入 模板文件

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...

  4. JXL读取,写入Excel

    JXL读取,写入Excel2003 相关阅读:poi 读写excel2003:http://www.cnblogs.com/gavinYang/p/3576739.htmlpoi 读写excel200 ...

  5. OSG学习:计算纹理坐标

    在很多时候,直接指定纹理坐标是非常不方便的,如曲面纹理坐标,只有少数的曲面(如圆锥.圆柱等)可以在不产生扭曲的情况下映射到平面上,其他的曲面在映射到表面时都会产生一定程度的扭曲.一般而言,曲面表面的曲 ...

  6. Java poi读取,写入Excel2003

    Java poi读取,写入Excel2003 相关阅读:poi读写Excel2007:http://www.cnblogs.com/gavinYang/p/3576741.htmljxl读写excel ...

  7. Java poi读取,写入Excel2007

    Java poi读取,写入Excel2007 相关阅读:poi读写Excel2003:http://www.cnblogs.com/gavinYang/p/3576739.htmljxl读写excel ...

  8. Python 读取写入配置文件 —— ConfigParser

    Python 读取写入配置文件 —— ConfigParser Python 读取写入配置文件很方便,可使用内置的 configparser 模块:可查看源码,如博主本机地址: “C:/python2 ...

  9. [PHP]socket的连接超时 与 读取/写入超时

    socket处理时有两种超时 , 分为连接超时 和 读取/写入数据超时 1. stream_socket_client 函数中的超时时间是连接超时 , 默认是php.ini中的default_sock ...

随机推荐

  1. keystone v3 相关介绍

    1) 涉及到如下几个概念:User.Tenant.Role.Token.http://www.ibm.com/developerworks/cn/cloud/library/1506_yuwz_key ...

  2. 外键约束 以及 数据库中实体的对应关系(1==1,1==n,n==n)

    1.1.1 外键约束 Create database day16; Use day16; 创建部门表: create table dept( did int primary key auto_incr ...

  3. NGUI 滑动页(UIToggle和UIToggledObjects)

    1.NGUI->Create->Scroll View 2.给Scroll View添加一个 UIGrid,自己设置Arragement(横向竖向) 3.给Grid添加元素 4.给元素添加 ...

  4. iOS 在类别里添加成员变量的方法:objc_setAssociatedObject

    今天在github上查看MJPopupViewController这个项目,发现里面用到了objc_setAssociatedObject,用来为类别添加成员变量. 我百度之后,发现有人是这样说明的: ...

  5. ios 在ios9中 NSNotificationCenter addObserver 不会影响对象释放

    如题,ios9上,  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test) name:@&qu ...

  6. java mail api 使用

    所需要的jar包: http://pan.baidu.com/s/1qWGZRJm 如果遇到这个错误:在windows防火墙允许 javaw.exe访问网络.或者关闭防火墙 FATAL ERROR i ...

  7. metro压缩和解压文件

    在1.zip中增加一张新图片StorageFile jpg = await KnownFolders.PicturesLibrary.GetFileAsync("1.jpg"); ...

  8. Match:Oulipo(POJ 3461)

     Oulipo 题目大意:给你一个字符串,要你找到字符串包含指定子串的个数 只要你知道了KMP,这一题简直不要太简单,注意STL的string是会超时的,还是乖乖用char吧 #include < ...

  9. codeforces 490C. Hacking Cypher 解题报告

    题目链接:http://codeforces.com/problemset/problem/490/C 题目意思:给出一个可能有10^6 位长的字符串且没有前导0的整数,问能否一分为二,使得前面的一部 ...

  10. func 和 actin 委托的区别

    一.[action<>]指定那些只有输入参数,没有返回值的委托 1.1定义一个委托: 比如,我们原来写委托: public delegate void myDelegate(string  ...