基于VRTK的虚拟仿真乒乓球运动项目的设计与实现


    基VRTK虚拟仿真乒乓球运动项目设计实现
    Design and implementation of virtual table tennis based on vrtk


    容摘

    着5GVR技术改革类VR产品涌入视野中中包括众体育类虚拟仿真项目天气问题出外运动者周边没运动设施时候会感懊恼果套虚拟仿真体育运动项目件非常事情类问题提出款基VRTK虚拟仿真乒乓球运动项目通样系统需套VR设备出门享受运动体验感担心天气场问题
    虚拟仿真乒乓球运动项目款基Unity引擎VRTK插件虚拟仿真运动项目模拟真实乒乓球运动项目实现基乒乓球玩法功基础进行优化新玩法玩家选择相应战难度AI物进行战选择战场景场战12分制游戏结束历史高分数战总次数赢次数等
    玩家行选择场景中进行乒乓球战战难度非常融洽环境音乐体验乒乓球闲余观赏样风景美色玩家种闲逸感觉
    日常乒乓球环境拥提升运动体验拥接真实物理系统硬件软件结合例需捡球等繁杂操作解决掉相信体育运动方式改变

    关键词:虚拟仿真 运动项目 乒乓球 VRTK插件

    Abstract

    With the arrival of 5g and the reform of VR technology all kinds of VR products have come into people's vision including many sports virtual simulation projects When people can't go out for sports because of the weather problem or there is no sports facilities around they will be upset Therefore if there is a set of virtual simulation sports is a very good thing so this paper puts forward a virtual simulation table tennis sports based on vrtk for this kind of problems Through such a system only a set of VR equipment is needed you can enjoy the experience of sports without going out and you don't need to worry about the weather and venue
    Virtual simulation table tennis is a virtual simulation sport based on the vrtk plugin of unity engine It mainly simulates the real table tennis sport realizes the basic table tennis play function and optimizes and new play method on this basis The player chooses the corresponding difficulty of the match and the AI character to fight and also chooses the scene of the match Each match has a 12 point system After the game is over you can see the highest score in history the total number of matches the number of wins etc
    The game player plays the table tennis match in the self selected scene Each battle difficulty has a very harmonious environment music After experiencing the leisure time of table tennis you can also appreciate the different scenery and beauty giving the game player a very leisurely feeling
    Compared with the daily table tennis the environment has a great improvement and sports experience with a physical system close to the reality Under the combination of hardware and software some complicated operations such as the need to pick up the ball are solved It is believed that this will greatly change people's sports mode in the future
    Key words:Virtual simulationsports table tennis vrtk plugin
    
    目录

    第章 绪 1
    11课题研究背景意义 1
    12 VR国外研究现状 2
    121 VR国研究现状 2
    122 VR国外研究现状 3
    13 VRTK插件 3
    第二章 项目需求分析总体方案设计 5
    21 虚拟仿真类运动项目需求分析 5
    211 者需求分析 5
    212 功需求分析 5
    213 性需求分析 6
    22 项目总体方案设计 7
    221 项目结构方案设计 7
    222 总体结构方案设计 8
    第三章 项目详细设计实现 11
    31机交互模块 11
    311 开始界面 11
    312 难度场景选择界面 12
    313 项目交互 13
    314 音效音乐 14
    315 交互反馈 14
    32场景模块 15
    321乒乓球桌模型 15
    322第场景 15
    323 第二场景 16
    324 第三场景 17
    33 AI乒乓球模块 18
    331 AI智移动 18
    332 AI智发球 18
    333 AI智接球 19
    334 乒乓球逻辑 19
    第四章 项目测试 21
    41功测试 21
    42性测试 23
    43项目测试结果讨 23
    第五章 总结展 24
    51 总结 24
    52 展 24
    参考文献 25
    致谢 26
    附录 27


    第章 绪

    11课题研究背景意义
    VR(虚拟现实)前年全球热度突然飙升中国更达火热步2016年甚称VR元年腾讯百度阿里互联网巨头准时机纷纷投入资金力开发研究VR虚拟现实项目
    虚拟现实项目体验身境感受失重击射击等尝鲜愿意花百块钱体验时拥虚拟现实商场中常常会排长队伍
    然VR项目时非常赚钱投身VR行业景长时软件容开发环境产品出产速度质量
    软件方面手机电脑性足网络方面数传输速度更硬伤续航发热方面非常担心玩久会头晕
    原验足没什制作验制作出画面精美时VR行业产业链没形成更没标准部分前次新鲜感热度少体验VR项目样VR热度慢慢消退导致投资撤资者全力投入开发虚拟游戏等项目公司破产众裁员现象出现厂商持续开发研究VR技术
    着面年沉淀硬件网络速度发展虚拟现实行业慢慢形成初步产业链涉行业更广前部分VR项目游戏类现涉中项目影视娱乐教育设计领域医学方面体育运动等行业应着5G更推动VR发展进度类VR产品涌入视野中中包括众体育类虚拟仿真项目
    然VR体育运动领域中发展中起步阶段然成熟VR训练系统解决问题
    运动员次穿着厚重装备天气问题场训练问题初期容易受伤体育项目运动员先VR训练系统熟悉会容易手样助保护运动员身体果套虚拟仿真体育运动项目件非常事情
    体育项目通AI更仿真出手出招套路VR训练中提前熟悉手套路针训练
    课题提出款基VRTK虚拟仿真乒乓球运动项目通样虚拟仿真系统需套VR设备出门享受运动体验感担心天气场等问题
    次课题利微软公司发布面象编程语言C#游戏开发引擎Unity虚拟现实项目开发插件VRTK开发课题项目虚拟仿真乒乓球项目特色概概况:
    首先实现基乒乓球玩法功基础进行优化增加新玩法者进入开始界面选择选择相应战难度
    进入场景前场景选择玩家选择定场景中选择心仪场景进行者战战难度非常适合融洽环境音乐体验乒乓球闲余观赏样风景美色次挑战难度样感受
    相真实乒乓球环境拥提升非常运动体验次项目战拥真实物理系统碰撞硬件软件相互结合现实需捡球等繁杂操作简化者解决进行新创新玩法
    虚拟现实体育行业应断发展相信体育运动方式改变运动热情会逐步升

    12 VR国外研究现状
    VR起源世纪80年代美国VRL公司创始拉尼尔提出2016年广泛传播发展认21世纪重发展学科影响生活重技术节会虚拟现实国外研究现状进行致概述
    121 VR国研究现状
    年国VR技术行业已慢慢发展起已相应产业链规模市场然属初级阶段市场规模属较较两年增长速度前年快许
    根课题收集资料综合出三年间VR市场规模158亿升528亿元非常观数现中国虚拟现实市场处持续火热状态产品逐渐进入众消费市场B站等类似网站已推送发布制作虚拟现实产品视频日持续带新产品技术资讯
    参虚拟现实企业越越硬件方面没出现明确领跑者硬件领域势必会成企业竞争VR战场虚拟现实产业形态越越丰富产业潜力非常巨社会效益非常强势相信久未生产生活方式会发生巨改变
    VR国外开始起源发展起步研究现状国外发展规模非常潜力户增量相信全世界排行第VR国研究发展越越未期
    122 VR国外研究现状
    虚拟现实国外研究现状中国技术层面讲美国美国已研发出外空虚拟仿真训练基供全国虚拟仿真教育系统工智方面研究较强悍
    美国研究感知硬件等方面研究较集中游戏方面研究力度较作虚拟现实起源游戏质量国法拟
    虚拟仿真游戏日较先进规模较日虚拟现实方面基游戏产品说日虚拟仿真项目基游戏方面日已研究刀剑神域动画VR系统游戏推出量VR产品游戏
    VR国外发展现状错国家发展重点研究寻找虚拟现实国较优势发展方

    13 VRTK插件
    VRTK套专门虚拟仿真交互方案目前版330国VR者说国际VR产品部分交互方案
    涵盖许常见解决方案虚拟空间运动触摸抓取象等交互通指针者触摸Unity3DUI元素进行交互VRTK官方制作44官方案例新手快速熟练交互方案交互方案功特详细拥专门教程视频新手学面列举两常功
    抛物线位置定位需LeftController控制附带VRTK_ConTroller EventsVRTK_BezierPointerRenderer(抛物线)
    VRTK_Pointer三脚搭配控制抛物线类型射线球光标光标处显示位置
    手柄发射射线需RightController进行控制附带VRTK_ConTroller Events VRTK_StraighPointerRenderer(直线渲染)等脚进行搭配手柄发射射线UI进行交互者进行移动
    面两VRTK事件处理处理UI交互物体拖动射线处理物品拖动等基事件封装代码开发者减少开发工作
    VRTK断更新容虚拟现实项目开发发展进行推动
    第二章 项目需求分析总体方案设计

    21 虚拟仿真类运动项目需求分析
    211 者需求分析
    款合格虚拟现实项目针者角度分析第应该玩家快速熟悉手者角度说虚拟项目应该应该步步提示位
    虚拟现实现现然发展较成熟没达普遍众程度项目提示非常重操作提示图文茂者通俗易懂
    者快熟悉体验乒乓球虚拟仿真项目观赏性手感非常重者次体验感觉应该新奇
    212 功需求分析
    项目首功实现VRTKVR设备正确交互实现设备虚拟项目中某功进行交互课题开始游戏界面设备项目进行交互致:
    带VR头盔正确显示虚拟项目中场景手柄游戏界面进行交互界面开始界面战选择界面场景界面进行点击选择进入游戏手柄初始化乒乓球拍进行战
    第二项目中提示功提示功者进行提示帮助者利进入游戏熟悉乒乓球战操作提示功:
    开始界面进行战选择场景选择界面界面者进行提示帮助者清楚明知道更体验项目种玩法开始前玩家介绍清楚乒乓球战中进行操作提示游戏分数规次分者进行分者失分提示
    项目核心逻辑乒乓球者击乒乓球效果接现实乒乓球运动乒乓球评分规正确判分非常重
    乒乓球虚拟仿真中场景应该元化次乒乓球战选择样场景战相应音效非常重音效效果影响者进行乒乓球战时候体验效果
    良搭配音效音乐体育运动说起非常催化效果跑步时候果音乐情况身身体肌肉会着音乐节奏运动起音乐选择参考重点
    总结概述游戏体功概述图21示
    图21 游戏体功
    213 性需求分析
    性优化:第美术方面优化完全控制创建模型量减少模型精细度减少模型面片数顶点数样CPU进行渲染时候需准备工作会变少
    样游戏进行时候利进行帧渲染模型面片数定点数材质数等方面话帧渲染电脑需面片数信息收集起进行相关准备工作果准备工作CPU会进行堵塞发送渲染信息GPU进行渲染样会导致GPU渲染刀子进行游戏时候会卡非常影响者体验搭建项目模型时候量做准备工作举例子房子模型整体允许unity里面象搭建出
    引擎渲染工作某场景里面果物体利LOD优化技术游戏进行优化
    LOD渲染游戏场景物体隐藏摄机视角东西会动模型隐藏起系统会模型渲染出会提高项目运行流畅度
    项目中灯光特效等素会影响项目流畅度课题虚拟仿真乒乓球实现乒乓球功会需太灯光特效需适点缀灯光量光贴图烘培样太光效果
    总体结合说项目虚拟仿真乒乓球重点乒乓球AI逻辑需太特效灯光重点模型方面选择

    22 项目总体方案设计
    221 项目结构方案设计
    基VRTK虚拟仿真乒乓球运动项目设计实现

    战难度选择
    场景选择
    开始战
    游戏界面
    退出游戏
    退出游戏

    课题项目虚拟仿真VR乒乓球核心实现乒乓球功考虑虚拟现实项目没普遍众者较容易手更容易熟悉VR设备操作项目算相简单结构设计重点项目部代码优化者需操作较简单结构详情图2
    2示
    图22项目结构方案设计
    222 总体结构方案设计
    基VRTK虚拟仿真乒乓球运动项目设计实现

    游戏场景模块
    机交互模块
    乒乓球逻辑模块
    AI智接球模块
    AI智发球模块
    AI智移动模块
    乒乓球桌模块
    第场景模块
    第三场景模块
    第二场景模块
    交互反馈模块
    项目交模块
    战难度模块
    开始游戏界面模块
    音效音乐模块
    机交互模块
    结合前文研究讨出虚拟现实项目总体模块构架图 23 示


    图23 总体结构方案设计
    结合VR设备VRTK插件Unity开发引擎开发虚拟仿真项目研讨模块实现方法具体分析
    机交互模块:开始项目界面选择战难度界面选择战场景界面三界面Unity开发引擎里面UGUI设计系统C#编程引擎结合VRTK插件辅助代码进行研发
    开始界面方便户操作两种开始形式者键进行操作VR设备中手柄发射射线进行操作
    C#代码键盘输入进行监听者VRTK插件辅助代码手柄中发射出射线界面UI进行交互选择UI中需者进行提示键位者手柄进行什操作开始游戏手柄者键选择战难度进行战图
    进入乒乓球战场景手柄会实例化出乒乓球拍C#代码编程碰撞体组件结合手柄扳机实例化出乒乓球乒乓球拍击乒乓球开始战
    VRTK插件中辅助代码战者反馈出击乒乓球震动效果者体验真实击效果搭配击乒乓球音效相应战难度配乐者拥较机交互体验
    (2)游戏场景模块首先开始游戏界面场景场景交互UI界面面现实转动球整体者虚拟位置外太空者种身外太空感觉
    战场景乒乓球桌模型AI角色模型乒乓球桌模型会设置碰撞体便产生应逻辑碰撞效果C#代码附加乒乓球桌碰撞拥乒乓球规逻辑
    第场景太空舱里面战场景太空舱种分裂效果会者感觉科技感极高场景中进行战场景搭配附加天空材质科技城市背景
    第二图话武道场景者会AI角色武道场中进行战场景搭配天空盒山崖材质者感觉世隔绝山崖中武道场进行乒乓球战奇幻十足种江湖气息
    第三场景十字圆形台进行战搭配天空盒云端夕阳效果玩家感受身云端AI战感觉种夕阳末日感觉
    AI乒乓球模块AI模块智移动模块战中Unity中相应动画系统C#代码控制AI呼吸形态
    AI根C#代码乒乓球位置进行计算AI物会着乒乓球水X相应位置进行应移动
    AI智接球模式AI根C#代码算法检测乒乓球距离位置然进行接球根AI接球检测动画系统播放AI角色接球动作接完球恢复呼吸状态动作
    AI智发球模式判定AI发球时候AI方实例化乒乓球然AI根C#代码算法检测发球模式AI动画系统中播放发球动作然根碰撞体碰撞乒乓球发射出
    乒乓球逻辑乒乓球C#代码逻辑需判断刻阶段碰乒乓球乒乓球桌掌控着判分逻辑碰撞板者碰撞乒乓球桌挡板时候会判定者AI输球数代码部传送判定发球方做完数传输会身进行销毁

    第三章 项目详细设计实现

    31机交互模块
    311 开始界面
    开始界面设计Unity游戏开发引擎里面带UI系统UGUI进行制作设计理念动态球者身太空形成种虚幻感觉然进入球开始游戏
    需Canvas象象添加VRTK_UI Canvas代码表示画布VR设备进行交互UI象相系统画布画布添加两Text象Text象放Canvas象面正确运行字写画布面正确现实出样
    Table Tennis标题选择texture_front字体设置居中现实设置字体100标题更加立体添加Shadow组件组件字体显示更加立体然选择图选择难度战字体提示样设置
    Canvas象需添加button钮然设置开始游戏字体提示钮组件On Click()关联C#代码调钮相应响应事件相应响应事件调场景加载代码场景加载代码需调命名空间using UnityEngineSceneManagementVRTK插件辅助设置手柄硬件操作进行手柄射线点击钮操作致图31示
    图31 开始界面
    312 难度场景选择界面
    选择难度选择图界面选择战难度设计理念Canvas画布面放三钮然玩家进行选择分初级战中级战高级战致图32示
    图32 战难度选择
    然钮门Text面设置Text字体然三钮组件OnClick()方法设置应方法果者手柄发射射线进行选择者键进行选择话会C#代码里面传送相应数相关伪代码示
    1 if (StartGamesSelectDifficulty 0)
    2 {
    3 StartGamesSelectselectMap()
    4 StartGamesSelectDifficu lty 1
    5 }
    6 else
    7 {
    8 StartGamesSelectSelectImageSetActive (false)
    9 StartGamesSelectMap 1
    10 StartGamesSelectActivationStartBtn()
    11 }
    选择战难度C#代码中会调显示图选择界面图选择界面设计理念Canvas画布放三钮然进行场景选择然图会图片进行显示然者选择相应喜欢图进行战
    界面需Canvas画布面新添加三Image象象显示Image图片然三象命名应数名称然Iamge添加精灵图片般图片调unity里面时候直接转换成精灵图片进行者选择战难度时候C#代码部会实例化三图片出者根VR设备手柄发射射线选择场景者键开始虚拟仿真乒乓球进行战致图33示
    图33图选择界面
    313 项目交互
    项目交互右手手柄乒乓球拍乒乓球击交互首先乒乓球拍安置右手手柄中图34示
    图34乒乓球拍
    时候VRTK[VRTK_SDKManager]象面Controller (right)象象面放置乒乓球拍模型然设定乒乓球拍位置乒乓球拍需加碰撞体然刚体便乒乓球进行击交互左手象面住左边手柄扳机实例化出乒乓球功需附C#代码然贴Controller (left)象致伪代码
    12 时刻判断乒乓球数量少
    13 PpqiuShuliang GameObjectFindGameObjectsWithTag(Ppqiu)
    14 左手柄扳机时候生成乒乓球
    15 乒乓球数量1情况
    16 if (ZPdingGameStay false && ZPdingkai 1)
    17 {
    18 if (deviceGetHairTriggerDown())
    19 {
    20 实例化乒乓球
    21 }
    314 音效音乐
    音乐音效模块话设计理念开始界面战难度搭配相适应音乐开始界面音乐设置较谐休闲较设置相适合外太空场景然战难度音乐搭配根者选择难度进行搭配根战难度初级中级高级难度设置相应音乐初级音乐较动感节奏没快较适合初学者者缓运动中级话稍微提升节奏音乐高级音乐较急促听起较紧张音乐高级AI战难度较高节奏较快
    315 交互反馈
    VR项目中者头盔虚拟眼镜中真实效果手柄中产生震动效果便者产生更加真实感受反馈模块话手柄乒乓球拍击饭乒乓球时候需进行通vr设备手柄产生震动进行反馈样震动会者拥较真实击效果手感震动效果持续时间力度修改
    32场景模块
    321乒乓球桌模型
    乒乓球桌模型现实中标准模型创建项目设计里面乒乓球桌担非常重作果者者AI击球失误碰撞乒乓球桌挡板话会进行相应判分数传输然碰撞效果作乒乓球销毁乒乓球桌两边面设置碰撞体图35示
    图35乒乓球桌模型
    322第场景
    第场景图示充满科技感太空舱玩家选择第场景会动态加载场景太空舱分裂式架构
    里面充盈着光线加特效场景里面进行点缀背景充满高楼夏天空太空舱刚搭配起太空舱悬浮天空样喜欢科技感者提供种非常良感受
    致图36图37示
    图36第场景
    图37第场景
    323 第二场景
    第二场景图示设计理念充满古风擂台感觉
    者会AI擂台进行乒乓球战旁边点缀鼓面茂盛树场景起非常惬意
    背景天空耸立山天气起非常加太阳光效射场景增加点阳光效果丝毫影响项目流畅度喜欢古风者说非常舒服致图38示
    图38第二场景
    324 第三场景
    第三场景十字架台中场景祭祀台样面建筑旋转
    者AI台进行战搭配夕阳红色天空盒种玄幻奇妙效果种非常神秘感觉
    气氛感觉果战结束会什事情发生样非常适合高级难度战场景非常适合喜欢玄幻气氛者致图39示
    图39第三场景
    33 AI乒乓球模块
    331 AI智移动
    AI动画Unity3D系统里面动画系统中动画状态机控制AI制作特定状态机C#代码根数条件控制AI时刻状态般状态情况呼吸状态AI保持呼吸状态然根C#代码计算乒乓球行相位置然AI会根位置进行左右智移动致伪代码
    22 DebugLog(Boss找寻乒乓球 + Ppqiu)
    23 Ppqiu GameObjectFindGameObjectWithTag(Ppqiu)transform
    24 两if根左右判断乒乓球坐标点移动
    25 if (thistransformpositionx < Ppqiupositionx)
    26 {
    27 }
    28 if (thistransformpositionx > Ppqiupositionx)
    29 {
    30 }
    31 BossBox找乒乓球时候
    32 else
    33 {
    34 回原点
    35 }
    332 AI智发球
    AI智发球系统判断AI发球时候AI会进入发球模式AI进入发球模式AI状态机中发送特定条件控制AI击球模式播放相应击球动画
    根C#部数传输控制发球动画播放完成AI角色会继续发送已完成击球动画发送特定条件控制AI角色恢复呼吸状态继进行接战致伪代码
    36 开球播放动画
    37 if (ZPdingkai 2 && ZPdingGameStay false)
    38 {
    39 BossAnimatorSetBool(Player2Attack true)
    40 }
    333 AI智接球
    AI智接球状态智移动前提AI会时刻判断乒乓球直线距离
    乒乓球距离达相应距离会C#代码传送相应数然控制角色状态机播放接球动画乒乓球击出成功接球会发送相应数控制状态机恢复呼吸状态继进行接战致伪代码
    41 开球阶段接球播放动画
    42 判断步骤条件
    43 {
    44 BossAnimatorSetBool(Player2Attack true)
    45 }
    334 乒乓球逻辑
    乒乓球预制体中控制非常重代码首先乒乓球预制体中添加碰撞体组件产生碰撞效果需预制体添加刚体然附加乒乓球C#代码进行控制乒乓球C#代码数控制着AI角色需机出样抛物线数开球时机范围接球机范围根乒乓球规判断规致:AI者者击球乒乓球击中前面台碰乒乓球桌前提击中方前面台然方击中乒乓球循环乒乓球没击中前面台者击中乒乓球桌挡板话会相应数C#代码里面进行传输然乒乓球会销毁重新进入轮发球课题项目中C#代码VRTK数传输课题重代码乒乓球身节代码较详情请见附录
    致伪代码
    46 控制AI规相关代码
    47 开球时机范围
    48 接球时机范围
    49 void Start()
    50 {
    51 获取Bossanimator状态机控制播放击乒乓球
    52 选择Boss击乒乓球选择抛物线集合
    53 获取乒乓球抛物线
    54 }
    55 private void OnTriggerEnter(Collider other)
    56 {
    57 果碰程中碰物体轮结束
    58 if (othergameObjecttag PpqiuNot)
    59 {
    60 球体消失时候球权玩家话
    61 球体消失时候球权BOSS画
    62 表示轮结束进入开球阶段
    63 ZPdingGameStay false
    64 }
    65 *判断乒乓球撞Boss逻辑Box*
    66 开球阶段接球
    67 If()
    68 开球阶段接球
    69 if ()
    70 *控制Boss播放球动画*
    71 控制相关规代码
    72 void Update()
    73 {
    74 开球阶段
    75 判断玩家球权中
    76 玩家击球撞方前面面时候
    77 面前提碰方板子
    78 判断boss球权中
    79 正游戏中
    80 判断玩家球权中
    81 判断boss球权中


    第四章 项目测试

    课题研发虚拟仿真乓乓球项目基基原测试进行必测试章节话功测试性测试样测试较全面功测试方面采黑盒测试方法性测试话采直观观察方法Unity开发引擎带性检测系统测试工作非常帮助准确率
    章节测试计算机硬件环境软件环境表41示:

    表41测试硬件软件环境说明表
    电脑型号
    联想 80WW 笔记电脑 (扫描时间:2020年03月13日)
    操作系统
    Windows 10 64位 ( DirectX 12 )
    处理器
    英特尔 Core i57300HQ @ 250GHz 四核

    联想 LNVNB161216 ( 100 SeriesC230 Series 芯片组 Family A152 )

    8 GB ( 海力士 DDR4 2400MHz )
    硬盘
    东芝 MQ04ABF100 ( 1 TB 5400 转分 )
    显卡
    Nvidia GeForce GTX 1050 ( 2 GB 联想 )
    显示器
    LG LGD0590 ( 155 英寸 )
    声卡
    瑞昱 @ 英特尔 High Definition Audio 控制器
    网卡
    瑞昱 Realtek 8821AE Wireless LAN 80211ac PCIE NIC 联想
    Unity版
    2018311

    41功测试
    课题研发虚拟仿真VR乒乓球Unity中导出项目功项目导出EXR应软件设置相应分辨率等参数面测试做准备功测试采黑盒测试方法测试项目功行性表42示

    表42功测试说明表
    测试项目
    描述操作
    执行结果
    行性
    UI交互
    进入开始游戏界面手柄发射射线开始游戏进行战难度图选择者键操作
    成功手柄者键项目战难度图进行选择成功进入游戏

    音乐音效
    VR设备耳机成功组装带游中击乒乓球听否音乐搭配
    击乒乓球正确听击声效


    AI智移动
    乒乓球发方测试AI角色否着乒乓球位置智行移动
    AI正确着乒乓球行位置进行正确移动

    AI智接球
    AI进行确认AI接球否次成功检测
    AI次检测接球范围成功乒乓球接击成功

    AI智发球
    角色物意犯规予AI角色发球机会否次AI检测发球机制发球
    次角色物犯规时候轮AI检测发球次发球成功

    战难度成功选择
    战难度页面选择相应战难度进入游戏战难度否应
    分测试中级初级高级战难度战难度搭配音乐正确选择战难度

    场景成功选择
    场景选择界面分选择场景进行测试
    分选择场景图进入游戏应选择场景图

    乒乓球进行击交互检测震动反馈
    游戏中乒乓球进行交互乒乓球球拍击效果力度反馈
    成功乒乓球进行击交互相应力度手柄震动反馈

    判罚分数成功显示
    AI进行战次判罚分数否成功应
    AI进行战次判罚分数成功应加

    结束场景跳转
    AI角色进行战分数达12分时候场景否跳转
    分数成功达12分时候场景成功跳转


    42性测试
    性测试方面Unity开发引擎测试系统Profiler性检测窗口图示项目虚拟仿真乒乓球运行秒FPS已达100图41示
    图41性测试
    时基流畅运行FPS需80左右样普通电脑配置已达快速度说明项目优化基合格

    43项目测试结果讨
    课题项目基VRTK虚拟仿真乒乓球终测试性功测试已基合格未发生卡死常卡顿状况测试运行机子配置高情况FPS竟然达100高度说明次研究优化代码优化挺错项目基功开始游戏AI功检测等达基求

    第五章 总结展

    51总结
    文研究虚拟仿真项目现实体育项目优化等解决问题现实中需次实践受伤获熟练度行非常谱体育项目中会受伤危险田径项目中更项目研究虚拟仿真运动完美解决现实中会受伤问题虚拟仿真项目拥绝安全性样强安全性训练突飞猛进效果
    AI部分做出重研究AI虚仿真项目重话题AI方面助量算法计算工作AI达智程度研究部分需做量算法分析重测试AI计算程度
    UnityUI系统进行结合分析UnityUGUI系统完美VRTK插件进行结合搭配完美实现设备UI间交互
    性优化方面减少模型片面数建模数量场景lod技术进行优化光贴图减少场景光特效模型较场景非常重性优化作

    52展
    文研究说明虚拟仿真体育运动项目现实体育项目非常重影响仅现体育运动项目进行仿真更进行更新优化现实训练等效果推动行效率发展真实模拟手AI行径运动员真实赛前熟悉手操作提高体育运动水质量观众体育运动观赏质量非常提升
    次虚拟仿真项目研究行业发展着步推动功作现越越行业进行虚拟仿真项目代现实中需步行者亲现场行动优化掉体育项目中者训练员必外训练者居家时进行训练活动
    中国虚拟仿真项目规模越越已形成初步产业链行业标准

    参考文献

    [1] 郭天太 基VR虚拟测试技术应基础研究[D]浙江学2005
    [2] 琎 基虚拟仿真系统产品创新设计研究[D]武汉理工学2009
    [3] 邢中虚拟仿真技术体育专业术科课堂教学中运研究[J]许昌学院学报201837(08)8488
    [4] 孟然基虚拟现实技术竞技体育仿真应开发分析[J]赤峰学院学报(然科学版)201935(06)131133
    [5] 邵瑞芳张辉金伟斌虚拟仿真技术体育领域中研究综述[J]浙江体育科学201840(05)108112
    [6] 邢中虚拟仿真技术体育专业术科课堂教学中运研究[J]许昌学院学报201837(08)8488
    [7] 郝庆威郝婉全基虚拟现实技术竞技体育仿真应开发研究[J]电视技术201842(08)8892
    [8] 胡庆熊云霞虚拟陪伴式运动健身VR台研究开发[J]计算机产品流通2019(04)96
    [9] 吴娜基计算机虚拟现实技术高校体育训练中应[J]林区教学2018(05)9596
    [10] 洪启焕玮翔计算机虚拟现实技术体育训练中运[J]北京印刷学院学报201826(01)157159
    [11] 王娟基Unity3D教育游戏开发研究[J]电脑编程技巧维护2018(11)78+27
    [12] 阚宇 基Unity3D体感游戏系统研究[D]江苏学2016
    [13] 武桐王晓雨Unity3D中碰撞检测问题研究[J]电子测试2018(01)8384
    [14] 徐婉珍李强魏菊霞 游戏开发实践中培养程序设计力[J] 计算机教育2017(02): 104106
    [15] 刘桂元志远杨书新 基Unity3d引擎教育类游戏设计实现[J] 软件导刊2017(01):5053


    致谢

    学四年学时光已接尾声想母校老师学家表达衷谢意感谢母校广东东软学院予学机会足够专业知识毕业际够较容易迈入社会门槛丰富社团生活够际交中优势
    感谢老师课激情澎湃教学够畅游知识海洋课厌烦解答更加巩固知识感谢学班学社团社员特四年舍友予关心陪伴鼓励帮助感谢家学四年学支持考证焦虑紧张时遍遍告诉相信朋友发生矛盾难伤心时告诉朋友间需宽容沟通
    篇文利完成离开毕业文指导老师魏菊霞老师选题资料搜集文框架设定开题报告完成初稿修改定稿调整文完成阶段予关心帮助遇难题魏菊霞老师寻求帮助时老师会进行沟通步步引导告诉样更解决问题谨魏菊霞老师致诚挚谢意崇高敬意
    次感谢帮助关心老师学朋友

    附录
    乒乓球逻辑模块详细代码:
    1 控制AI规相关代码
    2 void bossAttack(int i)
    3 {
    4 switch (i)
    5 {
    6 case 0
    7 QiuRbdvelocity Vector3zero
    8 机选择出什抛物线球
    9 QiuRbdtransformLookAt(Mubiao[RandomRange(0 2)]transform)
    10 KickRangenumber()
    11 break
    12 case 1
    13 QiuRbdvelocity Vector3zero
    14 机选择出什抛物线球
    15 QiuRbdtransformLookAt(Mubiao[RandomRange(0 2)]transform)
    16 Rangenumber()
    17 break
    18 }
    19 }
    20 开球时机范围
    21 void KickRangenumber()
    22 {
    23 switch (StartGamesSelectDifficulty)
    24 {
    25 case 1
    26 QiuRbdAddForce(transformforward * RandomRange(GameSceneselectKickscene1range[0] GameSceneselectKickscene1range[1]) ForceModeImpulse)
    27 break
    28 case 2
    29 QiuRbdAddForce(transformforward * RandomRange(GameSceneselectKickscene2range[0] GameSceneselectKickscene2range[1]) ForceModeImpulse)
    30 break
    31 case 3
    32 QiuRbdAddForce(transformforward * RandomRange(GameSceneselectKickscene3range[0] GameSceneselectKickscene3range[1]) ForceModeImpulse)
    33 break
    34 }
    35 }
    36 接球时机范围
    37 void Rangenumber()
    38 {
    39 switch (StartGamesSelectDifficulty)
    40 {
    41 case 1
    42 QiuRbdAddForce(transformforward * RandomRange(GameSceneselectscene1range[0] GameSceneselectscene1range[1]) ForceModeImpulse)
    43 break
    44 case 2
    45 QiuRbdAddForce(transformforward * RandomRange(GameSceneselectscene2range[0] GameSceneselectscene2range[1]) ForceModeImpulse)
    46 break
    47 case 3
    48 QiuRbdAddForce(transformforward * RandomRange(GameSceneselectscene3range[0] GameSceneselectscene3range[1]) ForceModeImpulse)
    49 break
    50 }
    51 }
    52 void Start()
    53 {
    54 获取Bossanimator状态机控制播放击乒乓球
    55 BossAnimator GameObjectFindGameObjectWithTag(bossbody)GetComponent()
    56 选择Boss击乒乓球选择抛物线集合
    57 Mubiao GameObjectFindGameObjectsWithTag(Mubiao)
    58 获取乒乓球抛物线
    59 Qiu Rbd GetComponent ()
    60 }
    61 private void OnTriggerEnter(Collider other)
    62 {
    63 果碰程中碰物体轮结束
    64 if (othergameObjecttag PpqiuNot)
    65 {
    66 球体消失时候球权玩家话
    67 if (ZPdingkai 1)
    68 {
    69 DebugLog(球体消失时候球权玩家话)
    70 初始化桌面面检测
    71 RuleBoxPlayerPingban false
    72 RuleBoxbossPingban false
    73 BOSS开球前球移动速度设零BOSS开球点初始化开球
    74 QiuRbdvelocity Vector3zero
    75 thisgameObjecttransformposition GameObjectFind(bosskaiqiu)transformposition
    76 然球权变成BOSS
    77 ZPdingkai 2
    78 GameSceneselectbossScore + 1
    79 SoreTimeInstantgetScore()
    80 }
    81 球体消失时候球权BOSS画
    82 else if (ZPdingkai 2)
    83 {
    84 DebugLog(球体消失时候球权BOSS画)
    85 初始化桌面面检测
    86 RuleBoxPlayerPingban false
    87 RuleBoxbossPingban false
    88 消前球
    89 Destroy(thisgameObject)
    90 ZPdingkai 1
    91 GameSceneselectplayerScore + 1
    92 SoreTimeInstantgetScore()
    93
    94 }
    95 表示轮结束进入开球阶段
    96 ZPdingGameStay false
    97 }
    98 *判断乒乓球撞Boss逻辑Box*
    99 if (othergameObjecttag BossPai)
    100 {
    101 DebugLog(判断乒乓球撞Boss逻辑Box)
    102 开球
    103 if (ZPdingkai 2 && ZPdingGameStay false)
    104 {
    105 ZPdingbuzou (int)Rule_Startbuzou0
    106 bossAttack(0)
    107 }
    108 开球阶段接球
    109 if (ZPdingkai 1 && ZPdingbuzou (int)Rule_Staybuzou1 && ZPdingGameStay true)
    110 {
    111 面碰撞检测
    112 RuleBoxPlayerPingban false
    113 RuleBoxbossPingban false
    114 ZPdingkai 2
    115 ZPdingbuzou (int)Rule_Staybuzou0
    116 bossAttack(1)
    117 }
    118 开球阶段接球
    119 if (ZPdingkai 1 && ZPdingbuzou (int)Rule_Startbuzou2 && ZPdingGameStay false)
    120 {
    121 面碰撞检测
    122 RuleBoxPlayerPingban false
    123 RuleBoxbossPingban false
    124 表示已开球阶段
    125 ZPdingGameStay true
    126 获取球权
    127 ZPdingkai 2
    128 ZPdingbuzou (int)Rule_Staybuzou0
    129 bossAttack(1)
    130 }
    131
    132
    133 }
    134 *控制Boss播放球动画*
    135 if (othergameObjecttag donghua)
    136 {
    137 开球播放动画
    138 if (ZPdingkai 2 && ZPdingGameStay false)
    139 {
    140 BossAnimatorSetBool(Player2Attack true)
    141 }
    142 开球阶段接球播放动画
    143 if (ZPdingkai 1 && ZPdingbuzou (int)Rule_Staybuzou1 && ZPdingGameStay true)
    144 {
    145 BossAnimatorSetBool(Player2Attack true)
    146 }
    147 开球阶段接球播放动画
    148 if (ZPdingkai 1 && ZPdingbuzou (int)Rule_Startbuzou2 && ZPdingGameStay false)
    149 {
    150 BossAnimatorSetBool(Player2Attack true)
    151 }
    152 }
    153 }
    154 private void OnTriggerExit(Collider other)
    155 {
    156 结束Boss击球动画
    157 if (othergameObjecttag donghua)
    158 {
    159 BossAnimatorSetB ool(Playe r2At tack fa lse)
    160 }
    161 }
    162 public static int kai 1
    163 public static bool GameStay false
    164 判断前乒乓球应该进行步骤
    165 public static int buzou
    166 前乒乓球
    167 public GameObject Ppqiu
    168 Start is called before the first frame update
    169 void Start()
    170 {
    171 面碰撞检测
    172 RuleBoxPlayerPingban false
    173 RuleBoxbossPingban false
    174 球拍碰撞检测
    175 RuleBoxbossPai false
    176 RuleBoxpalyerPai false
    177
    178 }
    179
    180 Update is called once per frame
    181 void Update()
    182 {
    183 开球阶段
    184 if (GameStay false)
    185 {
    186 判断玩家球权中
    187 if (kai 1)
    188 {
    189 玩家击球撞方前面面时候
    190 if (RuleBoxPlayerPingban true && buzou (int)Rule_Startbuzou0)
    191 {
    192 buzou (int)Rule_Startbuzou1
    193 }
    194 面前提碰方板子
    195 if (RuleBoxbossPingban true && buzou (int)Rule_Startbuzou1)
    196 {
    197 buzou (int)Rule_Startbuzou2
    198 }
    199 }
    200 判断boss球权中
    201 if (kai 2)
    202 {
    203 if (RuleBoxbossPingban true && buzou 0)
    204 {
    205 buzou (int)Rule_Startbuzou1
    206 }
    207 if (RuleBoxPlayerPingban true && buzou (int)Rule_Startbuzou1)
    208 {
    209 buzou (int)Rule_Startbuzou2
    210 }
    211 }
    212 }
    213 正游戏中
    214 if (GameStay true)
    215 {
    216 判断玩家球权中
    217 if (kai 1)
    218 {
    219 if (RuleBoxbossPingban true && buzou (int)Rule_Staybuzou0)
    220 {
    221 buzou (int)Rule_Staybuzou1
    222 }
    223 }
    224 判断boss球权中
    225 if (kai 2)
    226 {
    227 if (RuleBoxPlayerPingban true && buzou (int)Rule_Staybuzou0)
    228 {
    229 buzou (int)Rule_Staybuzou1
    230 }
    231 文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 5 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于LabVIEW的虚拟频谱仪的设计与实现毕业论文

    本科毕业论文(设计)题 目 基于LabVIEW的虚拟频谱仪的设计与实现 指导老师 职称 学生姓名 学号 ...

    4年前   
    764    0

    基于Unity3D的仿真火灾事故的预防和处理的设计与实现

    科技的日新月异,计算机成了人类生活中不可或缺的一部分,说到计算机,游戏是不得不说的是其中的一个联想词,游戏本身所拥有的趣味性以及娱乐性,能大大的激发人类的兴趣。

    3年前   
    688    0

    基于matlab的电力电子仿真设计报告

    课程设计(综合实验)报告( 2010-- 2011 年度第 1 学期)名 称:电力电子技术课程设计院 系:电气与电子工程学院班 级: 电气班 学 号:...

    4年前   
    969    0

    基于SpringBoot博客系统的设计与实现

     基于SpringBoot博客系统的设计与实现Design and implementation of bl...

    2年前   
    961    0

    基于node的微博的设计与实现

    基于node的微博的设计与实现design and implementation of microblog based on node 摘要千禧年后, Twitter开始进...

    10个月前   
    279    0

    基于差动变压器的虚拟位移计设计课程设计

     XX大学课 程 设 计(论文)基于差动变压器的虚拟位移计设计班 级 学 号 学 生 姓 名 ...

    2年前   
    594    0

    基于SSH框架的图书管理系统的设计与实现

    基于SSH框架的图书管理系统的设计与实现基于SSH框架的图书管理系统摘 要 如今已经我们已经步入了信息时代,而在信息科技快速发展的形势下,网络现已成为我们工作和日常生活中必不可少的一部分...

    2年前   
    749    0

    《基于unity的3D校园的设计与实现》

    基于unity的3D校园的设计与实现 Design and implementation of 3D camp...

    3年前   
    742    0

    基于ARM的智能电子秤系统的设计与实现

    随着现代社会的发展,对称重技术提出了更高的要求。目前,台式电子秤在商业贸易中的使用已相当普遍,但是仍存在较大的局限性:体积大、成本高、需要工频交流电源供应、携带不便、应用场所受到制约。现有的便携...

    3年前   
    1152    0

    基于JavaWeb的图书管理系统的设计与实现

    有效的处理想要的相关信息和如何传播有效的信息,一直是人类不断探索的动力。信息管理运用各种载体,传播通过各种介质,一直伴随着人类文明的发展史。随着互联网的到来,信息传播与管理都上升了一个新的台阶,...

    3年前   
    1115    0

    基于web学生成绩管理系统设计与实现

    随着计算机技术在各行各业的广泛应用,将计算机技术应用到学校中去,将大大提高学校管理的效率。学生成绩管理系统将在提高学校管理效率中发挥重要作用。

    3年前   
    935    0

    基于MATLAB的ASK调制解调实现课程设计

    大学《通信原理》课程设计报告学 院 专 业 班 级 学 号 ...

    3年前   
    723    0

    基于opencv的车牌识别系统设计与实现

     基于opencv的车牌识别系统设计与实现 ...

    2年前   
    738    0

    基于JAVA WEB的考勤系统设计与实现

    基于 JAVA WEB 的考勤系统设计和实现Design and Implementation of Attendance System Based on JAVA WEB摘要科技的发展,带动...

    10个月前   
    358    0

    基于Vue+Django技术的电商网站的设计与实现

    该电商网站使用python框架django-rest-framework和前端框架vuejs开发,采用现在市面上大多数系统流行的浏览器/服务器模式结构。该项目需要使用vuejs框架开发前端界面,...

    3年前   
    923    0

    基于JSP的网上书店推荐系统设计与实现

    本系统旨在设计一个网上的书店和书籍相关信息的服务网站,网站的基本运作流程如下:

    3年前   
    563    0

    基于SSM的图书管理系统设计与实现

    随着时代的进步和科技的发展,更多的人通过图书馆借阅书籍来吸收知识,而传统的图书管理方式存在着许多不方便的地方,记录易丢失,所以开发一个易操作,高便捷性并且能够提升工作效率的图书管理系统是很有必要的。

    3年前   
    1620    0

    基于android的物业管理系统的设计与实现19.8

     目录基于android的物业管理系统的设计与实现 3摘 要 3Android property managemengt system 5Abstract 51 绪论 61.1 选题背景 6...

    3年前   
    797    0

    —基于机器学习的人脸识别算法的设计与实现

    人脸识别技术是一种新型的生物特征认证技术。人脸识别技术也是一个非常活跃的研究领域,涵盖了许多领域,例如数字图像处理。随着人们对应用程序需求的增长,面部识别技术趋向于大量使用,使用微芯片和标准化。

    3年前   
    816    0

    基于Java的网上购物系统的设计与实现

     XX 学 院 本科毕业论文(设计) 题 目 基于JAVA的网上购物 系统的设计与实现 院 系 计算机...

    5年前   
    2579    0

    文档贡献者

    平***苏

    贡献于2021-08-16

    下载需要 5 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档