抖音资讯

douyinzx

obj文件格式是什么(编译后生成的obj文件理解)

iseeyu2年前 (2024-05-03)抖音资讯147

你是否好奇那些3D游戏中复杂的角色、建筑、场景是怎么实现的,美工使用3D建模软件设计好角色模型之后,程序又是怎么让它们动起来的哪?

在计算机中,3D角色等模型最终都是存储成文件,这些文件必然携带了角色形状、材质等属性,程序就是通过读取并解析这些文件,通过代码控制它们动起来,创造了一个又一个精彩的游戏世界。另外,看似复杂无比的模型都是通过大量三角形来逼近的,表示单个三角形就简单很多了,而3D模型文件的内容也就是立足于三角形。

 

obj文件是Alias|Wavefront公司为3D建模和动画软件"Advanced Visualizer"开发的一种标准3D模型文件格式,大部分3D软件都支持导入、导出obj格式的模型文件。

立方体模型

接下来,我们使用blender这款开源的3D建模软件创建一个简单的立方体模型,设置立方体的顶面颜色为橘黄色,其他面全部为红色,j将其导出为obj文件,使用任意文本编辑器打开来一步步看看里面都有什么。

说明:导出共生成了两个文件,一个为.obj后缀模型文件,一个为.mtl后缀的材质文件。

 

看懂obj模型文件

完整的obj文件内容如下

# Blender v3.1.2 OBJ File: ''
# www.blender.org
mtllib mycube.mtl
o Cube
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 1.000000
v -1.000000 -1.000000 1.000000
vt 0.625000 0.500000
vt 0.875000 0.500000
vt 0.875000 0.750000
vt 0.625000 0.750000
vt 0.375000 0.750000
vt 0.625000 1.000000
vt 0.375000 1.000000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.625000 0.250000
vt 0.375000 0.250000
vt 0.125000 0.500000
vt 0.375000 0.500000
vt 0.125000 0.750000
vn 0.0000 1.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
usemtl Material
s off
f 1/1/1 5/2/1 7/3/1 3/4/1
usemtl Material.001
f 4/5/2 3/4/2 7/6/2 8/7/2
f 8/8/3 7/9/3 5/10/3 6/11/3
f 6/12/4 2/13/4 4/5/4 8/14/4
f 2/13/5 1/1/5 3/4/5 4/5/5
f 6/11/6 5/10/6 1/1/6 2/13/6
  • #开头的表示注释。
  • mtllib mycube.mtl表示引用了一个外部的材质文件,材质文件名为mycube.mtl,后面会介绍材质文件的内容。
  • o Cube指定了模型名称为Cube。
  • v开头的共有8行,表示立方体的8个顶点坐标(x,y,z)。
  • vt开头的共有14行,表示uv贴图坐标(x,y),看到这些奇怪的数字可能让你一头雾水,当我们把这14行数字表示的坐标点逐一绘制出来,并将相邻的点连接起来就得到了下面的图形。这样就豁然开朗了,它就像是一张包装纸,刚好可以包裹住一个立方体盒子的6个面。

 

  • vn开头的共有6行,它表示立方体6个面对应的法向量,法向量在这里起到识别某个面是正面还是反面的作用。
  • usemtl Material表示使用mycube.mtl文件中Material定义的材质,接下来的通过索引指定的面将使用该材质。
  • s off表示关闭光滑组(Smoothing group)。
  • f开头的表示由顶点、uv纹理坐标、法向量索引确定的表面,如5/2/1表示v开头的第5个顶点、这个点对应vt贴图的第2个坐标(就是包装纸的某个点应该和立方体盒子的哪个点对齐)、这个点对应vn开头的第1个法向量;一个立方体表面共有4个点,因此需要有4组索引数据来确定一个面。使用Material材质的面只有一个,就是建模时设置为橘黄色的面。
  • usemtl Material.001表示使用mycube.mtl文件中Material.001表示的材质,接下来的通过索引指定的面将使用该材质。
  • 之后5行以f开头的面是建模时设置为红色的面,格式同橘黄色的面。

看懂mtl材质文件

现在,来看看mycube.mtl材质文件都包含什么内容,完整内容如下:

# Blender MTL File: 'None'
# Material Count: 2

newmtl Material
Ns 359.999993
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.582192 0.154415
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2

newmtl Material.001
Ns 250.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.002207 0.009875
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2
  • #开头表示注释。
  • newmtl Material定义材质Material,接下来的内容都是该材质的属性。
  • Ns表示高光色的权重。
  • Ka表示环境光,三个数字分别对应R、G、B值。
  • Kd表示漫反射光,三个数字分别对应R、G、B值。
  • Ks表示高光,三个数字分别对应R、G、B值。
  • Ke表示发射光,三个数字分别对应R、G、B值。
  • Ni表示光学密度。
  • d表示透明度,0是完全透明,1是完全不透明。
  • illum 2表示指定的光照模型(参考:Phong光照模型),illum后面的数字范围为0~10,具体含义如下:
0 Color on and Ambient off  
1 Color on and Ambient on  
2 Highlight on  
3 Reflection on and Ray trace on  
4 Transparency: Glass on  
  Reflection: Ray trace on  
5 Reflection: Fresnel on and Ray trace on  
6 Transparency: Refraction on  
  Reflection: Fresnel off and Ray trace on  
7 Transparency: Refraction on  
  Reflection: Fresnel on and Ray trace on  
8 Reflection on and Ray trace off  
9 Transparency: Glass on  
  Reflection: Ray trace off  
10 Casts shadows onto invisible surfaces	
  • newmtl Material.001表示指定材质Material.001,之后的内容都是关于该材质的属性,具体含义和Material完全相同,不再详述。

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/46098.html

相关文章

直播代运营合同避坑:报价、KPI、违约金一次说清

直播代运营合同避坑:报价、KPI、违约金一次说清

去年西安一家女装店老板拿着合同来找我看,就一页纸,上面写着“保证月销30万”。签的时候高高兴兴,三个月后只卖了8万,代运营公司一句“市场环境不好”就撒手不管了。老板想退钱,翻出合同才发现,什么叫销售额、含不含退款、考核多久、数据以谁为准,一个字都没写。这种坑我这两年见了不止十回。 直播代运营合同看...

抖音千川投放怎么投?2026新手起量避坑指南

抖音千川投放怎么投?2026新手起量避坑指南

西安一家做本地餐饮的老张,去年底听人说抖音能拉客,先充了3000块投DOU+。一个月下来,视频播放量是上去了,团购券没卖出几张。后来他才搞清楚,DOU+是给内容加热用的,真正能把团购券卖出去的工具叫巨量千川。2026年,在抖音上做生意的商家基本绕不开这两个东西:DOU+管内容热度,千川管成交转化。...

抖音短视频带货怎么做?2026年挂车出单实操指南

抖音短视频带货怎么做?2026年挂车出单实操指南

直播带货要开播、要人设、要话术,很多西安商家试了两次就放弃了。其实还有一条更轻的路:短视频带货。拍一条视频挂上商品链接,用户刷到直接下单,不用开播,不用连麦,一个人一部手机就能跑。我见过高新一家卖手工辣条的档口,老板就拍后厨炒料,一条视频爆了,挂车链接三天卖了四千多单。我自己也帮几个西安客户跑过这...

抖音矩阵号怎么做?2026年企业多账号布局实操

抖音矩阵号怎么做?2026年企业多账号布局实操

有个西安做门窗的老板跟我抱怨,说一个号发了大半年,播放量卡在一两千上不去,问我是不是号被限流了。我让他去搜搜本地同行,人家三个号轮着发,客户搜「西安封阳台」,翻两屏全是那一家。这不是玄学,就是矩阵。说白了,矩阵不是一个号发十遍,也不是开十个号复制粘贴,而是按客户会搜什么、信什么,把账号分工排好。尤...

抖音蹭热点总翻车?2026年商家追热点的正确姿势

抖音蹭热点总翻车?2026年商家追热点的正确姿势

上周有个做建材的老板问我:热搜上那个话题全网都在拍,我是不是也该跟一条?我反问他,拍完这条视频,客户凭什么找你买瓷砖?他愣了半天没答上来。这就是大多数商家蹭热点的真实状态——看见热点就冲,拍完发现除了播放量,什么都没留下。热点不是不能蹭,是大多数人都蹭错了。我盘过自己服务的客户数据:蹭热点视频的平...

企业抖音蓝V认证2026流程:材料准备与审核避坑

企业抖音蓝V认证2026流程:材料准备与审核避坑

企业号蓝V认证,现在几乎成了西安本地商家做抖音的起手式。不管是餐饮、装修、教育还是批发档口,想挂电话、想开团购、想投DOU+,基本都绕不开这一步。这篇文章把2026年最新的蓝V认证流程、要准备的材料、审核容易挂的地方一次讲清楚。蓝V认证到底有什么用?值不值600块蓝V说白了就是抖音给企业主体做的实...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片