Navigation

    CreatiCode Scratch Forum

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • CreatiCode

    三维 - 随机彩盒三维艺术(难度:2级)

    小教程
    1
    1
    156
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      creaticodeteacher2-mail last edited by admin

       

      用到的相关知识

      • 使用盒子
      • 取随机数
      • 三维坐标和位置
      • 颜色的使用

       
       

      介绍

      在本教程中,大家将用很多盒子建造一个三维世界,并将学习如何利用随机数建造三维艺术。

       
       

      第1步 - 新建一个项目

      首先,在创益编程游乐场新建一个项目,删除角色1,在角色“空的1”中添加如下积木:


       
      一个空的三维场景就创建好了。

       
       

      第2步 - 添加10个盒子

      接下来,我们用“重复执行”循环来添加10个盒子。你可以为盒子设置任意颜色。


       
      注意,因为这些盒子都重叠在一起,所以看上去就只有一个盒子:

       
       

      第3步 - 将盒子移动到随机位置

      为了让盒子分开,我们可以利用积木“取随机数”,把它们移动到随机的X/Y/Z坐标。


       
      每个盒子的x坐标取-300至300之间的一个随机数,y坐标和z坐标同样:

       
       

      第4步 - 盒子形状随机

      接下来,我们把每个盒子改成随机形状。因为盒子的形状由长、宽、高决定,就可以把这3个数设置为随机数。


       
      注意:盒子的三个维度都不能为负数,所以都取10至100之间的随机数。

       
       

      第5步 - 盒子颜色随机

      现在我们也让盒子颜色随机。为了做到这一点,我们不能用拾色器下拉菜单来设置颜色。而是要用颜色计算器积木。在这个项目中,我们让颜色、饱和度随机,亮度为100。


       
      因此,每次我们都能得到不同颜色的盒子。因为我们使“颜色”的值取1至30之间的随机数,生成的颜色就为红、绿之间的随机颜色。

       
       

      第6步 - 添加更多盒子

      现在我们尝试使用更多盒子,并扩大颜色和位置的范围:


       
      你会发现结果更有趣了,但运行时间也更长了:

       
       

      第7步 - 提速

      为了让程序提速,常用的方法就是不让屏幕刷新:不要每添加一个盒子就刷新一次屏幕,而是等到全部盒子添加完毕后,仅刷新一次屏幕。

      为了做到这一点,我们新建一个积木“添加盒子”,并勾选“运行时不刷新屏幕”:


       
      然后,把重复执行循环移到积木“添加盒子”的定义中:


       
      现在我们的程序至少要快10倍了!

       
       

      第8步 - 设置天空背景

      最后,为了让场景更好看,我们可以添加一个星空背景。注意,把天空设置为星空后,我们还需要把摄像头移近些:

       
      最终演示效果如下:

       
       

      创意扩展

      尝试使用你学到的新方法来制作不同的作品。下面是一些创意想法:

      • 不同的形状:不要只用方形盒子,何不试试其他形状?
      • 不同角度:还可以随机旋转物体,对吧?
      • 物体都放到地面上:把所有物体都放到地面上,就像在草地上一样。
      1 Reply Last reply Reply Quote 0
      • Pinned by  info-creaticode info-creaticode 
      • First post
        Last post