




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 18足球进攻方案敬告读者 !本方案仅为用户参加类似机器人竞赛项目提供参考指导,广州中鸣数码科技 有限公司强烈建议用户不要采用完全一致的搭建及程序参与竞赛,其原因如下: 1. 本方案旨在提高用户在参与机器人竞赛项目的起点水平,但并不希望因此 而扼杀参赛者的主动性及创作力,也不希望因此而违背机器人竞赛活动对青 少年的教育意义。2. 本方案仅适用及受限制于某一特定的竞赛规则,参赛者应在充分理解要参 与竞赛的规则前提下,参考本方案的基础上完成自己的设计。3. 几乎所有的机器人竞赛都要求参赛者亲身设计,并能在竞赛现场独立调试 及向评委讲解设计思路,故参赛者应通过对方案的深刻了解及日常训练使具 有随机应
2、变之能力。5. 本方案未经长时间的验证和实施,也未能发挥器材之极限性能,广州中鸣 数码科技有限公司并不能保证该方案完美无缺,用户应该通过亲身实践去验 证和改进,并从中学习相关的知识和获取相关的经验。在使用进攻程序之前,请细读本方案! 一、 前言 .3二、 任务 .3三、 策略分析 .31、 找球 .32、 乌龙球处理 .33、 死球处理 .34、 追球 .35、 击球 .46、 流程图 .4 四、 程序说明 .51、 主程序说明 .52、 需要输入的子程序参数 .6<1>、 checkDeath(.6<2>、 ballHandle(.6<3>、 findBa
3、ll(.6<4>、 comeORback(.7 五、 模块说明 .71、 checkDeath(.72、 ballHandle(.83、 findBall(.104、 comeORback(.125、 returnOut(.136、 turnAngle(.137、 angle(.168、 turn(.16六、 进攻算法 .16七、 调试 .191、 马达调试 .192、 硬件调试 .193、 转绝对角度调试 .19 八、 常见问题分析 .201、超声测距模块读数不准确。 .202、死球的时间过长或角度过小。 .203、向左或向右击球的弧度过大或过小。 .204、乌龙球处理程序中的转
4、弯弧度不够。 .215、在追球时会过冲或是太飘。 .21 九、 方案扩展 .221、 可扩展为22和30的进攻方案。 .222、 可以进一步优化。 .233、 可扩展既可攻又可守的方案 .234、 可用程序选择器。 .24 一、 前言本方案只针对18足球进攻机器人的, 是一个比较简单的进攻方案。 本方案用到的传感 器也很少,只用到了指南针、复眼模块和超声测距模块,而灰度测量模块、触碰模块则没有 用到, 有兴趣的读者不妨加入试一下, 看其效果如何。 本方案虽然是在总结以前方案的不足 和优点及编者的一些经验和想法的基础上, 进行了较大的改进, 不过大致的策略和实现方法 都和以前的方案相类似,因此,
5、在看本方案之前,请参考 06年的进攻方案。在机器人足球比赛中, 高手林立, 各类机器人风格各异, 形态万千, 各种技术层出不穷, 本方案只是提供用本公司标准器材搭建足球机器人的例程,希望起到一种抛砖引玉的作用 , 留给读者拓展的空间。二、 任务足球进攻机器人, 其任务就是把足球踢进对方的球门。 首先要找球, 找到球后还要 判断球的方向,在识别敌我双方方向后才能踢球,否则就会进乌龙球了。三、 策略分析首先我们把机器人要完成的任务拆分为以下几个部分:1、 找球机器人用复眼找球非常的准,当机器人在已方或敌方半场时,其复眼所有通道都 没有发现球,就要跑到另一半场找球,这样就可以避免当设定看球的阀值很小
6、时机 器人会乱跑或当设定看球的阀值过大时远处的球就会看不到的问题。2、 乌龙球处理当找到球后,机器人要识别球的方向,如果是向着已方球门的方向,就不能立即 踢球了,如果踢的话就乌龙球了。因此,机器人要转到球的后面去踢球,转到球的 后面,如果球离场边太近,机器人就不能往离场边近的方向转了,不然就会撞到场 边的墙壁而转不了, 而距离测量模块就可以知道机器人是离左边场的墙壁近还是离 右边场的墙壁近了。3、 死球处理机器人在踢球过程序中,可能会出现各种情况,比如说:球在四角被卡死了,怎 么办呢?如果机器人在最大的时间里,其角度差小于 15度时,那么就说明球被卡死或 是机器人被卡死, 可具体卡在哪个角落,
7、 用角度传感器来判别, 而采取相应的处理策略。4、 追球以前的方法是用机器人的复眼找球,当 1、 2、 3号通道看到球时,机器人的左轮 不动,右轮正转,机器人向左边运动,当复眼的 5、 6、 7号通道看球时,机器人的右动 不动,左轮正转,机器人向右动运动,当复眼的 4号通道看到球时,机器人的左、右轮 同速正转,机器人就朝着球的方向运动,达到找球的目地。 在真正的比赛时,会发现,其中存在一个问题,那就是机器人的反应速度比较慢,在实 战中,速度放在第一位,分秒决定胜负。到底是慢在哪里?仔细分析,我们可以知道, 当球的方向是在机器人的左边或右边时, 机器人要调整方向采用了一边轮子不动, 一边 轮子正
8、转的方式, 可以看出, 这是导至机器人反映慢的原因。 我们可以采取一边正转一 边反转的方法,使机器人正对着足球,然后全速直冲过去,这样的速度就会快很多。但 这样也会存在一个问题, 那就是在离球的距离近的时候会容易过冲, 因此要分阶段处理, 当离球比较远的时候,可采用响应快的程序,离球较近时候则采用响应慢的程序。5、 击球为了能让机器人更好的进攻,可把球场分为三个区(读者可根据自己的实际把 球场分区 ,机器人在不同的区域就可以采用不同的进攻策略。怎样才能分区域呢?可 采用超声测距模块。 球场的情况是变化的, 超声测距模块只能提供场上的大概位置, 不 能为机器人提供精确的位置。机器人在追球的过程中
9、,其角度为 0度、 90度、 180度、 270度的概率不小,因 此可设八个全局变量。当机器人的角度为 0度或 90度、 180度或 270度时,就读取超 声测距模块的值,并把其变量值存贮到全局变量中。当机器人离球较近时,读取全局变量的值,并判断机器人大概在球场上的位置, 进而采取相应的策略。详细说明请参考下面的进攻算法说明。6、 流程图根据上面的说明,可得到以下的流程图: 四、 程序说明1、 主程序说明 第一行:设系统时间为 0,全局变量初始化;第二、 三行:如果装在机器人前面的复眼模块检测到球, 而且当前复眼通道的值大于 远距离的光值或者当前复眼通道的最大值减去当前复眼通道的最小值大于设定
10、的光值 时, 机器人就会认为此方向上有球。 若机器人在最大的时间里, 其角度差小于 15度时, 检测机器人当前角度,机器人当前角度大于 180度,向右抛,否则向左抛;若当机器人 在最大的时间里,其角度差大于 15度,检测机器人当前角度、复眼的光值;第四行:当复眼的第三个通道号检测到光值大于等于 240或是复眼的第四、 第五个通 道号检测到的光值也大于等于 240时, 说明球离机器人很近, 读取机器人当前角度, 执 行击球程序;第五、六行:当机器人当前的角度在 80度到 100度之间时,读取超声测距模块的返 回值, 如果当前左超声测距模块的返回值与存储超声测距模块返回值的全局变量的差值 大于一定
11、值或是装在机器人后面的超声测距模块的返回值大于一定值时,就向左击球, 否则,则把当前左超声测距模块的返回值存储到全局变量中,并跳出 while(循环; 第七、 八行:当机器人当前的角度值在 260度到 280度之间时, 读取超声测距模块的 返回值, 如果当前左超声测距模块的返回值大于一定值, 而且当前装在机器人后面的超 声测距模块的返回值也大于一定值时,就向右击球,否则,则跳出 while(循环; 第九行:机器人当前的角度都不在以上的范围,跳出 while(循环;第十、十一行:读取当前指南针、复眼通道号的返回值,当机器人离球较过时且球是 朝已方球门时,执行乌龙球处理程序,否则进入追球子程序;第
12、十二行:如果装在机器人前面的复眼模块检测不到球,则到另一半场找球。2、 需要输入的子程序参数<1>、 checkDeath(作用:检测机器人当前的角度差在最大的时间里是否大于一定的角度 degree (可自定义 ,若小于则说明机器人卡死在球场某个位置,若大于则说明机器人不 是被卡死。子程序包括需要现场测定的参数 angle 这一个参数。 详细说明请看后面 的模块说明。参数说明:degree:机器人在最大的时间内的角度差值。<2>、 ballHandle(作用:乌龙球处理。 子程序包括需要现场测定的参数如下 distance 、 yfy 、 jGuan 、 leftDis
13、tance 、 rightDistance 这五个参数。 详细说明请看后面的模块说明。参数说明:distance :机器人与球门的距离,机器人的方向是 180度,朝已方的;leftDistance:机器人与左边场地的距离;rightDistance:机器人与右边场地的距离;yfy :当前复眼通道的远距离光值,小于此设定值,机器人就会认为是此方向上 无球;jGuan :当前复眼通道的近距离光值,其主要是用在机器人在转完弧度后与球距 离较近的光值,因此它比 findBall(子程序中的 jGuan 参数要大。<3>、 findBall(作用:追球。子程序包括需要现场测定的参数如下 jG
14、uan 这个参数, 详细说 明请看后面的模块说明。 参数说明;jGuan :当前复眼通道的近距离光值。<4>、 comeORback(作用:当在前半场找不到球时,就到另一半场找球,子程序包括需要现场测定的参数如下 distance 、 backDistance 、 yfy 、 time 这四个参数,详细说明请看后面的模块说明。参数说明:distance :球场中央的距离,若装在机器人后面的超声测距模块检测到的值比distance 小,那说明机器人还没有过半场;backDistance :机器人过半场的距离;time :机器人过半场的时间;yfy :当前复眼通道的远距离光值,小于此设
15、定值,机器人就会认为是此方向上无球;五、 模块说明1、 checkDeath(图标: 作用:检测机器人当前的角度差在最大的时间里是否小于一定的角度 degree (可自定义 ,若小于则说明机器人卡死在球场某个位置,若大于则机器人不是被卡死。流程图: 程序详细说明: 参数说明:beginDeathHeading:全局变量,其存储上一循环时的角度,也就是刚卡死时的 角度;beginDeathTime:全局变量, 其存储上一循环时的时间, 也就是刚卡死时的时间; b :当前的指南针返回值;t :当前的系统时间;degree:角度差值。分别读取当前角度与系统时间,如果 beginDeathHeadin
16、g 与 b 的绝对值小于 degree ,而且 beginDeathTime 与 t 的差值大于 2.5秒时,说明机器人被卡死或是球 被卡死,那么就返回 1,若 beginDeathTime 与 t 的差值不大于 2.5秒则返回 0;如果 beginDeathHeading 与 b 的绝对值比 degree 大, 那么就把当前的系统时间 t 赋予给全 局 变 量 beginDeathTime , 当 前 的 指 南 针 返 回 值 b 也 赋 予 给 全 局 变 量 beginDeathHeading ,然后就返回 0。2、 ballHandle(图标:作用:乌龙球处理。 程序详细说明: 参数
17、说明:distance_middle:装在机器人后面的超声波测距模块的返回变量值;distance_left:装在机器人左面的超声波测距模块的返回变量值;distance :机器人与球门的距离,机器人的方向是 180度,朝已方,读者需实测; leftDistance :机器人与左边场地的距离,读者需实测;rightDistance :机器人与右边场地的距离,读者需实测;yfy :当前复眼通道的远距离光值, 小于此设定值, 机器人就会认为是此方向上无球; jGuan :当前复眼通道的近距离光值, 其主要是用在机器人在转完弧度后与球距离较 近的光值,因此它比 findBall(子程序中的 jGua
18、n 参数要大。机器人后退 0.2秒,转 180度,读三次装在机器人左面的超声波测距模块的返回值 distance_left,若返回值小于 100CM ,跳出 for(循环,否则读三次后才跳出;如果机器人靠 左场边,读三次装在机器人后面的超声波测距模块的返回变量值 distance_middle,若返回值 小于 100CM ,跳出 for(循环,否则读三次后才跳出;如果装在机器人后面的超声波测距模 块的返回变量值 distance_middle比 distance 小, 说明机器人靠近场边, 那就不能向左或向右 转弧度了,只能转 270度,向前走 0.2秒,再转 180度,向前走 0.2秒,再转
19、 90度,若 distance_middle比 distance 大,直接向右转弧度;如果机器人靠右场边,其执行乌龙球处理程序的原理与机器人靠左边的原理一样。 如果机器人在中央,且机器人靠近球门,则需向前冲 0.2秒,再向左转弧度,若远 离球门则直接向左转弧度。注意:本乌龙球处理程序是将球场分为六个区域,每个区域都有自己的算法, 读者 需认真阅读本段程序,理解本段程序的思路与算法,只有理解了,才能用好本段程序,切 记! 还有本段程序需要调试后才能用,因为硬件不同,其马达速度也不同,转弧度所需的时 间也不同,这就需读者耐心的调试,后面有调试说明。3、 findBall(图标:作用:追球。本段程序
20、是分两部分来追球的,与球的距离远的就采用快追球程序, 离球近的就采用慢点的追球程序。流程图: 程序详细说明: 参数详细说明:sr :右马达控制命令字, 1为停止, 0为前进, 2为后退;sl :左马达控制命令字, 1为停止, 0为前进, 2为后退;maxIndex :复眼的通道号;maxValue :当前所有复眼通道的最大值;jGuan :近距离的光值,主要用在追球程序上,作用是分段执行追球程序;g_distanceLeft:全局变量,存储左超声测距模块的返回值。检测当前所有复眼通道的最大值, 如果当前所有复眼通道的最大值小于近距离的 光值时,检测复眼通道最大值的通道号,根据不同的通道号执行不
21、同的处理程序, 如果复眼通道最大值的通道号等于 7,那么机器人就快速向右转;复眼通道最大值 的通道号等于 6则中速向右转;复眼通道最大值的通道号等于 5则慢速向右转;复 眼通道最大值的通道号等于 3则慢速向左转; 复眼通道最大值的通道号等于 2则中 速向左转;复眼通道最大值的通道号等于 1则快速向左转;在找球中若机器人的角度为 80度到 100度之间,读取左超声测距模块的返回值。如果当前所有复眼通道的最大值大于近距离的光值, 检测复眼通道最大值的通道号,并根据不同的通道号执行不同的处理程序,原理与远距离追球的一样,只不过其比远距离追球的响应速度慢一点。注意:不同的马达、电力,其速度也不同,读者
22、要注意,以及机器人在追球的过程中会出现过冲或在追球的过程中不是一条直线,读者要耐心调试。4、 comeORback(图标: 作用:当在前半场找不到球时,就到另一半场找球。流程图: 程序说明: 参数详细说明:distance :球场中央的距离, 若装在机器人后面的超声测距模块检测到的值比 distance小,那说明机器人还没有过半场;backDistance :机器人过半场的距离;time :机器人过半场的时间;yfy :当前复眼通道的远距离光值, 小于此设定值, 机器人就会认为是此方向上无球;t :系统时间;i :returnOut(的返回值;机器人检测不到球,转 0度,读四次超声,如果装在机
23、器人后面的超声测距模块检测到的值比 distance 小,说明机器人还没有过半场,那就向前走一段距离,这用一个 while(循环来实现, 机器人向前走, 直到装在机器人后面的超声测距模块检测到的值比 distance 大或是到了一定的时间,才跳出 while(循环。在 while(循环中还 有一个检测球的子程序,若检测到球则立即返回。如果装在机器人后面的超声测距模块检测到的值比 distance 大,说明机器人过了半场,但是还没有找到球,那么机器人就要转 180度,并向前走,这个也是用一个while(循环来实现,机器人向前走,直到装在机器人后面的超声测距模块检测到的值比 distance 大或
24、是到了一定的时间,才跳出 while(循环。在 while(循环中还有一个检测球的子程序,若检测到球则立即返回。注意:<1>、机器人在向前走的时候,要观察其所走的路线是不是一条直线,不是,就要耐心的修改马达的速度,尽可能的让其路线是一条直线。<2>、机器人向前走的时候,要观察其向前走前会不会碰到前边场墙,若碰到就要修改一下其向前走的距离和时间。5、returnOut(图标: 作用:检测球,若检测到球则立即返回。程序说明: 如果当前复眼所有通道的最大值大于无球时的光值,这个条件成立就立即返回 1,跳出这个子程序,否则就返回 0。6、 turnAngle( 图标:作用:转任
25、意角度, 并就近选择转向距离。 在转角度的过程中, 若检测到球则 Return返回到有球处理程序。若定一个角度,比如 90度,而机器人的当前角度 20度,机器人顺时针向 90度方向转动(箭头方向 ,而不是逆时针向 90度方向转动。如图: 程序图: 具体说明:a:为了让指南针读数更精确,可先让指南针读三次,这个功能可用一个小 while 循环来完成,程序图如下: 当储存计数器的数值 counter<2时, 检测指南针角度, 若当前角度 degree>360度时, counter=0,表示读数出错,反之则 counter=counter+1,读数有效,当 counter>2时才
26、跳出 while(。b:转任意角度,并选取最近转向距离。执行条件如下:angle2:储存角度值,当输入的角度 angle 小于 180度时, angle2=180+angle;当输 入角度 angle 大于 180度时, angle2=angle-180。 这个主要是让输入角度 angle 与 angle2处于同一条直线上。如果当前指南针的返回值 degree 大于输入角度 angle 与当前指南针的返回值 degree 小于 angle2而且输入角度 angle 小于 angle2, 若者当前指南针的返回值 degree 大于输 入角度 angle 而且当前指南针的返回值 degree 小于
27、 360度,或者当前指南针的返回 值 degree 大于 0度而且当前指南针的返回值 degree 小于 angle2时,机器人向左边 转角度,反之就向右转。程序图: c:角度容差,在这个地方有一个参数需要用户修改的,下图的圆圈示: 在程序中,若想增大或减少角度容差,只需把 5的值改变就可以了。d:Return返回,若检测到球,则立即 Return 返回。程序图: 注意事项:电力不同,马达速度、角度容差也不同。电力充足时,可适当下调马达 速度,增大角度容差,以免增加偏转角度误差;电力不足时,可增加马达速度,减 少角度容差。7、 a ngle(图标:作用:angle(与 turnAngle(的功
28、能是一样的,只不过 angle(是没有复眼的优先级设 置,它是转完角度后,才执行下一个程序的,而 turnAngle(是在转角度的过程中, 若检测到球则 Return 返回到有球处理程序, 而不是继续执行转角度的程序, 但它们 间的原理是一样的,这里就不多论述了,请参考 turnAngle(模块说明。 8、 t urn(图标:作用:转弧度。 将系统时间设为 0,再进入 while(,检测机器人的方向是否朝敌方,不是则继续 旋转,若是或到了一定的时间,跳出 while(,机器人后退,一直后退到机器人发现 球或是后退的时间到了,否则就一直后退。这段程序与以前所写的进攻方案中的乌龙球处理程序差不多一
29、样, 有兴趣的读者 不妨参考以前的进攻方案。六、 进攻算法为了能让机器人更好的进攻, 可把球场分为三个区 (读者可根据自己的实际把球场 分区 ,机器人在不同的区域就可以采用不同的进攻策略。怎样才能分区域呢?可采用 超声测距模块。 球场的情况是变化的, 超声测距模块只能提供场上的大概位置, 不能为 机器人提供精确的位置,如下图:机器人在追球的过程中,其角度为 0度、 90度、 180度、 270度的概率不小,因 此可设八个全局变量。当机器人的角度为 0度或 90度、 180度或 270度时,就读取超 声测距模块的值,并把其变量值存贮到全局变量中。 当机器人离球较近时,读取全局变量的值,并判断机器
30、人大概在球场上的位置,进而采取相应的策略。下面举例子说明,如下图 A 和图 B : 在图 A 中,机器人在 A 区域追球, 机器人在追球的过程中,其当前角度总会有在正负 5度之间的机会,当机器人当前的角度在正负 5度之间时,读取左、 后超声测距模块的返回值,并把它们存储有全局变量中,当机器人靠近球时,读取超声测距模块返回值的全局变量,若其发现球在 C 区域(假设球在 C 区域 , 机器人向左转一定的角度,使机器人与球的方向都朝着敌方的球门,这样就能准确的将球踢进敌方的球门,在其他区域进攻的算法都相类似,有兴趣的读者不妨研究一下。在图 B 中(由于编者美工基础差,画的图不是很好,机器人与球是在同
31、一水平线上的,即机器人与球的方向都为 270度左右,容差为 5度 ,当机器人推着球从 A 区域往 B 区域踢的时候, 如果没有加入进攻算法, 那么机器人就会一直推着球绕着球场跑, 这样就浪费 了机会,因此,可加入几个全局变量,用来存储超声测距模块的返回值,当机器人追着 球时,当前角度为 270度或 90度左右的时候,把读取到的返回值赋予全局变量,并计 算当前全局变量减去上一全局变量的值是否大于一定的数值, 若大于, 则说明机器人走 到了球门前, 还要进一步判断机器人是朝已方球门还是朝敌方的球门, 若是敌方的球门, 则向左或向右抛,这样进球的概率就高。就以图 B 为例吧,当机器人推着球往前走,
32、并且其当前的角度为 270度左右, 那么机器人就计算当前全局变量减去上一全局变量的 值是否大于一定的数值或是装在机器人后面的超声测距模块的返回值是否也大于一定 的数值(需实测 ,若大于则向左抛,否则继续推着球往前走,但是机器人推着球往前 走的时候可能出现一个问题,如右图 C :当机器人的当前角度约为 270度,机器人从 A 区域推着球向 B 区域走,按正常的情 况,机器人在到了 B 区域就应向右抛,把球攻进敌方球门,但是因环境、场上其他因 素的影响,机器人可能卡死在 C 区域。因此,可加入系统时间 t ,当系统时间 t 大于某 个设定值时,而且其角度差值很小,说明球已卡死,不能转入死球处理程序,可让机器 人后退两秒或是向左转
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023八年级英语上册 Module 2 My home town and my country Unit 2 Cambridge is a beautiful city in the east of England教学设计(新版)外研版
- 5 国家机构有哪些 课时2《国家机关的职权》 教学设计-2024-2025学年道德与法治六年级上册统编版
- 2024-2025学年高中物理 第2章 1 欧姆定律教学设计 教科版选修3-1
- 2023六年级语文上册 第八单元 语文园地教学设计新人教版
- Unit 3 My School Reading Plusl拓展阅读(教学设计)-2024-2025学年人教版(2024)七年级英语上册
- 《第一单元 红灯停 绿灯行 唱歌 小蚂蚁》(教学设计)-2023-2024学年人教版音乐一年级下册
- 16 大家一起来合作(教学设计)2023-2024学年统编版道德与法治 一年级下册
- 肠炎患儿护理查房
- 2015人教版九年级历史与社会下册:第五单元第三课第一框《苏联的改革与发展》教学设计(浙江椒江区洪家第二中学)
- 2025毕业答辩模板:创意与学术并存
- 2025年浙江省杭州市拱墅区中考语文模拟试卷含答案
- 原发性高血压护理措施
- 路面工程安全专项施工方案
- 人工智能基础(Python实现)-课件 第8章 生成式大模型应用
- 2024年安徽宁马投资有限责任公司招聘10人笔试参考题库附带答案详解
- 纪检监察审查调查业务培训
- 《变频器原理及应用》课件
- 2024年中考模拟试卷英语(苏州卷)
- 摄像服务行业品牌建设研究-深度研究
- 游戏人物立绘课程设计
- 人像摄影基础课件
评论
0/150
提交评论