MicroCity从入门到精通之二【造辆小车,驶入3D世界】

@TOC

万事开头难

所以我准备用最简单的例子来入门MicroCity。游戏是我们都喜欢的,寓教于乐通常能激发大家的学习兴趣和动力,也比较容易理解和实现。因此,我选择从MicroCity的3D功能入手,编写相关代码。

3D engine of MicroCity

创建3D程序通常包括如下几步:

  1. 创建3D世界
  2. 设置视角,光线等参数
  3. 添加Objects实体
  4. 通过实体的各种function控制其状态(大小,方向,位置,颜色,属性等)改变
  5. 更新世界

3D world

通过 Create3DWorld()函数来得到一个世界pointer,是userdata类型,之后所有的Object都必须有一个世界去存在,快到碗里来。
这个世界是3维的,xyz轴,是左手坐标系,
左右手坐标系
(0,0,0)点作为原点,也就是图中的左手的原点,随xyz轴递增,反向为负。长度单位的选择由你自己决定,可以参考现实世界的米,厘米,毫米,千米,取决于你的世界的东西的块头,和想要的精度。

3D Objects

  1. 球体 addSphere()
  2. 立方体 add3DBox()
  3. 矩形 add3DRect()
  4. 线段 add3DLine()
  5. 3ds模型 LoadObject()
  6. Camera
  7. Light

parent关系

  • 父子关系可以连接两个物体
  • 因为很多物体由多个部件组成,而且坐标系都是相对的
  • SetParent(son, father),设置好父子关系后,儿子的位置,方向都是相对于父亲的

位置和朝向

物体在空间中最明显的属性就是其位置和方向,(x,y,z)

  • 使用 SetPosition()来设置物体的位置
  • 使用SetRotation() 来设置物体的朝向

颜色

  • RGB设置

大小

  • 只能通过更改规模设置
  • SetScale()在初始尺寸上变大变小,(可只在某维度上变化)

动画

  • 如何让世界动起来,就需要增加一个维度,时间
  • 和时间赛跑
  • 我们用Sleep()来模拟时间的流逝
  • 用Update()来更新图像
发布了11 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sinat_41644416/article/details/96138482