江门童程在线少儿编程培训

试听课 + 活动课
填写信息优先获取试听课

位置:学校首页 > 学校动态>怎样用scratch实现3d

怎样用scratch实现3d

  用scratch制作3d投影的步骤

  步:在“造型”里将思思兔的造型图片按照方向一一对应,动作越复杂,所需图片越多。

  第二步:设置思思兔的朝向、大小、位置。

  第三步:设置重复执行动画。

  第四步:见证奇迹的时刻,运行脚本,注意脚本命令之间不要有断层。

  用scratch实现3D动画的方法

  1. 坐标

  接触过scratch的同学对于2D坐标已经非常熟悉:一个物体的x坐标代表它在屏幕左右方向的位置,y坐标代表它在上下方向的位置。Scratch规定了舞台的坐标范围分别是:x坐标范围在-240到240,y坐标范围在-180到180。

  3D坐标系增加了一个z轴,其实就是2D坐标在纵深方向的扩展。红色直线代表x、y、z轴,黑色点的坐标(x,y,z)代表了它在三维立体空间中的位置。

  在scratch的2D舞台上画一个四边形,我们需要知道四个顶点的坐标,然后把它们连线就可以画出来。同样道理,如果要在3D空间中画出一个物体,一个方法是知道它的所有顶点的坐标,然后把顶点用直线连起来。比如下面这个立方体,把它的8个顶点连起来就能画出来。

  事实上,较复杂的3D图案和较真实的3D动画,背后都是通过这种方法画出来。当然画面细节越丰富,背后的数学模型越复杂,也需要越多的计算机资源(CPU、内存、显卡)。作为入门介绍,本文只用较基本的3D图形作为例子。

  比如下面这个八面体,它有6个顶点,上半部分和下半部分分别有四个三角形。它是较简单的可以一笔画出来的多面体(上面的立方体就不能一笔画出来,而八面体可以,同学们可以思考一下为什么),比如依次连接点1-6-2-5-3-6-4-5-1-2-3-4-1就可以不重复任一条边把它画出来。

  简单来说,只要我们知道了八面体的6个顶点的3D坐标,我们就能一笔过把它画出来。

  2. 投射

  计算机屏幕是一个2D的平面,我们通过屏幕看到的3D物体,实际上是它根据透视原理在屏幕上的一个2D投射。

  原理:视点代表了观察者(眼睛或者摄像头)的位置。蓝色是一个3D物体,红色平面代表了屏幕。绿色部分就是3D物体在屏幕上的投射。在屏幕上显示一个3D物体,其实是显示它在2D平面上的投射(绿色部分)。

  在屏幕上看到的一个3D物体的大小和形状,其实跟以下几个因素有关:3D物体的实际位置、视点的位置、屏幕的位置。

  那3D空间某一个点投射在某个2D屏幕上的坐标是怎么计算的呢?

  P代表3D空间中的一个点,设它的位置坐标值是x,y,z。现在要计算的是它在红色的代表屏幕的平面上的投射点P’的坐标值。其中O点代表视点。

  两次强调,3D点的投射除了和它本身的坐标有关之外,还和视点位置、投射屏幕位置有关。这三个因素是互相影响的。忽略了任何一个因素都不能得出投射点坐标!

  绿色平面代表P经过的、和红色屏幕平面平行的一个平面。线段OAB和红色以及绿色平面都垂直。为了方便计算,我们让红色平面与x轴和y轴组成的平面平行。这样,线段OAB和z轴平行(并垂直于红色及绿色平面);线段BC以及AC’与x轴平行;线段PC以及P’C’与y轴平行。

  因为BC与AC’平行、PC与P’C’平行。根据相似三角形的特点,我们很容易知道:

  OA /OB = AC’ / BC = P’C’ / PC

  所以,如果知道:

  P点坐标x,y,z

  O点坐标ox,oy,oz

  红色平面的z坐标值pz

  则:

  OA = pz – oz

  OB = z – oz

  BC = x – ox

  PC = y – oy

  则P在红色屏幕平面投射点P’的x、y轴坐标值为:

  P’的x坐标 =

  ox + AC’ =

  ox + [(pz – oz) * (x - ox)/(z - oz)]

  P’的y坐标 =

  oy + P’C’ =

  oy + [(pz - oz) * (y - oy)/(z - oz)]

  接下来我们就用这个结论在scratch里画出一个3D的八面体来。

  我们要做的就是把3D物体在2D屏幕上的投射画出来。所以在画(编程)之前我们先要在自己心中有一个3D坐标,视点的位置、屏幕的位置、物体的位置我们都要先想清楚。

  八面体有6个顶点,依次连接点1-6-2-5-3-6-4-5-1-2-3-4-1就可以一笔过画出它来;

  - 首先我们用三个数组分别保存八面体6个顶点的x坐标、y坐标和z坐标;

  - 定义视点及投射屏幕平面的位置(前面说过,为了方便计算,我们让投射平面与x轴和y轴组成的平面平行,所以投射面只有一个z值);

  - 根据前面3D到2D屏幕的投射公式,自定义一个积木用来投射转换;

  - 接下来就依次投射1-6-2-5-3-6-4-5-1-2-3-4-1点,用画笔画出连接各点的轨迹。

  执行“投射八面体“积木就可以画出下面的形状:

  3. 移动

  物体移动只需要改变它所有顶点的x,y,z值,然后再重新投射一次就可以了。

  注意这里物体的移动是在原3D空间的移动,所以物体在x轴方向或y轴方向移动后,在屏幕上的投射会产生一定的旋转效果。视点离投射平面越近,这种旋转效果越明显。

  物体在z轴方向的移动会产生物体大小变化的视觉效果:物体远离视点时物体投射缩小,接近视点时物体投射增大。

  4. 旋转

  物体旋转涉及到三角函数的知识。推导过程需要一定的篇幅。我们只需要记住简单的结论来应用就可以了。

  旋转可以分为三种:沿x轴的旋转、沿y轴的旋转和沿z轴的旋转。

  - 沿x轴旋转时,物体的x坐标不变,y坐标和z坐标的变换规律是(A为旋转角度):

  新的y坐标 = y * cos A + z * sin A;

  新的z坐标 = z * cos A – y * sin A。

  - 沿y轴旋转时,物体的y坐标不变,x坐标和z坐标的变换规律是(A为旋转角度):

  新的x坐标 = x * cos A – z * sin A;

  新的z坐标 = x * sin A + z * sin A。

  - 沿z轴旋转时,物体的z坐标不变,x坐标和y坐标的变换规律是(A为旋转角度):

  新的x坐标 = x * cos A – y * sin A;

  新的y坐标 = x * sin A + y * cos A。

  显示了沿z轴旋转时的变换情况。有兴趣的同学可以自己推导出坐标的变换规律。

  注意上面说的坐标变化都是物体原3D坐标的变化,而不是投射在2D平面上的投射坐标的变化。换言之,旋转改变物体坐标后,还要重新计算投射坐标。

  少儿编程教育,主要的用户群体就是K12,就是5~18岁的少儿用户去学习计算机编程,今天小编主要给大家分享少儿编程有哪些课程体系,希望对你们有帮助!

  软实力,指的是教研教学体系,是少儿编程教育发展之基。

  少儿编程教育也是K12教育的一个分支,K12教育的差异化来自于教学和教研教学,师资力量,教学体系都是软实力的根本表现。而目前,各类产品的软实力分为以下几个层次:

  1. 谭浩强式的教学体系

  相信受过高等教育的人能够理解这种教育是什么,可以说这是较填鸭式的编程教育,它在K12市场上完全没有竞争力。

  2.scratch源生系统

  照搬麻省的scratch课程,这个课程确实很经典,但是少儿编程教育并不是应试教育,它需要与时俱进,在固定编程工具的框架下,衍生性的教学点和教学方法是有限的。

  scratch系统也有一个很大的缺点,那就是课程的衍生性有限,没有一个过渡体系可以把业余编程领域和专业编程领域连接起来。另一点必须提到的是,国外的编程教育体系在国内的水土不服也是一个问题。

  3.自主教学体系

  这类教学系统的首要条件是必须能够跳出scratch编程工具的限制,只有跳出scratch工具的限制,才能跳出scratch教学系统的限制。

  自主的教研团队构建了独立的教学体系,自主的教学体系能够满足课程创新性、逻辑性、趣味性的要求,可以将业余编程领域与专业编程领域连接起来。

  目前,自主教学方式还处于探索阶段,探索道路还很长。

  硬实力是高科技,软实力就是教育,软实力和硬实力的结合就是高科技教育。科学技术的进步可以说是一日千里,但是教育的进步需要大量的实践。

  目前,少儿编程教育只是属于校外素质教育的一部分,将来一定会被纳入学校的教学体系。教学体系和教材是软实力的突破口,同时,抓住这两点会就能持平一步,但如果想持续在竞争中持平,仍然需要依靠时间和实地的投资。

领取试听课
温馨提示:为不影响您的学业,来校区前请先电话或QQ咨询,方便我校安排相关的专业老师为您解答
版权所有:搜学搜课(www.soxsok.com) 技术支持:搜学搜课网