VCGlib入门记录一
来源:互联网 发布:霸业传奇降级转生数据 编辑:程序博客网 时间:2024/05/23 19:19
1、今天遇到obj文件打不开的问题,主要是在这一步,验证为0,跳过了读取步骤。
“if (header.rfind("OFF") != std::basic_string<char>::npos)”
查一查npos是个什么鬼?
basic_string::npos
static const size_type npos = -1;The constant is the largest representable value of type size_type. It is assuredly larger than max_size(); hence it serves as either a very large value or as a special code.
也有通俗的解释:npos是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type,许多容器都提供这个东西。取值由实现决定,一般是-1,这样做,就不会存在移植的问题了。
2、
rfind全名reversefind
与find相反,
[cpp] view plaincopy
- size_type
rfind( constbasic_string &str, size_type index ); - size_type
rfind( const char *str, size_type index ); - size_type
rfind( const char *str, size_type index, size_type num ); - size_type
rfind( char ch, size_type index );
rfind()函数:
- 返回最后一个与str中的某个字符匹配的字符,从index开始查找。如果没找到就返回string::npos
- 返回最后一个与str中的某个字符匹配的字符,从index开始查找,最多查找num个字符。如果没找到就返回string::npos
- 返回最后一个与ch匹配的字符,从index开始查找。如果没找到就返回string::npos
3、发现vcg::tri::io::ImporterOFF<MyMesh>::Open(m, argv[1])函数 打开的底层代码是针对OFF文件,而非OBJ文件,
OFF,Object File Format,即物体文件格式,是一种三维模型文件格式。
物体文件格式(.off)文件通过描述物体表面的多边形来表示一个模型的几何结构,这里的多边形可以有任意数量的顶点。
普林斯顿形状 Banchmark(Princeton Shape Benchmark)中的 .off 文件遵循以下标准:
- OFF文件全是以OFF关键字开始的ASCII文件。
- 下一行说明顶点的数量、面片的数量、边的数量。边的数量可以安全地省略。
- 顶点按每行一个列出x、y、z坐标。
- 在顶点列表后,面片按照每行一个列表,对于每个面片,顶点的数量是指定的,接下来是顶点索引列表。
详见 一个立方体的简单例子 cube.off:
OFF
顶点数 面片数 边数
x y z
x y z
...
n个顶点 顶点1的索引 顶点2的索引 … 顶点n的索引
...
注意:顶点标号是从0开始(不是从1开始)的,边数总是0。
代码:
*****************************cube.off****************************************
OFF
8 12 0
-0.274878 -0.274878 -0.274878
-0.274878 0.274878 -0.274878
0.274878 0.274878 -0.274878
0.274878 -0.274878 -0.274878
-0.274878 -0.274878 0.274878
-0.274878 0.274878 0.274878
0.274878 0.274878 0.274878
0.274878 -0.274878 0.274878
3 0 1 3
3 3 1 2
3 0 4 1
3 1 4 5
3 3 2 7
3 7 2 6
3 4 0 3
3 7 4 3
3 6 4 7
3 6 5 4
3 1 5 6
3 2 1 6
0 0
- VCGlib入门记录一
- laravel框架入门记录(一)
- vcglib 说明(转载)
- WinCE下驱动开发入门记录(一)
- wince菜鸟入门问题记录一
- [学习记录]Unity界面入门---(一)
- 记录c语言入门学习一
- Mybatis学习记录(一)--Mybatis入门
- Mybatis学习记录(一)--Mybatis入门
- osg入门学习知识点记录一
- java web入门记录(一)
- SpringMVC快速入门记录(一)
- Hibernate4入门学习过程记录一
- [java web 入门](一)MyEclipse & HelloWorld 记录
- 记录一下学习vim的历程(一)入门
- 马士兵 Java入门到精通学习记录 (一)
- MongoDB学习记录:入门(一)——五叶草
- Python爬虫入门一(记录点滴成长)
- intellij IDEA 如何设置默认的maven配置
- python 发送HTTP请求 post json 格式
- 函数名与函数指针
- 虚拟内存-页式存储管理算法
- python学习笔记2-列表与元组
- VCGlib入门记录一
- PHP文件读取操作
- eclipse从数据库逆向生成Hibernate实体类
- 注销 重启 关机 定时
- Java代码实现数组中插入数据
- 远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
- 毕业设计开发过程遇到的问题与解决方案记录
- 虚函数
- 第四届 山东省ACM A^X mod P (分解优化=哈希+打表)