4141浏览
查看: 4141|回复: 1

[《Huskylens趣味AI入门》] 【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果

[复制链接]
本帖最后由 木子呢 于 2021-9-24 16:12 编辑


课程目录:
项目9:体感切水果


9.1 项目介绍

9.1.1背景导入

《水果忍者》的游戏曾经风靡一时。手机屏幕上不断抛出各种水果,玩家像忍者一样划动手指将水果在空中切开,在触碰的瞬间彩色的果汁飞溅而出,非常解压。而切到混在水果中的炸弹将会发生**,游戏结束。

除了在手机上操作,能不能结合摄像头增加体感互动的效果呢?让我们利用Huskylens的物体追踪功能,来复刻这款经典游戏吧!

9.1.2任务拆解

Huskylens物体追踪功能,可以识别任何有明显轮廓的物体(甚至是各种手势)。使用Huskylens学习并追踪我们自制的游戏道具,操纵游戏中的刀光位置。改变水果角色的位置与速度,让各种水果从画面下方抛出后下落。当刀光切到水果时,水果一分为二;若切到的是炸弹,则发生**游戏结束。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图1

STEP1:使用Huskylens物体追踪,学习道具魔术棒

STEP2:上传背景与角色,制作进入游戏的准备动画

STEP3:获取Huskylens物体追踪位置控制刀光移动

STEP4:实现水果的上抛和下落

STEP5:实现切水果和炸弹的互动

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图2

(目标功能实现效果示意)

9.2 项目准备

9.2.1 软件设置

打开Mind+软件,确认软件为“实时模式”。点击“扩展”,在“功能模块”里加载“Huskylens教育版”。点击“返回”到主界面可以看到功能模块添加成功。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图3

9.2.2 硬件连接

用USB线把Huskylens连接到电脑,接着点击扩展功能旁的橙色感叹号,进行连接。连接成功后感叹号会变成绿色对勾(如下图),“返回编辑器”就完成连接啦。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图4

9.3 程序思路

我们先创建三个角色:文字,刀光和水果。

在“文字”角色中,切换Huskylens算法,制作进入游戏的准备动画。当动画结束后,广播“游戏开始”。隐藏其余角色。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图5

当接收到游戏开始的信息后,“刀光”角色循环检测Huskylens的追踪结果,并使用被追踪物体在屏幕中的位置控制刀光的移动。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图6

“水果”角色从舞台下方抛出后下落,如果碰到“刀光”则展示水果切开的造型(炸弹与水果的逻辑相同)。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图7

9.4 功能实现

9.4.1 Huskylens物体追踪

(1)功能设置

拨动“功能按键”,切换识别模式至“物体追踪”。长按”功能按键“,进入物体追踪功能的二级菜单。打开“自动保存模型”与”学习开启“(滑块变蓝),确认参数并返回。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图8

(2)学习物体

把 Huskylens对准需要追踪的物体,调节与物体的距离,让物体在屏幕的方框中。长按”学习按键“,从不同角度和距离学习。(学习过程中,屏幕中会标注”学习中:ID1“)当HuskyLens在不同角度和位置都能追踪到这个物体时,就可以松开”学习按键“结束学习。如果要学习新物体,需要让Huskylens忘记已经学过的内容,按下学习按键,会弹出”再按一次遗忘“,再按一次就可以清除之前学过的物体,重新学习。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图9

(3)物体追踪

HuskyLens识别到已学习过的物体,屏幕会框选出目标物体并显示”学习ID1“。因为我们已经打开”学习开启“功能,HuskyLens会一边追踪物体,一边学习,可以提高物体追踪能力。如果识别结果已经达到预期效果,就可以关闭”学习开启“功能。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图10

追踪的物体需要有明显轮廓(包括各种手势),且每次只能追踪一个物体。我们需要自制游戏道具“魔术棒”,找一根细长的物体作为手柄,在一端粘贴明显的形状便于追踪。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图11

9.4.2 舞台场景布置

(1)添加背景

把鼠标移到“背景库”,点击“上传背景”,打开文件夹上传背景文件“背景”。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图12

在“背景”模块里编辑背景图片大小和位置,让图片覆盖整个画布。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图13

(2)添加角色

删除mind+角色。在“角色库”选择“上传角色”,打开本地文件夹选择“刀光”“草莓”“西瓜”和“炸弹”完成上传。(更多水果角色可后续自行添加)适当调整角色的大小。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图14

选择水果角色,进入“造型”模块,选择“上传造型”,将水果切开的图片作为造型上传。用相同的方式,上传“**”图片作为“炸弹”角色的造型二。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图15

在“角色库”选择“绘制”,创建游戏准备动画的文字角色。在”造型“模块中创建文本“Ready?(准备)”,按喜好调整颜色和字体。复制造型,修改文字为“START!(开始)”作为造型二。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图16

(3)初始化启动场景

实现效果:点击绿旗,播放背景音乐,Huskylens切换至物体追踪模式。使用重复执行让画面中的文字”Ready?”逐渐变大,持续一段时间后切换造型变为“START!”广播消息“游戏开始”给其它角色。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图17

除了文字以外的其余角色,在绿旗点击时隐藏。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图18

9.4.3 控制刀光移动

实现效果:当接收到消息“游戏开始”,判断Huskylens追踪的物体是否在画面中。获取物体在Huskylens屏幕中的位置,对应到Mind+的舞台坐标系,控制“刀光”角色的移动。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图19

当Huskylens追踪到物体,可以获取到物体在屏幕中的中心点坐标参数。如果此ID在画面中没有或没有学习则会返回-1。

新建变量:Husky_X,Husky_Y,分别储存魔术棒在Huskylens屏幕中的XY坐标值。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图20

然而,怎么让Huskylens屏幕中的位置与软件舞台区角色位置对应起来呢?我们知道Huskylens的屏幕和mind+舞台区都有具体的坐标:

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图21

使用“映射”功能,可以将一个范围内容的值平均对应为另外一个范围的值。

新建变量:Screen_X,Screen_Y,储存映射后的mind+的舞台区的对应坐标位置。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图22

当Huskylens追踪到物体条件成立,储存摄像头屏幕中的物体位置并”投影“到Mind+舞台坐标,让“刀光”移动到对应位置,就能够实现mind+舞台角色跟随Huskylens追踪结果实时移动。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图23

互动效果如图所示:

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图24

9.4.4 抛水果

实现效果:当接收到消息“游戏开始”,水果不断从画面下方随机位置向上抛出。水果在上抛过程中不断减速,然后自由下落。同时画面中还会抛出炸弹,但是出现频率比水果低。

首先使用随机数指令,生成舞台X坐标范围内的随机值,赋予水果的初始位置。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图25

有了水果之后来实现它的上抛和下落。我们可以发现,水果在画面中的运动过程可以表示为角色Y坐标的变换,当Y坐标增加时、水果向上移动,反之亦然。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图26

在这里,我们创建一个仅适用于当前角色的变量“速度”,用来储存Y坐标的变化值。因为每个水果角色都会以不同的速度运动,每个角色都会有自己的“速度”变量,并且该变量只在当前角色中使用,这时我们选择创建局部变量。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图27

将Y坐标与“速度”变量相加,并让“速度”逐渐减小。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图28

设置“速度”的初始值为正数,当Y坐标与正值相加,Y坐标增大,水果向上移动。在向上抛的过程中,“速度”不断减少,水果的移动速度相应减缓。当“速度”达到负数时,Y坐标与负值相加,Y坐标减小,水果下落并越来越快。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图29

设置“速度”为20-30之前的随机数,让每次水果出现的初始速度不尽相同,增加游戏的趣味性。将Y坐标和速度的变化放入循环,设置循环的结束条件为水果下落到初始位置,当水果掉出画面时停止循环并移动到初始位置再次抛出。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图30

知识延申

全局变量与局部变量

对于变量我们已经不陌生了,它可以用来存储可变的数据。事实上,变量可以依据在程序中创建的位置和方式,分为局部变量和全局变量两种。局部变量(仅适用于当前角色)是指在角色内部定义并使用的变量,它只在当前角色有效。而全局变量(适用于所有角色)是能够作用于角色内外的变量,它在整个程序中有效。

9.4.5 切水果(或者炸弹!)

实现效果:当水果碰到“刀光”角色时,水果切换到“切水果”造型(水果爆浆)。当炸弹碰到“刀光”时,播放结束音效,切换到**造型,同时停止全部脚本运行。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图31

每个水果角色的程序相同,可以拖动代码移动到角色图表上实现代码的复制。复制完成后,需要调整不同水果的造型切换。特别注意,复制代码到另一个角色后,程序内的局部变量自动转化为当前角色内的局部变量。

炸弹抛出的逻辑与水果相同,区别是在游戏开始后炸弹等待几秒再出现,每次下落后增加随机的间隔时间,降低出现的频率。当切到炸弹时,播放声音并停止全部脚本结束游戏。

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图32

挥动魔术棒试一下游戏效果吧!可以增加更多的水果角色让画面更加丰富。(完整程序见附录)

9.5总结拓展

9.5.1 知识小结

硬件知识:Huskylens物体追踪功能的学习应用

编程知识:局部变量、随机数、映射等功能模块的使用;游戏功能的实现逻辑

9.5.2 项目拓展

游戏虽然有趣,但是不是觉得还够不刺激呢?尝试完善游戏规则,例如:切到水果时得分+1、每次游戏限时30秒等等。比比看谁是真正的切水果大师吧!

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图33

(部分图片来源于网络,只为课程内容配图,不做商用。如果您发现文章内有侵犯您知识产权的作品,请直接私信我们,我们会及时修改或删除。)


附录1:程序指令

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图34

附录1:

程序示例

【Mind+Huskylens趣味AI入门】系列课程—09 体感切水果图35






李守良15201646807  见习技师

发表于 2021-11-1 14:57:51

有没有程序分享啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail