16 Feb 2023, 13:15

 

先修科目

 

用到的相关知识

 
 

介绍

在这篇教程中,我们将制作一个带孔的立方体,并且我们可以利用变量控制孔的位置。预览如下:

 

第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文件。上传以后,所有用户都能把你的模型加载到他们的场景中。

 

创意扩展

这个项目可以改编成多种样式。下面是一些创意想法:

  1. 不同的条件:你可以尝试其他条件,如“x + y = 100”、“x * y = 10000”诸如此类。

  2. 其他形状:把盒子换成球体柱体,作为堆叠积木。