




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
人機交互技術Human-ComputerInteractionTechnology——基于LeapMotion的《夢幻森林》案例學習目的和要求1
重點和難點2《夢幻森林》LeapMotion和完善3
課后總結4目錄CONTENTS學習指導建議重點掌握LeapMotion基本手勢控制函數,能夠替換不同的手部模型控制場景中的物體將LeapMotion與Unity3D進行連接,能夠理解相關的參數設定,并且能夠熟練的掌握位移、換色等基本操作強化練習LeapMotion的使用,通過相關的粒子特效案例增加趣味性、通過群組行為的控制使其和其他知識單元能夠緊密結合,并且能夠掌握相關的可穿戴設備的優缺點,參加各項學科賽事本章的學習建議在實驗室的環境中進行,能夠結合相應的設備進行不斷的測試,同時本章的案例源代碼在本書的配套光盤中,課后的案例和課程回顧等保存在本書的慕課資源中,建議讀者先學習本章的基礎知識,在最后通過線上教學資源進行不斷的提升和課程的內容的加強練習。
學習目的和要求1學習目的和要求目的:
通過對《夢幻森林》案例的分析和學習,了解完整項目的制作過程,學習交互設計思路。將素材與技術更好的結合。目的:
通過對《夢幻森林》案例的分析和學習,了解完整項目的制作過程,學習交互設計思路。將素材與技術更好的結合。要求:
基于《夢幻森林》案例的了解結合對LeapMotion的學習,設計并創新新的交互創意和ji'yu玩法。
重點和難點2重點和難點重點:
掌握LeapMotion的基礎知識,學會靈活運用,完善項目。難點:
對LeapMotion的運用,研究出符合自己主題的功能,設計合理有趣。LeapMotion和項目完善3LeapMotion和項目完善本節主要是對《夢幻森林》案例的最后一個交互模塊LeapMotion交互和整個項目最好完善部分的分析,在《夢幻森林》的LeapMotion中,用簡單的交互方式,實現蝴蝶群對LeapMotion手部的追蹤。LeapMotion和項目完善首先,先導入LeapMotion,進入場景測試設備是否正常。,正常狀態如下圖所示將3D場景導入到LeapMotion場景中,導入蝴蝶資源包,添加進入場景中。LeapMotion和項目完善LeapMotion和項目完善以下腳本負責控制蝴蝶的群組行為控制。usingSystem.Collections;usingSystem.Collections.Generic;usingunityEngine;publicclassBufferController:MonoBehaviour{publicfloatspeed=1;publicVector3velocity=Vector3.forward;privateVector3startVelocity;publicTransformtarget;publicVector3sumForce=Vector3.zero;
LeapMotion和項目完善
publicfloatm=10;publicfloatseparationDistance=3;publicList<GameObject>seprationNeighbors=newList<GameObject>();publicfloatseparationWeight=1;//publicVector3separationForce=Vector3.zero;//分離的力publicfloatalignmentDistance=6;publicList<GameObject>alignmentNeighbors=newList<GameObject>();publicfloatalignmentWeight=3;publicVector3alignmentForce=Vector3.zero;//隊列的力publicfloatcohesionWeight=1;publicVector3cohesionForce=Vector3.zero;//聚合的力publicfloatcheckInterval=0.2f;publicfloatanimRandomTime=2f;
privateAnimationanim;
LeapMotion和項目完善
privatevoidStart(){target=GameObject.Find("Target").transform;startVelocity=velocity;InvokeRepeating("CalcForce",0,checkInterval);anim=GetComponentInChildren<Animation>();Invoke("PlayAnim",Random.Range(0,animRandomTime));}voidPlayAnim(){anim.Play();}voidCalcForce(){print("calcForce");sumForce=Vector3.zero;separationForce=Vector3.zero;
LeapMotion和項目完善//計算分離的力seprationNeighbors.Clear();Collider[]colliders=Physics.OverlapSphere(transform.position,separationDistance);foreach(Collidercincolliders){if(c!=null&&c.gameObject!=this.gameObject){seprationNeighbors.Add(c.gameObject);}}foreach(GameObjectneighborinseprationNeighbors){Vector3dir=transform.position-neighbor.transform.position;separationForce+=dir.normalized/dir.magnitude;}if(seprationNeighbors.Count>0){separationForce*=separationWeight;sumForce+=separationForce;}
//計算隊列的力alignmentNeighbors.Clear();//清空鄰居每執行一次清空一次colliders=Physics.OverlapSphere(transform.position,alignmentDistance);//物理檢測colliders的集合foreach(Collidercincolliders)//查找出來每一個Collider在colliders里找{if(c!=null&&c.gameObject!=this.gameObject)//c.gameObject!=this.gameObject是檢測本身,排除自己{alignmentNeighbors.Add(c.gameObject);//檢測到的添加到c.gameObject}}Vector3avgDir=Vector3.zero;//定義一個參數存儲平均朝向
LeapMotion和項目完善foreach(GameObjectninalignmentNeighbors)//遍歷所有的alignmentNeighbors{avgDir+=n.transform.forward;//把所有的n.transform都給平均朝向}if(alignmentNeighbors.Count>0)//如果隊列的鄰居大于0就是alignmentNeighbors不為空{avgDir/=alignmentNeighbors.Count;//得到平均朝向alignmentForce=avgDir-transform.forward;//alignmentForce平均朝向+transform.forward=avgDiralignmentForce*=alignmentWeight;sumForce+=alignmentForce;}//聚合的力if(alignmentNeighbors.Count>0){Vector3center=Vector3.zero;
LeapMotion和項目完善foreach(GameObjectninalignmentNeighbors){center+=n.transform.position;}center/=alignmentNeighbors.Count;Vector3dirToCenter=center-transform.position;cohesionForce+=dirToCenter.normalized*velocity.magnitude;cohesionForce*=cohesionWeight;sumForce+=cohesionForce;}//保持恒定飛行速度的力Vector3engineForce=velocity.normalized*startVelocity.magnitude;sumForce+=engineForce;Vector3targetDir=target.position-transform.position;sumForce+=(targetDir.normalized-transform.forward)*speed*20;}
LeapMotion和項目完善voidUpdate(){Vector3a=sumForce/m;velocity+=a*Time.deltaTime;//transform.rotation=Quaternion.LookRotation(velocity);transform.rotation=Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(velocity),Time.deltaTime*3);transform.Translate(transform.forward*Time.deltaTime*velocity.magnitude,Space.World);}}LeapMotion和項目完善完成之后,添加腳本。右手相同腳本,將腳本中的Left改成Right即可,將腳本掛在新建的兩組蝴蝶的目標上。usingunityEngine;usingSystem.Collections.Generic;usingLeap;usingLeap.unity;publicclassLeft1:MonoBehaviour{LeapProviderprovider;voidStart(){provider=FindObjectOfType<LeapProvider>()asLeapProvider;}voidUpdat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服務培訓教材課件
- 腺病毒診療規范
- 法治教育的重要性與實施策略
- 水果運輸司機勞務合同
- 2024溫州市龍灣區職業技術學校工作人員招聘考試及答案
- 2024沈陽市遼中區職業教育中心工作人員招聘考試及答案
- 工程維護及保養合同2025
- 離婚合同簽訂時債權處理的五大要點
- 物業保安服務禮儀培訓
- 共有產權房屋買賣合同
- 下肢動靜脈潰瘍的護理
- 照明維護方案
- 設備管理制度的風險評估與防范方案
- 辦公樓裝飾工程設計及施工招標文件室內裝飾
- 半導體行業對國家國防戰略的支撐與應用
- 2024年十堰市中小學教師職稱晉升水平能力測試題附答案
- 智能點滴自動監控方法設計
- 特殊土地基處理措施課件
- 2023年中國海洋大學輔導員招聘考試真題
- 神經內科護理查房課件眩暈
- 框架結構房屋的流水施工
評論
0/150
提交評論