3D文件格式之OBJ介绍

3D文件格式之OBJ介绍OBJ 文件是一种常见的 3D 模型格式 由 WavefrontTec 创建 用于存储几何信息和 3D 数据

大家好,欢迎来到IT知识分享网。

      在 instant-ngp 中使用NeRF时,保存的mesh可指定为obj,这里对obj文件格式进行说明。

      OBJ文件(.obj)包含有关3D对象的几何体的信息。OBJ文件可以支持无限的颜色(unlimited colors),一个文件可以定义多个对象。
      OBJ文件中的对象由多边形面(它们本身由顶点或点定义)和法线、曲线、纹理映射和曲面(polygon faces(which themselves are defined by vertexes, or points) and normals, curves, texture maps, and surfaces)定义.OBJ是一个矢量文件,它使定义的对象具有可伸缩性。没有最大文件大小限制。
      OBJ文件格式由Wavefront Technologies创建,用于定义、存储几何对象和3D数据。文件扩展名OBJ全称为Wavefront OBJect。
      在Windows、Mac或Linux上需要一个CAD或3D图形/建模程序查看、打开或编辑OBJ文件,可用于处理OBJ文件的软件如:Adobe Photoshop CC、Autodesk Maya、Blender、MeshLab、Microsoft 3D Viewer(3D 查看器)等。
      OBJ文件是一种文本文件,可以使用编辑器直接打开进行查看和编辑修改
      与其它3D文件格式相比,OBJ文件具有一些优势:
      (1).OBJ拥有庞大的用户群和支持系统;
      (2).OBJ具有简单的文件结构;
      (3).OBJ是开源的;
      (4).OBJ文件可以导入和导出到3D和CAD程序;
      (5).OBJ文件可以近似复杂的表面几何形状,而不需要很大的文件大小;
      (6).OBJ文件支持多种颜色;
      (7).OBJ文件包括位置,法线(normals)和UV(vt)数据,并允许精确的表面细分(surface subdivisions).











      一个OBJ文件由几个语句类型组成,当它们组合在一起时,就定义了一个3D对象。这些语句描述了形状(shapes)并将它们彼此定位:
      1.注释语句以#开头,该语言忽略#之后的任何内容,直到下一行。
      2.Vertex(顶点) data:顶点是面或多边形的角相交的点。顶点语句以v开头,包含以下内容:
      (1).三个必需变量: x,y和z;
      (2).一个可选变量: w;
      (3).变量值的范围为0到1,默认值为1.
      注意:
      (1).某些应用程序支持颜色;如果可用,请在变量后添加RGB值,颜色值的范围为0到1
      (2).如果为形状中的一个顶点定义了UV(vt)或顶点法线(vn),则必须为所有顶点定义它们。
      UV定义如何将3D模型映射到2D表面(例如计算机显示器),并确定如何将纹理应用到3D对象;它们有时被称为纹理(贴图)顶点(texture vertexes)。UV语句以vt开头,包含以下内容:
      (1).一个必需变量:u;
      (2).两个可选变量:v和w;
      (3).变量值的范围为0到1,默认值为0.
      顶点法线(vertex normal)通过指示光源的方向来定义阴影和亮度(shading and brightness)。顶点法线语句以vn开头,包含以下内容:
      (1).三个必需变量:x、y和z.
      参数空间顶点(parameter space vertices)是自由形式的曲线或表面(surface)属性/控制点。参数空间顶点语句以vp开头,包含以下内容:
      (1).三个必需变量:u、v和w;
      (2).使用u表示曲线点(curve points);
      (3).用u和v表示曲面点和非合理裁剪曲线控制点(use u and v for surface points and non-rational trimming curve control points);
      (4).使用u、v和w进行合理裁剪曲线控制点(use u, v, and w for rational trimming curve control points).
      3.Surface(曲面) data:自由形式曲线(free-form curve)或曲面类型包括基矩阵、贝塞尔曲线、B样条、基数曲线和泰勒曲线。定义包含如下内容:
      (1).度数(用deg表示);
      (2).基矩阵(用bmat表示);
      (3).步长(用step表示);
      (4).曲线类型(用cstype表示);
      (5).自由曲面之间的连接(用con表示).
      曲线或曲面主体的定义包含以下内容:
      (1).参数值(用parm表示);
      (2).外饰(outer trimming)(用trim表示);
      (3).内部修剪环(inner trimming loop)(用hole表示);
      (4).特殊曲线(用scrv表示);
      (5).特殊点(用sp表示);
      (6).结束语句(用end表示).































      注:以上内容全部来自网络整理,主要参考:https://www.marxentlabs.com/obj-files/

      以下是instant-ngp中将mesh保存为obj时的部分内容:

mtllib nerf.mtl v 1.02146 -8.25844 -8.53257 0.690 0.659 0.674 v 1.06285 -8.25844 -8.53257 0.722 0.706 0.722 # v ... vn -1.00000 0.00000 -0.00000 vn 1.00000 0.00000 0.00000 # vn ... vt 0.00007 0.99991 vt 0.00101 0.99859 # vt ... g default usemtl nerf s 1 f 1974/3/1974 6320/2/6320 2452/1/2452 f 6320/6/6320 2358/5/2358 2452/4/2452 # f ...

      下图是使用MeshLab打开lego的obj文件时的结果:

3D文件格式之OBJ介绍

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/120557.html

(0)
上一篇 2025-10-28 22:15
下一篇 2025-10-28 22:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信