技术日志挑战——第3天:0726

2024-07-26 17:24:17 浏览数 (1)

第2天

技术总结:

技术项目工作,包括项目进展、遇到的问题及解决方案等。

今天主要梳理了继续往下计算的思路,感觉不是很清晰,需要再考虑一下怎么往下写。

还有就是修复一个之前因为精度设定而导致的bug,目前已经成功处理,现在看起来正常了许多。

明天周六打算来单位工作一下,争取把边界的相交问题搞定,主要是处理边界对齐的问题。

学习笔记:

关于Obj格式

OBJ 格式是一种开放的几何定义文件格式,由 Wavefront Technologies 开发。它是一种纯文本格式,用于存储三维模型的几何数据,如顶点、面、法线、纹理坐标等。OBJ 文件通常与材质文件(如 MTL)一起使用,以提供更丰富的模型信息。以下是 OBJ 格式的详细介绍:

基本结构

OBJ 文件的基本结构包括以下几个主要部分:

  1. 顶点数据:定义模型的顶点坐标。
  2. 纹理坐标:定义顶点的纹理映射坐标。
  3. 法线:定义顶点的法线方向。
  4. :定义模型的面,即由顶点、纹理坐标和法线组成的三角形或多边形。
  5. 材质引用:引用外部材质文件(MTL)中定义的材质。

关键字

OBJ 文件使用特定的关键字来标识不同的数据类型。以下是一些常见的关键字:

  • v:顶点坐标,格式为 v x y z
  • vt:纹理坐标,格式为 vt u v [w]
  • vn:法线,格式为 vn x y z
  • f:面,格式为 f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3
  • usemtl:使用材质,格式为 usemtl material_name
  • mtllib:材质库,格式为 mtllib filename.mtl

示例

以下是一个简单的 OBJ 文件示例:

代码语言:java复制
plaintext
# 这是一个简单的 OBJ 文件示例

# 顶点坐标
v 1.0 2.0 3.0
v 4.0 5.0 6.0
v 7.0 8.0 9.0

# 纹理坐标
vt 0.0 0.0
vt 1.0 0.0
vt 0.0 1.0

# 法线
vn 0.0 0.0 1.0
vn 0.0 1.0 0.0
vn 1.0 0.0 0.0

# 面
f 1/1/1 2/2/2 3/3/3

# 使用材质
usemtl MaterialName

# 材质库
mtllib example.mtl

在这个示例中:

  • v 关键字定义了三个顶点坐标。
  • vt 关键字定义了三个纹理坐标。
  • vn 关键字定义了三个法线。
  • f 关键字定义了一个面,由三个顶点、纹理坐标和法线组成。
  • usemtl 关键字引用了名为 "MaterialName" 的材质。
  • mtllib 关键字指定了材质库文件 "example.mtl"。

材质文件 (MTL)

OBJ 文件通常与 MTL 文件一起使用,MTL 文件定义了模型的材质属性,如颜色、纹理、反射率等。以下是一个简单的 MTL 文件示例:

代码语言:java复制
plaintext
# 这是一个简单的 MTL 文件示例

newmtl MaterialName
Ka 1.0 0.0 0.0  # 环境光颜色
Kd 1.0 0.0 0.0  # 漫反射颜色
Ks 0.0 0.0 0.0  # 镜面反射颜色
Ns 10.0         # 镜面反射指数
map_Kd texture.png  # 漫反射纹理贴图

在这个示例中:

  • newmtl 关键字定义了一个新的材质 "MaterialName"。
  • Ka 关键字定义了环境光颜色。
  • Kd 关键字定义了漫反射颜色。
  • Ks 关键字定义了镜面反射颜色。
  • Ns 关键字定义了镜面反射指数。
  • map_Kd 关键字指定了漫反射纹理贴图 "texture.png"。

应用

OBJ 格式广泛用于三维建模软件之间的数据交换,以及游戏和动画行业。它是一种通用的、易于解析的格式,支持丰富的几何和材质信息,因此被许多三维软件和工具支持。

总结

OBJ 格式是一种开放的、纯文本的三维模型文件格式,用于存储模型的几何数据和材质信息。它通过关键字和数据行来定义顶点、纹理坐标、法线和面,并支持引用外部材质文件。OBJ 格式因其通用性和易用性而被广泛应用于三维建模和动画领域。

0 人点赞