OpenMesh 读写网格控制(读取写入纹理坐标,法向等)
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 读写网格控制(读取写入纹理坐标,法向等)的更多相关文章
- 外设:K9F2G08 nandflash 底层读写、控制驱动程序,可随机读写
/****************************************************************************** Copyright (C), 2001- ...
- Python文件操作:文件的打开关闭读取写入
Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...
- java 读写word java 动态写入 模板文件
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...
- JXL读取,写入Excel
JXL读取,写入Excel2003 相关阅读:poi 读写excel2003:http://www.cnblogs.com/gavinYang/p/3576739.htmlpoi 读写excel200 ...
- OSG学习:计算纹理坐标
在很多时候,直接指定纹理坐标是非常不方便的,如曲面纹理坐标,只有少数的曲面(如圆锥.圆柱等)可以在不产生扭曲的情况下映射到平面上,其他的曲面在映射到表面时都会产生一定程度的扭曲.一般而言,曲面表面的曲 ...
- Java poi读取,写入Excel2003
Java poi读取,写入Excel2003 相关阅读:poi读写Excel2007:http://www.cnblogs.com/gavinYang/p/3576741.htmljxl读写excel ...
- Java poi读取,写入Excel2007
Java poi读取,写入Excel2007 相关阅读:poi读写Excel2003:http://www.cnblogs.com/gavinYang/p/3576739.htmljxl读写excel ...
- Python 读取写入配置文件 —— ConfigParser
Python 读取写入配置文件 —— ConfigParser Python 读取写入配置文件很方便,可使用内置的 configparser 模块:可查看源码,如博主本机地址: “C:/python2 ...
- [PHP]socket的连接超时 与 读取/写入超时
socket处理时有两种超时 , 分为连接超时 和 读取/写入数据超时 1. stream_socket_client 函数中的超时时间是连接超时 , 默认是php.ini中的default_sock ...
随机推荐
- ModelState.IsValid
model内的设置如下所示: /// <summary> /// 取得或设置邮编 /// </summary> [RegularExpression(@"(^[1-9 ...
- 数据库Error:The ScriptCollection in ScriptName not find
System.InvalidOperationException: The ScriptCollection in ScriptName not find 在 WMI.SQL.HELPER.CONFI ...
- 【leetcode】Merge Intervals
Merge Intervals Given a collection of intervals, merge all overlapping intervals. For example,Given ...
- wxPython+Boa Constructor环境配置
配置之前先完成eclipse + Pydev的配置环境.详见http://www.cnblogs.com/dflower/archive/2010/05/13/1734522.html 1. 安装 w ...
- Java集合中List的用法
List接口是Collection接口的子接口,List有一个重要的实现类--ArrayList类,List中的元素是有序排列的而且可重复,所以被称为是序列. List可以精确的控制每个元素的插入位置 ...
- jquery UI 弹出框
2015-07-17 11:04:38 <div id="reg"></div> <script type="text/javascript ...
- 回调函数中使用MFC类的成员或对话框控件的简单方法
在MFC的很多程序中,常常需要在回调函数中调用MFC类的类成员变量.类成员函数,亦或者对话框控件的句柄.由于回调函数是基于C编程的Windows SDK的技术,而类成员又有this指针客观条件限制.. ...
- [转帖]海森矩阵(Hessian matrix)
http://hi.baidu.com/imheaventian/item/c8591b19907bd816e2f98612
- 【python】lxml中多个xml采用相同节点时出现的问题
今天突然发现了一个lxml的坑. 假设我们有一个节点 <id>123</id> 有两个父节点都要用上述节点,则必须把上面的节点写两遍!用同一个会出错! 出错例子: #!/usr ...
- DB2 Add hidden Identity columns
An identity column contains a unique numeric value for each row in the table. DB2® can automatically ...