obj文件(1):obj文件用txt打开并且了解v,f,vn,vt的含义

article/2025/10/25 3:51:16

obj文件:obj文件用txt打开并且了解v,f,vn,vt的含义

  • 笔记
    • obj文件的格式介绍
    • **下载 Blender 软件**

  1. 来源:《Computer Graphics Programming in OpenGL Using C++ 》by V Scott Gordon John L Clevenger
  2. 内容:介绍obj文件以txt文本形式打开后的标签v,f,vn,vt,书P148页,PDF167/403
  3. 备注:因为很重要,所以想特意单独写一篇。完整内容可以看:C++/OpenGL 入门(18):读取obj文件并贴图

笔记

obj文件的格式介绍

加载外部绘图的模型:复杂的3D模型一般是由建模软件产生的。3D模型的格式 .obj, .3ds, .ply, .mesh, 其中最简单是的obj文件。
Obj文件比较简单,我们程序读取的时候也较为容易。Obj文件中,确定了点几何信息,纹理坐标,法向量和其他信息,当然也有一些限制,比如obj文件无法确定模型的运动。
Obj文件中,开头是一系列的特征标签,提示存储的是什么样的数据。一些常用的标签有:
V——顶点几何信息
Vt——纹理坐标
Vn——顶点法向量
F——face 面(三角形的三个顶点)
其他的标签可能存储的是对象的名字,所用的材料,曲率curves, 阴影 shadows和其他的细节。
我们将讨论限制在以上四个标签,这足够展示一系列复杂模型。
假设用Blender软件建立一个四面体,然后选择.obj格式导出文件包括纹理坐标和顶点法向量
在obj文件用txt文件打开,头几行**“#“**是注释,编译器忽略注释的这几行。 “o“ 表示obj文件的名字,编译器也需要忽略
“s“开头的语句,说明这些面不该被平滑,编译器也会忽略该行
“v“开头的语句,表示四面体的5个点的相对于原点(0,0,0)的X,Y,Z坐标,原点在四面体的中心 以下是书中的例子给的obj文件
在这里插入图片描述
“vt“开头的红色行代表的是不同的纹理坐标,纹理坐标的数量比顶点数量多,是因为一个顶点可能参与多个三角形,在这些不同三角形中有不同的纹理坐标。
“vn“绿色行,表示不同的法向量,法向量的行数通常比顶点的行数多,是因为有一些顶点同时在不同三角形中。
“f“紫色行,表示三角形,每个面有三个元素,是用/分隔,比如下图:
在这里插入图片描述
暗示说,第2.5.3的顶点组成一个三角形
每一组的第二个数 : 7 8 9 是 vt中的,也就是纹理坐标组成的三角形
每一组的第三个数 3 3 3 是vn 中的,也就是第三行,这三个点组成的面有一样的法向量

如果obj文件不包括纹理坐标和法向量,格式为: f 2 5 3
如果obj文件有纹理坐标,没有法向量,格式为: f 2/7 5/8 3/9
如果obj文件没有纹理坐标,有法向量,格式为: f 2//3 5//3 3//3

可以根据标签 v,vt,vn,f自己写一个obj文件

Obj文件的限制
①只支持全部表面都是三角形的模型,也就是说顶点位置,纹理坐标和法向量必须全部说明,并且以这样的形式: f #/#/# #/#/# #/#/#
②材料的标签被忽略后,纹理贴图的做法必须用第五章的方法完成
③只有全部是三角形网格组成的obj模型才能支持,其余复杂网格模型的obj文件不支持
④每一行的元素由空格分隔开

下载 Blender 软件

想要得到上述obj文件的格式,可将现成的obj文件用Blender 软件打开,重新生成一个obj的文件,这样就有比较整齐的格式了。
Blender 软件下载网址:Blender下载网址,
选择下图的 Aliyun,即可下载。
在这里插入图片描述
软件界面中有新手教程自带正方体,右上角“文件”->“导出”->“obj”-
在这里插入图片描述
在这里插入图片描述
在obj导出弹窗,选择存储位置和存储名称,选择包括在内的内容,包括顶点,法线和三角面
在这里插入图片描述
然后在相应位置会生成obj文件,可以右键选择用记事本打开
在这里插入图片描述


http://chatgpt.dhexx.cn/article/tTAMqrhh.shtml

相关文章

什么是obj文件

此文来源:https://www.cnblogs.com/ShadowHanlder/p/4410213.html 百度百科: 程序编译时生成的中间代码文件。目标文件,一般是程序编译后的二进制文件,再通过链接器(LINK.EXE)和资源文件链接就成可执行文件了。OBJ只给出了程序的…

Unity导出模型为Obj文件

Unity导出模型为Obj文件 资源链接下载导入 代码纪要使用方式参考链接 资源链接 原插件代码中只有MeshFilter的Obj导出代码;由于项目需求,需要将SkinnedMeshRenderer导出为Obj文件,故在原代码的基础上,扩展出了SkinnedMeshRendere…

SolidWorks2021导出带材质的OBJ文件

SolidWorks2021导出带材质的OBJ文件 注意SW中所有零件都要使用英文命名,装配体模式下再次新建宏按钮即可 1. 首先下载并安装工具宏 1.1 下载免费工具宏 到Github下载免费的Free-Solidworks-OBJ-Exporter,并解压到自己想要的保存的位置。 1.2 在Soli…

C++/OpenGL 入门(18):读取obj文件并贴图

来源:《Computer Graphics Programming in OpenGL Using C 》by V Scott Gordon John L Clevenger内容:程序6.3 Simple (Limited) OBJ Loader 简单的obj文件读取器,书P152页,PDF171/403 结果 生成: 读取:…

unity动态加载obj文件

unity2018.4.2f1 vs2017 最近项目需求,需要实现动态读物外部obj模型,并加载到场景中,研究了好几天,终于实现了,在此做个记录。 1、首先随便找个.obj模型,带贴图,我的资源截图如下&#xff1a…

obj文件(3): 如何用matlab 打开obj文件

obj文件:如何用 matlab 打开 obj 文件 第一步:检查obj文本格式第二步:用 Blender 软件重新导出obj文件第三步:用excel 打开这个obj 文件第四步:复制excel中的数据,传给matlab第五步: 用matlab 打开3D模型 第…

三维模型obj文件解析

目录 obj文件简介文件结构顶点数据(Vertex data):自由形态曲线(Free-form curve)/表面属性(surface attributes):元素(Elements):自由形态曲线(Free-form curve)/表面主体陈述(surface body statements):自由形态表面之间的连接(Connectivity between free-form sur…

linux类动态库,Linux动态库(一)

起因 博主在以Linux下做开发。在软件需求中,需要动态库带来的灵活性。 比如说博主主导的智能主机的开发。它需要支持很多种类的设备控制,如普通的开关灯、RGB灯、窗帘、百叶窗等等。我们将这些设备抽象成Device类,具体的设备就从这个类上派生…

OpenFlow Switch

The picture of OpenFlow Switch openflow 架构分为2层,一个是控制器层,一个是switch 层。中间是由openflow protocal进行连接的,负责传输指令与数据。switch分为3大块,第一是openflow channe,他是负责向控制器传输数据…

【博客450】OpenFlow学习

OpenFlow OpenFlow协议规范定义了OpenFlow交换机、流表、OpenFlow通道以及OpenFlow交换协议。 OpenFlow是第一个开放的南向接口协议,也是目前最流行的南向协议。它提出了控制与转发分离的架构,规定了SDN转发设备的基本组件和功能要求,以及与控…

OpenFlow交换机【ACM SIGCOMM顶会论文笔记】

目录 写在前面的话OpenFlow交换机基本思想与工作原理专用OpenFlow交换机(Dedicated OpenFlow switches) 启用OpenFlow的交换机(OpenFlow-enabled switches)其他功能(Additional features)控制器&#xff08…

关于ns-3中安装openflow的问题,解决openflow not found

官网 官网里面并没有明确的描述,这里结合自己的安装过程讲解一下 首先下载源码,记住这一步最好在ns-3目录下,就是运行waf命名的目录 $ hg clone http://code.nsnam.org/jpelkey3/openflow $ cd openflow进行编译,会提示缺少文件…

OpenFlow基础入门知识

本文进行讨论的是OpenFlow 1.0和OpenFlow 1.3的基本知识 Overview: Openflow 1.0: 安全通道单张流表ipv4 Openflow 1.3: 安全通道多级流表(流水线pipeline)组表测量表ipv6..... 流(flow) …

Openflow流表学习

Openflow流表学习 OpenFlow是一种新型的网络协议,它是控制器和交换机之间的标准协议。自2009年底发布1.0版本后,OpenFlow协议又经历了1.1、1.2、1.3及1.4版本的演进过程,目前使用和支持最多的是1.0和1.3版本。 OpenFlow1.3在1.0版的基础上进…

SDN与OPENFLOW 简介

本文对Openflow的发展、规范、应用和SDN的提出及相关应用做出较为客观全面的介绍。笔者希望通过本文对OpenFlow/SDN做一个初步介绍,以期帮助大家能够进一步深入了解和学习OpenFlow/SDN。 序言:从网络虚拟化说起 云计算的发展,是以虚拟化技术…

OpenFlow协议分析

实验环境:CentOS OpenDayLight-Carbon mininet WireShark 本实验通过wireshark抓包分析openflow1.3协议的各种报文与字段。 抓包 首先安装好实验所需的软件,这里不多赘述,需要的可以点击查看:mininet多方法安装,控制…

openflow简介

openflow交换机包含一些流表,流表负责具体包查找和转发 控制器通过of协议对流表查询和管理 一、流表 流表组成: 包头域、活动计数器、0个或多个执行行动 包头域: 计数器: 可以针对每张表、每个流、每个端口、每个队列来维护。…

SDN-OpenFlow1.0协议分析

目录 OpenFlow1.0代码 OpenFlow交换机流表 包头域 计数器 行动 流表匹配 OpenFlow消息 OpenFlow消息格式 对称消息 建立OpenFlow连接(OFPT_HELLO消息) 报告错误(OFPT_ERROR消息) 获取交换机特性信息(Featu…

OpenFlow概述

OpenFlow简介 通俗的讲,OpenFlow是使用类似于API进程配置网络交换机的协议。OpenFlow的思路很简单,网络设备维护一个FlowTable并且只按照FlowTable进行转发,FlowTable本身的生成、维护、下发完全由外置的Controller来实现,注意这里…

OpenFlow了解

openflow的核心思想是将所有的协议都抽象出来,抽象成公共的flow概念。协议抽象:数据,函数(对数据的处理方式),逻辑(数据与处理的对应关系,函数之间的交互行为与时序) pu…