obj模型文件的格式

2023-05-16

obj模型的格式

  • 带纹理的obj模型
  • mtl材质文件
  • 推荐参考库文件
    • tiny_obj_loader
    • assimp

带纹理的obj模型

一般带纹理的obj模型需要有以下三个文件,分别是.obj文件,.mtl纹理库文件,还有纹理贴图(这里是.jpg)如图所示:
在这里插入图片描述
用记事本或者其他工具打开查看.obj文件的内部结构如下图所示:
详细讲解下.obj文件结构

  1. #代表文件的注释,用来描述具体的内容注释,当读到#时,可跳过该行。
  2. mtllib xxx.mtl代表obj文件中包含纹理库信息(如右图所示,纹理信息后面详细讲解)
    在这里插入图片描述
v  -8.6007 1.3993 10.0000
  1. 格式:v (vertices) x y z
    意义:每个顶点的坐标
vt 0.0000 1.0000 0.0000
  1. 格式:vt (vertex texture) u v或者vt u v w 通常是0-1
    意义:纹理坐标
vn 0.0000 0.0000 -1.0000
  1. 格式:vn (vertex normal) x y z
    意义:顶点法矢方向
f 1/1/1 2/2/1 3/3/1 
  1. 格式 :f v/vt/vn v/vt/vn v/vt/vn顶点索引 / 纹理坐标索引 / 顶点法向量索引
    意义:构成的面
    注意:其中面的构成可以只由:v、v/vt、v//vn(两斜杠)、v/vt/vn等情况构成,且顶点的个数也不一定要为3个,可以大于等于3如下所示:表示为5边形的面结构
f 1 2 3 4 5
仅包含顶点f v1 v2 v3 ....
包含顶点和纹理f v1/vt1 v2/vt2 v3/vt3 ...
包含顶点纹理和法线f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3 ...
包括顶点和法线f v1//vn1 v2//vn2 v3//vn3 ...
  1. Group声明用于组织模型的单元(element)以及简化数据操作
o:代表object,表示不同的对象名称
对象是由组构成,比如一个城镇是一个对象,它有许多房子,每个房子都被认为是一个组,而每个房子又包含了很多子组,比如窗户,们,墙,屋顶等。

g:代表group,顶点或者三角面片的集合名称
组是由一系列面构成,这些面使用同样的属性,比如同样的材质。

s:代表smooth
s 1
...
s 2
...
smooth shading还可以被关闭
s off
``
`

# 材质引用
一个材质库是一个伴随.obj文件的独立文件,它为每个组定义了材质。.obj文件常常会包含一个材质库文件,有时它还会包含多个材质库文件。

包含mtl文件
```cpp
mtllib xxx.mtl
  ...

使用mtl文件

usemtl xxx
  ...

mtl材质文件

# 
# Wavefront material file
# Converted by the DEEP Exploration  2.1.12.1218
# Right Hemisphere, LTD
# http://www.righthemisphere.com/
# 
//定义材质以newmtl开头
newmtl inside //newmtl之后的都是材质的定义,它的范围是直到另一个新的newmtl出现,或该文件的结束才停止。
Ka 0.4 0.4 0.4//Ka - 环境光
Kd 0.587609 0.587609 0.587609//Kd-漫反射颜色
Ks 0.071744 0.071744 0.071744//Ks-镜面颜色
illum //1illum-光照模型
Ns 32

newmtl outside
Ka 0 0 0
Kd 1 1 1
Ks 0.384296 0.194061 0.174387
illum 2
//每个材质允许使用多照明模型。枚举如下:
//0. 色彩开,阴影色关
//1. 色彩开,阴影色开
//2. 高光开
//3. 反射开,光线追踪开
//4. 透明: 玻璃开 反射:光线追踪开
//5. 反射:菲涅尔衍射开,光线追踪开
//6. 透明:折射开 反射:菲涅尔衍射关,光线追踪开
//7. 透明:折射开 反射:菲涅尔衍射开,光线追踪开
//8. 反射开,光线追踪关
//9. 透明: 玻璃开 反射:光线追踪关
//10. 投射阴影于不可见表面
Ns 64//指定材质的反射指数,定义了反射高光度。64是反射指数值,该值越高则高光越密集,一般取值范围在0~1000。
//map_Ka - 环境光贴图
map_Kd cup.jpg//map-Kd - 漫反射颜色贴图
//map_Ks - 镜面颜色贴图

设置完成后打开obj文件得到的模型如下所示:
在这里插入图片描述

推荐参考库文件

tiny_obj_loader

tiny_obj_loader

assimp

assimp

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

obj模型文件的格式 的相关文章

随机推荐

  • Opencv图像美颜滤镜

    图像美颜 span class token keyword void span span class token function BeautyFace span span class token punctuation span span
  • Simplify3D打印参数设置

    Simplify3D打印参数设置 关键是打印进程的设定 xff0c 这边以TPU为例子 xff0c 其他材料可以查阅相关参数进行喷头温度 xff0c 打印速度的修改 xff0c 其他的基本一致 设置完成后进行模型切片 xff0c 完成后点击
  • CSDN如何转载一篇博客呢

    看到一篇挺好的文章想要转载怎么做呢 xff1f 方法一 xff1a 傻瓜式复制 不推荐 方法二 后台操作 推荐 方法一 xff1a 傻瓜式复制 不推荐 一个个图文抠 xff0c 效率低下 xff0c 且版面格式会发生变化 方法二 后台操作
  • Exchange 2013升级以及域名绑定等若干问题

    环境简介 Exchange 2013服务器位于ad域中 xff0c 系统为Windows server 2012 R2 xff0c 其内部域名为 xff1a mail ad com 一 Exchange客户端无法在浏览器中正常运行 在域中部
  • 无线攻击 --Wifite(批量破解无线工具)

    文章目录 一 用法概述二 命令格式三 用法示例3 1 破解某个AP 一 用法概述 Wifite使用命令行界面连续攻击多个WPA WPS加密的网络 xff0c 不需要记住参数即可使用它 xff1a 按信号强度排序 xff08 db单位 xff
  • 图像轮廓提取算法(Opencv基于C++实现)

    Opencv图像轮廓提取 0 实现结果如下 xff1a 1 打开图像代码2 轮廓提取函数3 代码实现 本文主要实现了图像的轮廓提取 xff0c 首先先给出直观的轮廓实现结果 xff1a 0 实现结果如下 xff1a 1 打开图像代码 注意图
  • c++实现2048小游戏

    C 43 43 实现2048 2048小游戏界面展示效果图 xff1a span class token macro property span class token directive hash span span class toke
  • OpenGL深度测试

    OpenGL深度测试 1 深度缓冲 Depth Buffer 2 深度缓冲实现3 深度测试函数测试对比4 深度冲突 Z fighting 1 深度缓冲 Depth Buffer 深度缓冲是由窗口系统自动创建的 xff0c 它会以16 24或
  • OpenGL渲染STL三角网格模型

    Opengl绘制STL模型 实现效果STL模型文件实现代码 实现效果 首先先看看使用可编程管线实现的STL模型的渲染效果 xff0c 网格模型的数量大约在100来万 xff0c 实现的效果还是挺鲁棒 STL模型文件 关于STL的文件格式主要
  • Opengl同时显示模型和三角网格线框

    Opengl同时显示模型和三角网格线框 glPolygonMode 函数及相关参数同时显示模型和三角网格线框 glPolygonMode 函数及相关参数 glPolygonMode 参数1 参数2 参数1 可以为 xff1a GL FRON
  • Shader Language编程语言(CG/HLSL/GLSL)

    Shader Language编程语言 Shader Language编程语言 Shader Language编程语言 Shader Language目前主要有3种主流语言 xff1a 基于 OpenGL 的 OpenGL Shading
  • D3D12编译遇到的问题

    D3D12编译遇到的问题 X3501 39 main 39 entrypoint not foundLNK2019 无法解析的外部符号 main xff0c 函数 34 int cdecl invoke main void 34 invok
  • VS2019CPU/内存诊断功能

    VS2019诊断功能 vs代码内存 CPU使用率诊断内存泄漏诊断 vs代码内存 CPU使用率诊断 在代码运行过程中 xff0c 有时候会出现内存泄漏 xff0c 内存 CPU占用过高等情况 xff0c 这些情况的出现十分影响代码的运行效率和
  • C++和Python Java的区别

    C 43 43 和Python Java的区别 C 43 43 执行效率高 xff0c 编程难 开发效率低 Python执行效率低 xff0c 编程简单 开发效率快 C 43 43 为编译性编程语言 xff0c Python 则为解释性编程
  • 实时渲染和离线渲染

    实时渲染和离线渲染 1 实时渲染2 离线渲染3 对比 1 实时渲染 实时渲染指的是一边计算画面 xff0c 一边输出显示 特点是 xff1a 能实时操控 实时交互 xff0c 并且以极高的速度将3D图像处理了 xff0c 同时实现了逼真的效
  • Linux中crontab的坑爹环境变量问题

    手动在CentOS中执行sh脚本 xff0c 调用java程序 xff0c 一切正常 xff1b 将该sh加入crontab中定时调度之后 xff0c 挂了 xff0c 完全没有执行到的感觉啊 xff01 xff01 xff01 查看cro
  • Win32窗口

    Win32窗口 span class token comment windows 开发所需头文件 包含Windows开发所需要的宏 类 函数 结构体等结构的定义 span span class token macro property sp
  • MFC按钮禁用实现

    MFC按钮禁用 m Bn xxx span class token punctuation span span class token function EnableWindow span span class token punctuat
  • MFC屏幕截图

    屏幕截图 实现屏幕截图 xff0c 并保存多张图片 截图的效果 span class token keyword void span span class token class name CMFCApplication1Dlg span
  • obj模型文件的格式

    obj模型的格式 带纹理的obj模型mtl材质文件推荐参考库文件tiny obj loaderassimp 带纹理的obj模型 一般带纹理的obj模型需要有以下三个文件 xff0c 分别是 obj文件 xff0c mtl纹理库文件 xff0