GLM中文使用说明
2012-02-15 21:56
417 查看
OBJ文件:
这里的OBJ文件是Wavefront公司的一种3D模型文件,不是VC在连接过程中产生的OBJ文件。GLM实现了用C语言对OBJ文件的常用操作,用于简单的3D游戏编程应该足够了。3DS MAX,MAYA都可以把模型以OBJ文件格式导出。OBJ文件中包含模型的顶点,面,三角形,法向,纹理坐标等数据,但是其中不包含纹理和材质。材质可以放在OBJ文件中指定一个材质库文件中,使用时材质库文件一般和OBJ文件放在一起。纹理图形就要自己想办法了。
//模型数据结构:
struct GLMmodel{
char* pathname; //模型文件和材质库的路径
char* mtllibname; //材质库名
GLuint numvertices; //顶点数
GLfloat* vertices; //储存顶点的向量
GLuint numnormals; //模型法向数
GLfloat* normals; //储存法向的向量
GLuint numtexcoords; //纹理坐标数
GLfloat* texcoords; //储存纹理坐标的向量
GLuint numfacetnorms; //规则平面数
GLfloat* facetnorms; //储存规则平面的向量
GLuint numtriangles; //三角形数
GLMtriangle* triangles; //储存三角形的向量
GLuint nummaterials; //材质数
GLMmaterial* materials; //储存材质的向量
GLuint numgroups;//图元组数
GLMgroup* groups;//储存图元组的向量
GLfloat position[3];//模型的位置
了解这个模型数据结构主要用于自己扩充操作,以下是glm提供的相关操作:
//单位化模型model并返回缩放比例因子
单位化就是把模型通过平移和缩放变换限制到3维坐标系中点为中心的一个单位正方体区域内
GLfloat glmUnitize(GLMmodel* model);
//计算模型的宽,高,深尺寸,结果保存在dimensions所指的3元素数组中
GLvoid glmDimensions(GLMmodel* model, GLfloat* dimensions);
//按比例参数缩放模型,参数大于1放大,大于0小于1缩小,小于0反射,等于0缩小到0
GLvoid glmScale(GLMmodel* model, GLfloat scale);
//反转模型的多边形顶点顺序,同时反转法向量,默认多边形顶点顺序是逆时针的。
GLvoid glmReverseWinding(GLMmodel* model);
//计算模型面的法向(假定多边形顶点顺序为逆时针)
GLvoid glmFacetNormals(GLMmodel* model);
//计算模型的平滑顶点法向,angle参数为平滑交叉的最大角度(角度制)
GLvoid glmVertexNormals(GLMmodel* model, GLfloat angle);
//按线性投影产生纹理坐标,它把顶点线性映射到矩形上
GLvoid glmLinearTexture(GLMmodel* model);
//按球形映射产生纹理坐标
GLvoid glmSpheremapTexture(GLMmodel* model);
//从内存中释放模型
GLvoid glmDelete(GLMmodel* model);
//从Wavefront公司标准的.OBJ文件中读取模型
GLMmodel* glmReadOBJ(char* filename);
//将模型按Wavefront .OBJ文件格式写入文件,文件名由filename参数指定
//mode指定写入方式,此参数为取或(“|”)的位联合:
//GLM_NONE - 只按顶点处理
//GLM_FLAT - 按面计算法向
//GLM_SMOOTH - 按顶点计算法向
//GLM_TEXTURE - 包含纹理座标
//GLM_COLOR - 只包含颜色信息(纯色材质)
//GLM_MATERIAL - 包含材质信息
//其中GLM_FLAT和GLM_SMOOTH不能同时指定
//GLM_COLOR和GLM_MATERIAL也不能同时指定
GLvoid glmWriteOBJ(GLMmodel* model, char* filename, GLuint mode);
//按mode指定模式使用当前的OPENGL绘制上下文(context)绘制模型
//mode参数同glmReadOBJ中的mode参数
GLvoid glmDraw(GLMmodel* model, GLuint mode);
//由模型生成OPENGL显示列表并返回显示列表索引号
//其中mode参数同glmWriteOBJ和glmDraw中的mode参数
GLuint glmList(GLMmodel* model, GLuint mode);
//合并模型中差别很小的顶点,epsilon参数指定要合并顶点间的最大差距
//推荐epsilon参数0.00001为焊接模型的起点
GLvoid glmWeld(GLMmodel* model, GLfloat epsilon);
//读取PPM格式的图形文件
//返回一个24位色的图象指针(可用于OPENGL纹理映射和图象绘制函数)
//同时图象尺寸存储在width,height指针参数指定的地址中
glmReadPPM(char* filename, int* width, int* height);
这里的OBJ文件是Wavefront公司的一种3D模型文件,不是VC在连接过程中产生的OBJ文件。GLM实现了用C语言对OBJ文件的常用操作,用于简单的3D游戏编程应该足够了。3DS MAX,MAYA都可以把模型以OBJ文件格式导出。OBJ文件中包含模型的顶点,面,三角形,法向,纹理坐标等数据,但是其中不包含纹理和材质。材质可以放在OBJ文件中指定一个材质库文件中,使用时材质库文件一般和OBJ文件放在一起。纹理图形就要自己想办法了。
//模型数据结构:
struct GLMmodel{
char* pathname; //模型文件和材质库的路径
char* mtllibname; //材质库名
GLuint numvertices; //顶点数
GLfloat* vertices; //储存顶点的向量
GLuint numnormals; //模型法向数
GLfloat* normals; //储存法向的向量
GLuint numtexcoords; //纹理坐标数
GLfloat* texcoords; //储存纹理坐标的向量
GLuint numfacetnorms; //规则平面数
GLfloat* facetnorms; //储存规则平面的向量
GLuint numtriangles; //三角形数
GLMtriangle* triangles; //储存三角形的向量
GLuint nummaterials; //材质数
GLMmaterial* materials; //储存材质的向量
GLuint numgroups;//图元组数
GLMgroup* groups;//储存图元组的向量
GLfloat position[3];//模型的位置
了解这个模型数据结构主要用于自己扩充操作,以下是glm提供的相关操作:
//单位化模型model并返回缩放比例因子
单位化就是把模型通过平移和缩放变换限制到3维坐标系中点为中心的一个单位正方体区域内
GLfloat glmUnitize(GLMmodel* model);
//计算模型的宽,高,深尺寸,结果保存在dimensions所指的3元素数组中
GLvoid glmDimensions(GLMmodel* model, GLfloat* dimensions);
//按比例参数缩放模型,参数大于1放大,大于0小于1缩小,小于0反射,等于0缩小到0
GLvoid glmScale(GLMmodel* model, GLfloat scale);
//反转模型的多边形顶点顺序,同时反转法向量,默认多边形顶点顺序是逆时针的。
GLvoid glmReverseWinding(GLMmodel* model);
//计算模型面的法向(假定多边形顶点顺序为逆时针)
GLvoid glmFacetNormals(GLMmodel* model);
//计算模型的平滑顶点法向,angle参数为平滑交叉的最大角度(角度制)
GLvoid glmVertexNormals(GLMmodel* model, GLfloat angle);
//按线性投影产生纹理坐标,它把顶点线性映射到矩形上
GLvoid glmLinearTexture(GLMmodel* model);
//按球形映射产生纹理坐标
GLvoid glmSpheremapTexture(GLMmodel* model);
//从内存中释放模型
GLvoid glmDelete(GLMmodel* model);
//从Wavefront公司标准的.OBJ文件中读取模型
GLMmodel* glmReadOBJ(char* filename);
//将模型按Wavefront .OBJ文件格式写入文件,文件名由filename参数指定
//mode指定写入方式,此参数为取或(“|”)的位联合:
//GLM_NONE - 只按顶点处理
//GLM_FLAT - 按面计算法向
//GLM_SMOOTH - 按顶点计算法向
//GLM_TEXTURE - 包含纹理座标
//GLM_COLOR - 只包含颜色信息(纯色材质)
//GLM_MATERIAL - 包含材质信息
//其中GLM_FLAT和GLM_SMOOTH不能同时指定
//GLM_COLOR和GLM_MATERIAL也不能同时指定
GLvoid glmWriteOBJ(GLMmodel* model, char* filename, GLuint mode);
//按mode指定模式使用当前的OPENGL绘制上下文(context)绘制模型
//mode参数同glmReadOBJ中的mode参数
GLvoid glmDraw(GLMmodel* model, GLuint mode);
//由模型生成OPENGL显示列表并返回显示列表索引号
//其中mode参数同glmWriteOBJ和glmDraw中的mode参数
GLuint glmList(GLMmodel* model, GLuint mode);
//合并模型中差别很小的顶点,epsilon参数指定要合并顶点间的最大差距
//推荐epsilon参数0.00001为焊接模型的起点
GLvoid glmWeld(GLMmodel* model, GLfloat epsilon);
//读取PPM格式的图形文件
//返回一个24位色的图象指针(可用于OPENGL纹理映射和图象绘制函数)
//同时图象尺寸存储在width,height指针参数指定的地址中
glmReadPPM(char* filename, int* width, int* height);
相关文章推荐
- GLM中文使用说明
- GLM中文使用说明
- jQuery验证控件jquery.validate.js使用说明+中文API(转)
- ffmpeg]ffmpeg使用参数的中文说明
- Google Map API使用详解(二)——Google Map API中文说明
- FCKEDITOR中文使用说明
- jQuery验证控件jquery.validate.js使用说明+中文API
- jQuery验证控件jquery.validate.js使用说明+中文API
- Android:LeakCanary 中文使用说明
- 【转】jquery ui中文说明(使用方法)
- jquery ui中文说明(使用方法)
- Android 和 Java 内存泄露检测 LeakCanary 中文使用说明
- jQuery验证控件jquery.validate.js使用说明+中文API
- sshd 中文使用说明书
- jquery.uploadify上传插件HTML5版中文api使用说明
- jQuery验证控件jquery.validate.js使用说明+中文API
- weka中文使用说明(五)
- LeakCanary 中文使用说明
- jQuery验证控件jquery.validate.js使用说明+中文API
- jQuery验证控件jquery.validate.js使用说明+中文API