19586| 8
|
[项目分享] Mind+人工智能之影子火柴人(1) |
本帖最后由 Luke 于 2019-12-5 17:49 编辑 Mind+人工智能之影子火柴人(1) 前情提要: 本帖内的所有程序均在Mind+1.6.1版本下编写与运行。 首先,这篇帖子的主角就是Mind+最新推出的AI功能模块,更新完之后在实时模式下点开拓展,大家可以在网络服务一栏中找到AI图像识别模块。 这功能是不是有点太丰富了,随便点开一个下拉框就像打开了一个新世界一样,还没等我研究完,突然人在家中坐锅从天上来,我接到了一个神秘任务,要我围绕这个图像识别的主题搞事情,整俩狂拽酷炫的项目分享一下。“这不是信手拈来?”嗯,当时我的确是这么想的,现在我像是走火入魔了。不吹了不吹了,赶快进入正文。 项目简介: 大家看了我的标题也就大概能明白我想做的是啥了,大概就是上图这个玩意。 问:那影子又是什么意思呢? 答:哎呀就是我在摄像头前面怎么动,火柴人它也也怎么动。 问:为什么手臂粗细怪怪的? 答:哎呀就是算法会计算摄像头画面里面的手臂长短来缩放长方形,小臂靠近摄像头显得长一些,对应的长方形也就被放大一点所以会显得粗。 问:给我解释一下这个猫耳朵是什么鬼。 答:因为可爱因为萌! 答:啊不不不,是因为没有耳朵没法表现出歪头的动作。 程序思路: 首先是主程序,我把它放在了Mind+角色中,并隐藏该角色。我这里就简述一下主程序的作用,为了让各个角色的程序条理清楚,我将所有关于数据接收和赋值的语句都放在了主程序,与其他需要运动的火柴人肢体区分开来,这样其他的角色在系统运行时只需要调用各自所需的变量就可以了。 啊这里跟大家说一下,这儿从图像识别指令得到的坐标系位置就可以照搬到舞台上哦。 这里我再解释一下我的变量命名规律: l/r + nose/ear/jian/wan/zhou + x/y 左右 + 鼻/耳/肩/腕/肘 + 横竖坐标 请原谅我的灵魂命名。 首先我们看角色造型,黑色的椭圆就是火柴人的头,其实本来是想用椭圆的头来呈现歪头动作的,但是试过之后效果实在是不好,因此加上了粉色的猫耳(原谅我的恶趣味)。还有个比较重要的点就是画布上的定位点,就像上图我将椭圆拖到了画布中央,确保定位点和圆心基本重合,这个点是用来干什么的呢,简单来说就是角色位置的准心和角色转动的轴心。 再看程序,我所有可动身体部位的程序几乎是相同的,我们从三个方面来变换我们的角色,第一就是位置,火柴人头的位置我直接取用了鼻子的横纵坐标,经过调试又在纵坐标上做了少许调整。第二个是大小,我们离摄像头的距离不同就会导致我们的躯体在图像上的大小长度发生变化,因此在这里通过计算两耳之间的距离按照一定的比例系数来缩放火柴人的头,就能模拟近大远小的感觉了。最后就是角度,关于怎么计算角度大家看程序就好了,定义域值域那些算了我半天的东西我也不想再回忆了。 满满的三角函数,不想回忆。 其他的也就没啥了,注意一点是肩、大臂、小臂他们的定位点可不是形状中心,应该选在长方形的一端方便定位与旋转。还有就是小臂的程序,一眼就能看出多了一句判断语句用来将小臂的转动角度拓展到360°,其实大臂也应该这么写,但我就是嫌麻烦所以默认大臂不会转到另外半边,也就不需要分类讨论了。 至于所有角色的程序跟造型,观众老爷们可以下载程序来看,下载之前记得要更新Mind+哦。 最后按照惯例上视频。 视频环节: 程序下载: |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed