三维 - 带孔的立方体(难度:2级)
-
先修科目
用到的相关知识
介绍
在这篇教程中,我们将制作一个带孔的立方体,并且我们可以利用变量控制孔的位置。预览如下:
第1步 - 改编并检查
请在浏览器新标签打开下方项目,然后改编。
https://play.creaticode.com/projects/0068cbafa5ad0c465f966315
这个项目基于教程《三维 - 魔方(难度:2级)》,这个教程制作了一个包含5层、5行、5列的盒子阵列。
由于所有盒子是一样的,所以看起来就是一个大的立方体。另外,自制积木“添加盒子“设置为”运行时不刷新屏幕“,让程序运行更快。
第2步 - 在中间留一个缝隙
现在我们开始在立方体中开一些孔。关键思路就是某些条件为真时不添加盒子。
首先,添加一个积木“如果<>那么…否则…”,把条件设置为“x = 0”。然后就可以把添加盒子的积木放到“否则”分支里面。这样的话,每当变量x为0,我们就不添加盒子,就会在立方体中间留出一个缝隙。
第3步 - 留一个洞
我们改进一下条件,现在我们留一个洞,而不是一个缝隙。
具体方法就是,检查x和y是否同时为0,只有满足此条件时,我们才不添加盒子。结果,在这个新的程序中有5个盒子略过没有加进去。
第4步 - 第二个洞
接下来,我们再添加一个洞,从前到后穿过立方体。这次我们要用一个新的条件:变量x和z都为0。只需要再添加一个积木“如果<>那么…否则…”,如果两个条件有一个成立就不添加盒子。
第5步 - 第三个洞
现在请大家尝试添加第三个洞,从左到右穿过立方体。
包含3个“如果<>那么…否则…”分支的完整程序如下:
第6步 - 使内部空间更大
假如我们要在立方体内部挖一个更大的空间,可以把条件设置为:如果三个变量x、y、z全部小于等于100,我们就不添加盒子。提示,积木“绝对值( )”用来取绝对值,那么,如果x为-100,“绝对值(-100)”就为100.
结果如下:
第7步 - 添加一个转换器父节点
到目前为止,所有盒子都是相互独立的。为了把所有盒子变为一个对象,我们要将一个别的对象设置为所有盒子的父节点。
做法就是,首先添加一个新的“转换器”对象,命名为“方块”。这个对象不可见,但我们仍然可以用来控制它的子对象。
然后,我们要把“方块”设置为所有盒子的父节点:
第8步 - 使立方体旋转
尽管我们得到的立方体和前面的一样,但现在我们能够利用父节点把所有盒子当做一个对象来控制。
例如,我们使整个立方体绕z轴旋转。其做法为,首先要根据名称选取转换器对象“方块”。这样的话,下面的所有积木都会应用到这个父对象。然后,我们把父节点的“z轴旋转”速度设置为100,所有子对象盒子就会随父对象一起旋转。
第9步 - 把这个立方体导出为GLB文件。
如果你想让别人使用你刚刚制作的立方体,就可以导出为GLB文件。GLB格式是一种三维模型格式,就好比JPEG是二维图像格式,很多三维软件接受GLB格式文件。
若要导出物体对象,只需要使用如下积木,并指定所要导出的对象名称“方块”。所有子对象都会被导出,这样就确保整个立方体导出为一个模型文件。
第10步 - 上传并分享自己的GLB模型文件
你可以在创益编程社区分享自己做的GLB模型文件。这种模型被称为”社区模型“。
只需进入“我的东西”页面,点击“三维模型”,然后根据引导上传GLB文件。上传以后,所有用户都能把你的模型加载到他们的场景中。
创意扩展
这个项目可以改编成多种样式。下面是一些创意想法: