3D文件格式之OBJ介绍

这篇具有很好参考价值的文章主要介绍了3D文件格式之OBJ介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

      在 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表示).

      4.Element data:可以包括的其它元素包括点(p)、线(l)、面(f)、曲线和2d曲线(分别为curv和curv2D)以及曲面(surf)。
      注意:
      (1).每个面(f)可以包含三个或更多顶点;
      (2).可以使用三个以上的顶点/纹理/法线索引来定义多边形。
      在描述一个面(f)的时候:
      (1).纹理坐标索引作为可选项用于描述该顶点相关的纹理坐标。为了描述纹理坐标索引,必须在顶点坐标索引之后紧接着添加一根斜线(/),之后再紧接着添加纹理坐标索引。在斜线的前后都不能有空格。
      (2).要添加顶点法线索引,必须在纹理索引之后添加第二根斜线(/),然后在之后添加法线索引。斜线前后不能有空格。
      (3).可以在定义几何图元的时候忽略纹理坐标索引,但是必须在顶点坐标索引后加上两根斜线(//),然后添加法线索引。
      5.Grouping data:你可以使用分组语句连接各种元素。组使用以下指示符,后面跟着名称来定义每个组:
      (1).Group name: g;
      (2).Smoothing group: s;
      (3).Merging group: mg;
      (4).Object name: o;
      6.Material Template Library(MTL, 材质模版库)files: OBJ文件不包含可视(颜色)信息,但是你可以通过引用支持文件将这些信息添加到OBJ文件中的对象中。材质模板库(.mtl)是一种广泛使用的ASCII文件格式,它决定OBJ文件中定义的对象如何使用Phong反射模型反射光线。

      注:以上内容全部来自网络整理,主要参考: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://www.toymoban.com/news/detail-429530.html

到了这里,关于3D文件格式之OBJ介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NeRF必读:Instant-NGP----RTX3090单卡就能玩转NeRF

    NeRF从2020年发展至今,仅仅三年时间,而Follow的工作已呈井喷之势,相信在不久的将来,NeRF会一举重塑三维重建这个业界,甚至重建我们的四维世界(开头先吹一波)。NeRF的发展时间虽短,有几篇工作却在我研究的领域开始呈现万精油趋势: PixelNeRF----泛化法宝 MipNeRF----近远

    2024年02月09日
    浏览(42)
  • 3D文件格式之OBJ介绍

          在 instant-ngp 中使用NeRF时,保存的mesh可指定为obj,这里对obj文件格式进行说明。       OBJ文件(.obj)包含有关3D对象的几何体的信息 。OBJ文件可以支持无限的颜色(unlimited colors),一个文件可以定义多个对象。       OBJ文件中的对象由多边形面(它们本身由顶点或点定义)和

    2024年02月01日
    浏览(36)
  • 如何使用 ThreeJs 以 glTF、FBX 和 OBJ 文件格式加载 3D 模型,使用 ThreeJS 加载和显示带有纹理的 3D 模型

    在本文中,我展示了如何使用 ThreeJS 在 Web 视图中加载 3D 模型。Three.js 是一个跨浏览器的 JavaScript 库和应用程序编程接口,用于使用 WebGL 在 Web 浏览器中创建和显示动画 3D 计算机图形。加载不完整的原因有很多,例如纹理和材质渲染不正确。 创建场景 渲染场景 动画立方体

    2023年04月08日
    浏览(50)
  • Wavefront .OBJ文件格式解读【3D】

    OBJ(或 .OBJ)是一种几何定义文件格式,最初由 Wavefront Technologies 为其高级可视化器动画包开发。 该文件格式是开放的,已被其他 3D 图形应用程序供应商采用。 OBJ 文件格式是一种简单的数据格式,仅表示 3D 几何体,即每个顶点的位置、顶点UV坐标、顶点法线以及使每个多边

    2024年02月12日
    浏览(31)
  • 3d max的obj文件格式说明

    OBJ 文件格式是一种常见的 3D 模型文件格式,它包含了模型的几何形状、材质、纹理等信息。下面是 OBJ 文件格式的一些基本信息: OBJ 文件由一系列文本行组成,每行以一个开头,后面跟着一些参数。OBJ 文件中最常见的有以下几个: v :定义一个顶点,后

    2024年03月09日
    浏览(37)
  • [visionOS] [Apple Vision Pro] 3D模型文件格式转换:obj转usdz

    1,先要安装好Python3.7 【必须是Python3.7.x版本】 到Python官方去下载macOS版的Python3.7.x安装包 Python Releases for macOS | Python.org 要注意找一下,有些 3.7.x版本没有macOS安装包, 这里直接给出其中两个可以下载的 Python 3.7.8rc1 - June 17, 2020 Download macOS 64-bit installer Python 3.7.9 - Aug. 17, 2020

    2024年02月16日
    浏览(107)
  • Panda3d如何获取到可用的模型?Maya、3D Max、OBJ等3D格式转换为egg、gltf文件

    ​ 使用Panda3d进行3D环境建模也有一段时间了,真的是被折磨的头秃。。。不过也不得不说,Panda3D也确实是一个比较优秀的3D游戏引擎,还是能满足你的大部分需要的。 ​ 如果你在深入使用Panda3d后,我相信有个问题那绝对是让人头大的,那就是模型问题。对于没有学过3D建模

    2024年02月05日
    浏览(47)
  • vue-3d-model js在线预览obj,dae,ply,json,fbx,stl,gltf格式的3D文件

    在线预览地址vue-3d-model js在线预览obj,dae,ply,json,fbx,stl,gltf格式的3D文件 效果: 例子使用了.obj 3D文件格式,自带了截图和旋转功能,其他的3D格式只需要切换一个vue的模板标签即可。具体标签格式如下: 可支持obj,dae,ply,json,fbx,stl,gltf等格式的3D文件格式显示。只需要单页面html即

    2024年02月12日
    浏览(53)
  • qt加载obj格式的3D模型

    在 Qt 中加载 obj 格式的 3D 模型可以使用 Qt 3D 模块。 首先,你需要在你的工程文件中包含 Qt 3D 模块,方法是在工程文件的顶部添加以下行: 然后,在你的代码中包含 Qt 3D 的头文件: 接下来,你可以使用 Qt3DRender::QObjLoader 类来加载 obj 格式的 3D 模型。首先,创建一个 Qt3DRen

    2024年02月16日
    浏览(61)
  • obj文件格式与.mtl文件格式

    1. OBJ 是一种 3D模型文件,因此 不包含动画、材质特性、贴图路径、动力学、粒子 等信息。但是可以读取 .mtl 文件 来获得材质信息。 2.OBJ 文件使用【根据数据类型排列,每个有一段简短描述】     顶点数据 (Vertex data) : v  几何体顶点 (Geometric vertices) vt 贴图坐

    2024年02月05日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包