本文作者默认您已经会使用ObjectViewer等等的开发辅助工具。


一、用代码构建简单模型

1.做一个简单平面

不妨输入这段代码,用ObjectViewer浏览模型。

  CreateMeshBuilder
  AddVertex, 0, 0, 1
  AddVertex, 1, 0, 1
  AddVertex, 1, 0, 0
  AddVertex, 0, 0, 0
  AddFace, 0, 1, 2, 3
  SetColor, 255, 0, 0

你会发现你成功地在地平面上建了一个面积为1的红色的正方形。此时,请让我来为你解释你为什么能通过这段代码整出这样一个图形。

第一行的CreateMeshBuilder用于包含一组以顶点为渲染主体的数据(虽然概念非常模糊,但是读到后面你会更容易明白它的意思)。上述顶点可以通过AddVertex, X, Y, Z建立。XYZ为空间直角坐标系中的坐标,单位为米,他们所代表的正方向分别为右、上、前。

建立顶点的下一步便是连点成面。我们记第一个AddVertex建立的顶点为0号顶点,第二个为1号顶点,第三个为2号顶点……用AddFace, 0, 1, 2的指令可以按0号、1号、2号…的顺序连接顶点。当然,可以通过修改AddFace后单元格内数据的顺序来调整顶点的连接顺序。但要注意,默认生成的面为顺时针顺序连点成的面(也就是规定了面的法向量遵循左手螺旋定则);其次,点不共面及面的内角含有优角(角度>180°)容易发生难以估量的显示异常,这样的情况建议用割补法来解决。

你可能会发现你建立了平面却依然没办法让其显示,原来是你还没给这个画上色。SetColor, R, G, B则是一种最简易的解决办法。RGB分别为“RGB”以255为最大值的颜色分量。刷新ObjectViewer,你会成功地看到自己上了这个颜色地平面。

回到最开始讲的那6行代码,让我们重新梳理其含义:在空间中顺时针连接那4各都在地平面上地坐标,形成一个面向天地红色的平面的正方形。

(未完待续…)