【问题标题】:Difference between vectors,vertex and faces? [closed]向量,顶点和面之间的区别? [关闭]
【发布时间】:2013-01-25 19:00:46
【问题描述】:

我总是觉得这很难理解,因为它看起来很理论化。

glVertex(0.0f,0.0f,0.0f);
glVertex(0.0f,0.0f,-1.0f);
glVertex(-1.0f,0.0f,-1.0f);
glVertex(-1.0f,0.0f,0.0f);

这是 openGL 中立方体的一个面。

我打开一个 obj 文件,人脸是这样存储的:

f 61 67 52
f 50 66 49

等等等等

【问题讨论】:

  • 这里的实际问题是什么?
  • 顶点只是用于定义三角形的三个点之一。面是通过排列多个三角形而产生的多边形。例如。立方体的每个侧面都是一个面,每个面由 2 个三角形产生。这两个三角形有 4 个不同的顶点(2 个公共顶点,每个顶点各有一个)

标签: c++ winapi math opengl


【解决方案1】:

我在这里猜测,但您似乎对 obj 文件的格式感到困惑。

f 61 67 52 实际上非常简单:它指定顶点#61、#67 和#52 在 3D 空间中形成一个三角形(一个面)。

我还要指出,您将四个 OpenGL 即时模式 glVertex 调用的序列引用为“立方体的一个面”并不是对该代码实际执行或表示的内容的特别好的描述。代码本身指定了四个 3D 顶点,这是唯一指定的信息。面的概念,或者就此而言,三角形(3D 图形的构建块)的概念与顶点的规范不同。

您看不到很多人在 3D 图形中使用几何术语“脸”有几个原因,它在 .obj 文件中的使用是一个例外。这是因为图形硬件设计用于对三角形进行操作:如果你想制作一个五边形的脸,你真的需要用 3 个或更多的三角形来构建它。我无法告诉你为什么它是f 61 67 52 而不是t 61 67 52,因为那样更有意义。请注意,如果您采用四个不共面的顶点,则无法从中制作出平坦的几何面!这就是为什么可以将三角形称为面的原因:任何 3 个点都是共面的。

【讨论】:

    【解决方案2】:
    • 向量是或可以被认为是一个方向(目标位置 坐标 - 您当前的位置坐标会告诉您 你需要去的方向)和/或只是一个坐标列表 特定的 n 维空间,例如(1, 0, 0) 在 3-D (x, y, z) 中。
    • 顶点是空间中的一个点,可以用向量(a 坐标列表 (x, y, z))。
    • 面是一个凸空间,由至少 3 个连接而成 顶点一个接一个通常是逆时针的(这将使 三角形)。方向对于了解脸部的哪一侧很重要 将面临。另一面不会被渲染。

    网格中的每个面通常都有一个数字,它充当索引和一个法线向量,它显示了这个特定面的渲染侧的方向(只需从哪里查看可能被映射的纹理到这张脸上)。这一切都取决于如何存储网格的特定格式(obj 只是几种格式中的一种,专有程序通常有自己的封闭格式)。

    【讨论】:

    • 其实向量是向量空间的一个元素。任何东西都可以是向量。一个数字、颜色、椅子、量子态等。一个顶点不是空间中的一个点!!!一个顶点是一个向量,由构成一个顶点的许多属性组成;通常是位置、法线、纹理坐标和其他一些属性的组合。但是一个顶点不仅仅是的位置!
    • @这些不是顶点的基本属性。当你定义一个顶点时,你定义了它的坐标。其他一切都是次要的。在数学意义上,您可以将 Vector 描述为一组属性,但在 CG 意义上,它们具有非常特定的含义(即将对象从空间中的一个位置转换到另一个位置)。
    • 定义顶点时定义它的坐标。完全可以为 OpenGL 提供包含 no 位置的顶点属性,并且该位置是由顶点着色器根据给定的通用顶点属性动态生成的。事实上,可以提供空的顶点向量并让顶点着色器仅根据提交索引生成位置。请理解这一点:顶点不是位置,并且位置不是顶点属性!
    • 我们是否谈论 CG 并不重要。顶点的目的是定义平面有限图元的角的属性。并且这个角的属性可以在任意向量空间中给出,它根本不必是空间的。 OpenGL 的唯一要求是,顶点属性在该向量空间中是凸的。将顶点向量空间的子空间转换为位置是转换管道的作用。在固定功能 OpenGL 中,一个属性是为位置保留的。在现代 OpenGL 中,一切都是完全任意的,用户可配置。
    • @datenwolf 是的,从广义上讲你是对的,但正如en.wikipedia.org/wiki/Vertex_%28computer_graphics%29 中提到的那样,计算机图形学中的顶点(复数顶点)是一种描述 2D 或 3D 点的数据结构空间。显示对象由平面数组(通常是三角形)组成,顶点定义了 location 和曲面角的其他属性。My: location 是必要属性,无论是在着色器期间提供/生成tl管道或手动。最终,如果没有顶点以及 OP 所询问的内容,网格就无法存在。
    猜你喜欢
    • 2019-09-15
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2014-11-28
    相关资源
    最近更新 更多