之前我们只画了一个三角形,弱爆了。。现在琢磨绘制模型。

三维模型文件格式很多,但这里我们定义一种自己的简单格式:文件起始部分是顶点个数,然后每个顶点对应一行数据,该行数据包括顶点的坐标,纹理坐标以及法向量。每三行构成一个三角形面。比如下面的立方体模型,它包括了12个面,所以数据部分有36行,每三行代表一个三角形。

Cube.txt

Vertex Count: 36

Data:

-1.0  1.0 -1.0 0.0 0.0  0.0  0.0 -1.0
1.0  1.0 -1.0 1.0 0.0  0.0  0.0 -1.0
-1.0 -1.0 -1.0 0.0 1.0  0.0  0.0 -1.0
-1.0 -1.0 -1.0 0.0 1.0  0.0  0.0 -1.0
1.0  1.0 -1.0 1.0 0.0  0.0  0.0 -1.0
1.0 -1.0 -1.0 1.0 1.0  0.0  0.0 -1.0
1.0  1.0 -1.0 0.0 0.0  1.0  0.0  0.0
1.0  1.0  1.0 1.0 0.0  1.0  0.0  0.0
1.0 -1.0 -1.0 0.0 1.0  1.0  0.0  0.0
1.0 -1.0 -1.0 0.0 1.0  1.0  0.0  0.0
1.0  1.0  1.0 1.0 0.0  1.0  0.0  0.0
1.0 -1.0  1.0 1.0 1.0  1.0  0.0  0.0
1.0  1.0  1.0 0.0 0.0  0.0  0.0  1.0
-1.0  1.0  1.0 1.0 0.0  0.0  0.0  1.0
1.0 -1.0  1.0 0.0 1.0  0.0  0.0  1.0
1.0 -1.0  1.0 0.0 1.0  0.0  0.0  1.0
-1.0  1.0  1.0 1.0 0.0  0.0  0.0  1.0
-1.0 -1.0  1.0 1.0 1.0  0.0  0.0  1.0
-1.0  1.0  1.0 0.0 0.0 -1.0  0.0  0.0
-1.0  1.0 -1.0 1.0 0.0 -1.0  0.0  0.0
-1.0 -1.0  1.0 0.0 1.0 -1.0  0.0  0.0
-1.0 -1.0  1.0 0.0 1.0 -1.0  0.0  0.0
-1.0  1.0 -1.0 1.0 0.0 -1.0  0.0  0.0
-1.0 -1.0 -1.0 1.0 1.0 -1.0  0.0  0.0
-1.0  1.0  1.0 0.0 0.0  0.0  1.0  0.0
1.0  1.0  1.0 1.0 0.0  0.0  1.0  0.0
-1.0  1.0 -1.0 0.0 1.0  0.0  1.0  0.0
-1.0  1.0 -1.0 0.0 1.0  0.0  1.0  0.0
1.0  1.0  1.0 1.0 0.0  0.0  1.0  0.0
1.0  1.0 -1.0 1.0 1.0  0.0  1.0  0.0
-1.0 -1.0 -1.0 0.0 0.0  0.0 -1.0  0.0
1.0 -1.0 -1.0 1.0 0.0  0.0 -1.0  0.0
-1.0 -1.0  1.0 0.0 1.0  0.0 -1.0  0.0
-1.0 -1.0  1.0 0.0 1.0  0.0 -1.0  0.0
1.0 -1.0 -1.0 1.0 0.0  0.0 -1.0  0.0
1.0 -1.0  1.0 1.0 1.0  0.0 -1.0  0.0

由于现在模型类的数据不再是硬编码,而是从文件读入,所以首先模型类要进行一些改动。

首先要有存储顶点数据的对应结构,所以要在模型类中先定义存储顶点数据的结构体,并添加一个指针,该指针指向存储顶点数据的数组:

class ModelClass
{
private:
    ...
    struct ModelType
    {
        float x, y, z;
        float tu, tv;
        float nx, ny, nz;
    };
    ModelType* m_model;
    ...
};

相关文章:

  • 2021-11-13
  • 2022-01-04
  • 2021-11-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-04
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-15
  • 2021-10-31
  • 2021-12-05
  • 2021-11-29
  • 2021-12-01
相关资源
相似解决方案