顯示具有 99160734_陳嘉云 標籤的文章。 顯示所有文章
顯示具有 99160734_陳嘉云 標籤的文章。 顯示所有文章

2013年6月24日 星期一

Week18,HW18,99161082_徐文玲,99160734_陳嘉云

本週進度:
1.遊戲完成
2.課堂上DEMO程式

老師的建議:
1.進入遊戲的按鈕時可以顯示進度,讓使用者知道什麼時候會進入遊戲
2.把雞蛋和靶心的偵測點改到中心,雞蛋中心和靶心中心小於某距離時雞蛋消失!
   dist(x,y,x2,y2)
   imageMode(CENTER)
3.碰到雞蛋時發出打破的音效


2013年6月23日 星期日

Week17,HW17,99161082_徐文玲,99160734_陳嘉云

本週進度:
1.結束畫面的結束遊戲以及再玩一次的體感判斷完成
2.結合kinect之後場景問題解決
3.加入遊戲講解


下週目標:
1.遊戲完成
2.錄製影片



2013年6月9日 星期日

Week16,HW16,99161082_徐文玲,99160734_陳嘉云

本週進度:
1.解決換場景的部分問題
2.遊戲結束再次進入遊戲時,分數成功重新計算
3.修改程式結合kinect

下週目標:
1.結束畫面的結束遊戲以及再玩一次的體感判斷!
2.結合kinect之後場景無法依照原本場景一接著場景二運作而是直接跳到場景三

Week15,HW15,99161082_徐文玲,99160734_陳嘉云

本週進度:
1.手碰到雞蛋,雞蛋會消失

下週目標:
1.進入遊戲畫面(開始遊戲)後讓滑鼠不會再感應到,開始遊戲的按鈕
2.遊戲結束再次進入遊戲時,分數從新計算




Week14,HW14,99161082_徐文玲,99160734_陳嘉云

本週進度:
1.雞蛋隨機射出
2.遊戲結束的計分畫面完成

下週目標:
手碰到雞蛋,雞蛋會消失






Week13,HW13,99161082_徐文玲,99160734_陳嘉云

本週進度:
1.可以用滑鼠按開始換遊戲畫面
2.靶心跟著手移動
3.計時條

下週目標:
雞蛋隨機射出

hw

Week12,HW12,99161082_徐文玲,99160734_陳嘉云

本週進度:
1.遊戲開始畫面、遊戲畫面、雞蛋、標靶繪製完成
2.修改3D Hands範例加入完成的圖片

下週目標:
可以按開始換遊戲畫面,雞蛋會隨機射出(如果可以:靶心靠近雞蛋會破掉)







2013年6月5日 星期三

Week11,HW11,99161082_徐文玲,99160734_陳嘉云

1.決定期末專案以 Processing + SimpleOpenNI + Kinect 製作

2.用SCRUM 列出清單工作進度表
   (1)列出要做的功能及完成的順序

   (2)依照功能列出步驟和完成每個步驟所需的時間


 Vision 射雞蛋遊戲
功能-List (可demo) 1. 按開始遊戲會換到遊戲畫面
                        2. 射擊到白雞蛋或加分、黑雞蛋會扣分
                        3. 可以倒數計時
                        4. 顯示出最後總分
                        5. 可以感應聲音或動作來決定要射擊或補充子彈
拆解小步驟:  步驟順序:                                                        預估製作小時數:
                  1. 畫出背景圖、主畫面的圖、顯示分數的背景圖           6hr
                  2. 按開始遊戲切換到遊戲畫面                                   2hr
                  3. 雞蛋會隨機由左到右或右到左飛行                          12hr
                  4. 感應手勢射擊雞蛋                                                  48hr
                  5. 倒數計時                                                          5hr
                  6. 統計計分:白色雞蛋加分、黑色雞蛋扣分                 5hr
                  7. 顯示得分畫面                                                      2hr
統計小時數:                                                                                  80hr





2013年4月24日 星期三

Week10,99160734_陳嘉云 , HW10,

1.安裝processing,openni,nite
2.執行processing->打開我的文件->打開processing->建資料夾Libraries->把SimpleOpenNI解壓縮放入
3.執行processing
























4.執行畫面


















5.加入png圖片

















程式碼由範例Hands3D修改:

import SimpleOpenNI.*;
//import processing.opengl.*;

SimpleOpenNI context;
float        zoomF =0.5f;
float        rotX = radians(180);  // by default rotate the hole scene 180deg around the x-axis,
                                   // the data from openni comes upside down
float        rotY = radians(0);
boolean      handsTrackFlag = false;
PVector      handVec = new PVector();
ArrayList    handVecList = new ArrayList();
int          handVecListSize = 30;
String       lastGesture = "";

PImage imgBG;
PImage imgHand; 

void setup()
{
  imgBG=loadImage("images.png");
  imgHand=loadImage("bear1.png"); 
 
 
  size(1024,768,P3D);  // strange, get drawing error in the cameraFrustum if i use P3D, in opengl there is no problem
  //size(1024,768,OPENGL);

  context = new SimpleOpenNI(this);
 
  // disable mirror
  context.setMirror(false);

  // enable depthMap generation
  if(context.enableDepth() == false)
  {
     println("Can't open the depthMap, maybe the camera is not connected!");
     exit();
     return;
  }

  // enable hands + gesture generation
  context.enableGesture();
  context.enableHands();
 
  // add focus gestures  / here i do have some problems on the mac, i only recognize raiseHand ? Maybe cpu performance ?
  context.addGesture("Wave");
  context.addGesture("Click");
  context.addGesture("RaiseHand");
 
  // set how smooth the hand capturing should be
  //context.setSmoothingHands(.5);
 
  stroke(255,255,255);
  smooth();
 
  perspective(radians(45),
              float(width)/float(height),
              10.0f,150000.0f);
 }

void draw()
{
  // update the cam
  context.update();
 
  image(imgBG,0,0,1024,768);
  image(imgHand,1024/2-handVec.x,768/2-handVec.y); 
  return;
}
// -----------------------------------------------------------------
// hand events

void onCreateHands(int handId,PVector pos,float time)
{
  println("onCreateHands - handId: " + handId + ", pos: " + pos + ", time:" + time);

  handsTrackFlag = true;
  handVec = pos;
 
  handVecList.clear();
  handVecList.add(pos);
}

void onUpdateHands(int handId,PVector pos,float time)
{
  //println("onUpdateHandsCb - handId: " + handId + ", pos: " + pos + ", time:" + time);
  handVec = pos;
 
  handVecList.add(0,pos);
  if(handVecList.size() >= handVecListSize)
  { // remove the last point
    handVecList.remove(handVecList.size()-1);
  }
}

void onDestroyHands(int handId,float time)
{
  println("onDestroyHandsCb - handId: " + handId + ", time:" + time);
 
  handsTrackFlag = false;
  context.addGesture(lastGesture);
}

// -----------------------------------------------------------------
// gesture events

void onRecognizeGesture(String strGesture, PVector idPosition, PVector endPosition)
{
  println("onRecognizeGesture - strGesture: " + strGesture + ", idPosition: " + idPosition + ", endPosition:" + endPosition);
 
  lastGesture = strGesture;
  context.removeGesture(strGesture);
  context.startTrackingHands(endPosition);
 
}

void onProgressGesture(String strGesture, PVector position,float progress)
{
  //println("onProgressGesture - strGesture: " + strGesture + ", position: " + position + ", progress:" + progress);
}

// -----------------------------------------------------------------
// Keyboard event
void keyPressed()
{
  switch(key)
  {
  case ' ':
    context.setMirror(!context.mirror());
    break;
  }
   
  switch(keyCode)
  {
    case LEFT:
      rotY += 0.1f;
      break;
    case RIGHT:
      rotY -= 0.1f;
      break;
    case UP:
      if(keyEvent.isShiftDown())
        zoomF += 0.01f;
      else
        rotX += 0.1f;
      break;
    case DOWN:
      if(keyEvent.isShiftDown())
      {
        zoomF -= 0.01f;
        if(zoomF < 0.01)
          zoomF = 0.01;
      }
      else
        rotX -= 0.1f;
      break;
  }
}

99161082_徐文玲, 99160734_陳嘉云, Midterm, Week09,HW09


射雞蛋遊戲


















1.遊戲方式: 利用Kinect感應手的位置,靶心跟著手的位置移動,另外一隻手感應射擊以及補充子彈的按鈕。

2.製作流程
(1) 畫出背景
(2) 結合軟體,偵測兩手動作
(3) 讓雞蛋可以隨機出現
(4) 射到白雞蛋加分、黑雞蛋扣分
(5) 倒數計時
(6) 補充子彈跟射擊的按鈕

3.故事劇情
主角是一位警察,他想要練習射擊技術,所以到射雞蛋場,練習射擊。


2013年4月10日 星期三

Week08,HW08,99160734_陳嘉云

1.安裝軟體:

照順序:
(1)KinectSDK->裝好再接Kinect硬體
(2)OpenNI->OpenNI-NITE-Installer(Simple OpenNI)
(3)Nite-Windows-x86....
(4)Processing
(5)Kinect Toolkit
(6)OpenNI-NITE-Installer(Simple OpenNI)

















2.執行processing之後:

把SimpleOpenNI移到我的文件裡面自己建的Libries裡面



















Change目標:

教GitHub

Linus->Linus


1.建GitHub的帳號
寫程式的fb




















2.下載GitHub:




















3.登入:

































4.新增雲端->Local
   Follow別人的專案->Local


















搜尋WebNI Follow


















Clone in windows




















publish

先複製Heresy老師的程式借用
放到自己文件中的資料夾裡


















然後小貓程式裡自己的processing裡就會有Heresy老師的程式

然後committed裡輸入資料,就可以publish了


















publish完後就會變成uncommitted->成功!!!!



心得:

今天東西裝很多可是後來不成功所以改目標,學到了好用的貓咪程式,可以學到很多人寫的程式,
或者藉著參考,相當方便~!!



ps:4/24要交期中企劃書!!


















2013年3月27日 星期三

Week06,HW06,99160734_陳嘉云

去120.125.68.53:
1. 下載kinect SDK 1.7 版
2. 下載kinect Developer kit
3. 裝上kinect
4. 可以去下載範例

















































5.試玩:
















6. 下載c++,c#的範例看他的程式碼然後再執行看看:
















7.學c#重點:

改別人:易當機,會卡住
高手:從零開始,用Tab

(1)參考,加Microsoft Kinect.dll
(2)using Microsoft Kinect
(3)xaml v.s. xaml.cs
(4)改屬性改事件
ex:Window的Loaded
ex:Button的Clicked


















最後只能做到這樣!


8. 心得:












2013年3月18日 星期一

Week04,HW04,99160734_陳嘉云


1.  下載老師的範例程式:
http://sdrv.ms/ZkgMXc



 














 2. 下載 Kinect for Windows SDK:
http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx

 

















3. 下載 OpenNI 2 (2.1 beta x86版):
http://www.openni.org/openni-sdk/?download=http://www.openni.org/wp-content/uploads/2013/01/OpenNI-Windows-x64-2.1.0.zip#.UT_iWDBgeCk


















4. 裝上kinect:
 遇到更新直接跳過。 




5. 移動物件:
把電腦中的OpenNI2中的Redist移到老師的範例程式WorkingDir32中,不然範例程式會無法執行。


  














 6. 打開O01範例:
點O01的名稱右鍵->點設定為起始專案->再選屬性。

























 選擇屬性後->點偵錯->工作目錄輸入:$(SolutionDir)/WorkingDir32




















 7. 執行O01範例:

















8.執行O02範例:
















9. 心得:
這次上課遇到了不少的問題,尤其是接上Kinect的部分,之前更新都跑很快沒有問題可是這次都等很久,還好有老師的幫忙才沒有問題!老師教導得很仔細,人也很好,程式碼的內容也都有一一解說過,上課的過程很愉快很充實。


2013年3月6日 星期三

Week03,HW03,99160734_陳嘉云

1.下載Openni:

google搜尋:Simpleopenni

(1)下載-> SimpleOpenNI-0.27.zip & OpenNI-NITE-Installer-win32(64)-0.27.zip
(2)安裝OpenNI-NITE-Installer-win64-0.27.zip裡面的OpenNI,Nite,SenserKinect(要照順序)


2.安裝Processing:

安裝processing-1.5.1(比較穩定)把SimpleOpenNI-0.27放到processing->modes->java->libraries裡面

3.執行processing的範例:

開啟processing->File->Example選擇SimpleOpenNI挑一個執行

4.裝上Kinect:

裝上Kinect開啟裝置管理員看是否安裝完全

5.執行結果:

我選擇Nite的Slider2d結果如下:
















*注意*:

如果64位元的無法執行

方法一:32位元的processing1.5.1要配32位元的OpenNI-NITE

方法二:在processing執行過後會在我的文件裡多出processing的資料夾在資料夾中新增libraries在裡面放入SimpleOpenNI然後在processing的Examples裡會出現contributed libraries

6.網路上的範例:

Processing的網站裡Reference->Libraries有很多人做的範例可以玩

把zip下載下來之後,在我的文件processing裡面新增資料夾取跟範例一樣的名稱(ex:MSAFluid),再把範例裡面的東西全拉進新增的資料夾裡面重開processing就可以執行了

(1)MSAFluid(流體力學)

(2)marchingcubes(3D vexel建模)

7.心得:

32跟64位元很麻煩

Kinect不知道為什麼有時候會測不到手所以在測試時畫不出線



=======================================================================



2013年2月27日 星期三

Week02,HW02,99160734_陳嘉云

課堂作業:

1.Hello:
   開啟Visual Studio 2010
   選Visual Studio C++
   輸入程式碼後執行:

















2.放picture:
   開啟Visual Studio 2010
   開新專案
   選擇Win32主控台, 輸入專案名稱

  














 取消先行編輯標頭檔
















點左邊picture右鍵,選擇屬性->連結器->輸入->其他相容性加入cxcore210.lib;cv210.lib;highgui210.lib;
 

VC++ 目錄->include 目錄加入c:\opencv2.1\include;
VC++ 目錄->程式庫目錄加入c:\opencv2.1\lib;(不可有空格)
















輸入顯示圖片程式碼
















執行結果

















*圖片要放在c槽或是相對路徑*



3.Webcam:
   裝上Webcam
   輸入程式碼















執行結果














4.心得:
過程很順利,沒有遇到困難,程式碼也很簡單容易理解 。

============回家作業==================================================