LeapMotion 介紹與體驗
老師將這台裝置借我們使用,當環境安裝完,插入USB連接線後,進入LeapMotion的軟體引導畫面,以桌面模式進行體驗。程式功能1:
讓Processing偵測到LeapMotion裝置
import de.voidplus.leapmotion.*; LeapMotion leap; void setup(){ size(640,480,P3D); leap=new LeapMotion(this); } void draw(){ background(255); for(Hand hand : leap.getHands()){ //hand.draw(); for(Finger finger : leap.getFingers()){ finger.draw(); } } }
執行結果:
上面這兩張圖,差異在draw function中加入background(255);這行,代表意義是每次著色前畫面都重新填滿白色,就不會一直有殘影程式功能2: 金幣下落,以手指碰到金幣後,金幣有反彈碰撞的效果
import de.voidplus.leapmotion.*; LeapMotion leap; PImage img; float coinX=320, coinY=0, coinVX=0, coinVY=3; int score=0; void setup(){ size(640,480,P3D); leap=new LeapMotion(this); img = loadImage("coin.png"); } void draw(){ background(255); coinY += coinVY; fill(255,255,0); //ellipse(coinX,coinY,60,60); image(img,coinX,coinY,60,60); if(coinY>480){ coinY=0; coinX=random(640); } for(Hand hand : leap.getHands()){ //hand.draw(); PVector pos = hand.getPosition(); println(pos); fill(255,0,0); ellipse(pos.x,pos.y,100,100); if(dist(pos.x,pos.y,coinX,coinY)<100){ score += 10; coinY = 0; coinX=random(640); } } fill(130,100,200); textSize(50); text("Score:"+score,300,100); }執行結果:
學習心得:
非常感謝葉老師能借到這樣的高科技玩具給我們使用, 依稀記得在兩年前在美國剛有此產品時,我也只能看著影片驚嘆而已, 在這方面來說,研究所的環境的確讓我勉強有跟到世界創新的前端趨勢, 在今天這門課最讓我感到收穫的是,老師引導我們參考德國人寫的LeapMotion範例程式碼, 直接解析程式碼,複製需要的部分,貼上執行看效果的感覺真的很棒! 今天教學內容老師依然是盡量以一頁程式碼能表現的功能為主, 學習到用手接金幣的功能,以及到後面的金幣與手之間的距離計算等等,都是以程式表現想法, Processing環境有函數自動補完的功能,也增加了方便性,如下圖,經過老師的教學,今天上完課讓我想去買一台LeapMotion來玩了!
比較好的做法,應該將教學重點放在學生怎麼利用程式模組解決生活上大家都知道的問題,或是學生在意的事情上(Ex. 遊戲、互動...),學生的成果可能是每個人都有差異,也不太像選擇題好評分,這樣的教學可能比較有可能使學生知道學到的東西是真實存在於你我生活中的,而非紙上談兵。
一個教學行為若沒有引起學生想自己繼續學的動機,那就是無效的,因為看老師表演一堂課沒什麼意義,浪費老師的時間,也浪費學生的時間。
一個教學行為若沒有引起學生想自己繼續學的動機,那就是無效的,因為看老師表演一堂課沒什麼意義,浪費老師的時間,也浪費學生的時間。
沒有留言:
張貼留言