顯示具有 03160135_吳亞芳 標籤的文章。 顯示所有文章
顯示具有 03160135_吳亞芳 標籤的文章。 顯示所有文章

2017年6月23日 星期五

【期末DEMO】BaseballVR

虛擬棒球 打擊練習 在一壘、二壘、三壘及游擊手,左右外野都有防守員防守。增加難度 界外球的判斷:每一擊球後會判斷是否為界外 https://youtu.be/E4yaDaEU3tw

2017年3月29日 星期三

【03160135 吳亞芳】Week06

實作範例

按下控制器Trigger製造出藍Cube
按控制器Trigger製造出紅Cube


截圖待補

套用在empty object"Box"的程式碼Create:

using UnityEngine;
using System.Collections;
using Valve.VR;

public class Create : MonoBehaviour {
public SteamVR_TrackedObject rightController;
public GameObject redCube;
public GameObject blueCube;
public GameObject box;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
var device = SteamVR_Controller.Input ((int)rightController.index);
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Trigger)) {
Instantiate (redCube, rightController.transform.position, rightController.transform.rotation, box.transform);


}
if (device.GetPress (SteamVR_Controller.ButtonMask.Trigger)) {
Instantiate (blueCube, rightController.transform.position, rightController.transform.rotation, box.transform);

}
if (device.GetPressUp (SteamVR_Controller.ButtonMask.Trigger)) {
foreach (Transform child in box.transform) {
GameObject.Destroy (child.gameObject);
}
}
}
}





-----------

撿東西的程式


截圖待補

控制器程式碼:


using UnityEngine;
using System.Collections;
using Valve.VR;
public class Touch : MonoBehaviour {
public SteamVR_TrackedObject leftController;
bool isTouch=false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
var device = SteamVR_Controller.Input ((int)leftController.index);
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Trigger)) {
isTouch = true;
}
if (device.GetPressUp (SteamVR_Controller.ButtonMask.Trigger)) {
isTouch = false;
}
}


void OnTriggerStay (Collider other){
if(other.tag=="catch" && isTouch){
other.transform.position = this.transform.position;
}
}
}


2017年3月22日 星期三

【03160135 吳亞芳】Week05

蕭立人老師教學影片播放

登入moodle找到課程
老師分享影片雲端網址

















4個影片+ppt分別為4個實作示範

用到之前修課用的範例做修改

01.HTC Vive初步+Earth




import steamVR之後




建立一地球

建一原球體->貼上地球貼圖材質

import天空包





地球的Rotation.cs內容

















(0,0,1f,0)
以z軸為中心轉


02.SeesawVR  蹺蹺板

由PC版本改為VR版本


PC版本介紹:

Main Camera

地板floor

  • Rigibody
Use Gravity 不勾(不受重力影響)
Is Kinemaic 勾(動力學靠程式推動)


板子board

  • Rigibody

Use Gravity 勾
Is Kinemaic 不勾


  • Constrains
Freeze Position x,y,z 位置不移動
Freeze Rotation x,y 不旋轉
z軸可選轉


Person
兩個cube

  • Rigibody  mass:70、Use Gravity 勾
  • Box collider
Reverion.cs


....等如ppt及影片所說

要改成VR版本


先匯入(Asses Store)SteamVR






















在Main camera加上VR Camera元件


















記得+玩要按Expend 擴展







存場景

現在play就可以身歷其境看到敲翹板運作


但這是第三人稱,必須繼續改成第一人稱

->
把Main Camera移到PersonA當兒子


把位置資訊清空為0

Play之後一開始看到的畫面是旁邊 不是對面Cube
所以要調整Rotation:Y -90
讓藍色(Z)箭頭對準對方






















可以play看到對面

















試驗:轉頭時哪些值(properties)會跟著變化?那些不會?為什麼?
結果:Main camera裡的eyes會跟著變化,因為是看的地方動不是人整個動



























03.CompassVR 指南針

要把|CompassPC改為VR

介紹PC版

同影片前半與PPT所說,之前做過的作業
是一個可以利用鍵盤移動的指南針,並且camera會一直跟隨指南針


開始修改:

import SteamVR

















SteamVR→Prefabs裡的SteamVR放進Hierarchy裡面









在main camera加入VR Camera元件→expend







儲存場景play之後發現頭盔視角沒有跟著指南針




再做修改
再eyes裡 collapse
變回原本的camera













SteamVR→Prefabs裡的CameraRig放進Hierarchy裡面







把原本的Main camera 打勾取消(disabe)









CameraRig是用來改變transform的,移動位置及設定整個身體面對的方向
Camera(head)和Camera(eye)決定局部的拍攝方向

把FollowingCamera.cs套用給CameraRig






















記得套用public變數Target :Compass(Disk)





儲存 並play

移動指南針還是使用鍵盤,眼睛是可以轉向但整個CameraRig是會跟著輪盤走





















繼續修改:把指南針改成拿在手上,不需依靠鍵盤移動



把Disk變成prefab(拉下來Project)
Hierarchy裡的Disk就可以刪除

















再把預製物Disk移出一個到右手Controller當兒子











把位置歸零才會剛好在手把上
Scale調1/10變小點


不想看到右手手把只需把Model disabe
















儲存play




測試與問題


可以把Model換成別的3D模型





















2017年3月15日 星期三

【03160135 吳亞芳】Week04






解壓縮老師給的Unity project[Pusheen World]



















打開Unity




















選擇[Pusheen World]project
















到FB 2017VR 社團找到老師給的雲端硬碟連結


















進入連結網址選則一張自己喜歡的360度照片並下載在電腦裡


















拖曳圖片進Unity橘色區域(匯入)















修改Texture為Cubemap天空包


















記得Apply套用更變




















在Image資料夾新增一材質
















更改Standard為Skybox→Cubemap















Select





















































-------------------------
前往205實作部分

熟悉控制器與頭罩

開啟Steam並登入
安裝Steam VR
























右上開啟VR模式後設定VR
照著紙片人的動作做






開啟Unity照著學長ppt實作

要先import SteamVR!



1.按下控制器能顯示Hello Trigger Press與Value:壓力(握力)值

程式碼:

using UnityEngine;
using System.Collections;

public class UseController : MonoBehaviour {

// Use this for initialization
void Start () {

}
public SteamVR_TrackedObject rightController;
float pressValue=0;

// Update is called once per frame
void Update () {

if (rightController == null)
return;
var device = SteamVR_Controller.Input ((int)rightController.index);
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Trigger)) {
pressValue = device.GetAxis (Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger).x;
print ("Hello Trigger Press" + "Value:" + pressValue);

}
}
}


2.將控制器操作Trigger.Grip.TouchPad顯示與畫面

程式碼(左控制器):

using UnityEngine;
using System.Collections;

public class myLeftController : MonoBehaviour {
public SteamVR_TrackedObject leftController;
public GameObject controllerInfo;
bool isTriggerPress =false;
bool isTouchPadTouch =false;
bool isTouchPadPress =false;
bool isGripPress =false;
bool isManuPress =false;
Vector2 touchpadPosition=new Vector2();
float pressValue=0;

void Start () {

}

// Update is called once per frame
void Update () {
string infor="Left Controller Information : \n";
if (leftController == null)
return;
var device = SteamVR_Controller.Input ((int)leftController.index);
myTriggerDetect (device);
myTouchPadDetect (device);
myGripDetect (device);
myManuDetect (device);

infor += "Press Tridder : " + isTriggerPress + "\nTrigger Press Value : " + pressValue + "\nTouchpad Press : " + isTouchPadPress + "\nTouchpad touch : " + isTouchPadTouch + "\nTouchpad Position : " + touchpadPosition + "\nGrip Press : " + isGripPress + "\nManu Press : " + isManuPress;
controllerInfo.GetComponent<TextMesh> ().text = infor;

}
void myTriggerDetect(SteamVR_Controller.Device device)
{
if (device.GetPress (SteamVR_Controller.ButtonMask.Trigger)) {
pressValue = device.GetAxis (Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger).x;
isTriggerPress = true;
} else {
isTriggerPress = false;
pressValue = 0;
}
}
void myTouchPadDetect(SteamVR_Controller.Device device)
{
if (device.GetPress (SteamVR_Controller.ButtonMask.Touchpad)) {
isTouchPadPress = true;
} else {
isTouchPadPress = false;
}
if (device.GetTouch (SteamVR_Controller.ButtonMask.Touchpad)) {
isTouchPadPress = true;
touchpadPosition = device.GetAxis (Valve.VR.EVRButtonId.k_EButton_Axis0);
} else 
{
isTouchPadTouch = false;
touchpadPosition = new Vector2 (0, 0);
}
}
void myGripDetect(SteamVR_Controller.Device device)
{
if (device.GetPress (SteamVR_Controller.ButtonMask.Grip)) {
isGripPress = true;
} else {
isGripPress = false;
}
}
void myManuDetect(SteamVR_Controller.Device device)
{
if (device.GetPress (SteamVR_Controller.ButtonMask.ApplicationMenu)) {
isManuPress = true;
}
else{
isManuPress = false;
}
}
}










2017年3月8日 星期三

【03160135 吳亞芳】Week03

註冊Zuvio帳號
http://http://irs.zuvio.tw
課程代碼 37586
課程名稱 2017虛擬實境

體驗HoloLens

Leapmotion





安裝完成後桌面右下工具列顯示綠色為正常




右鍵打開觀察器






進入Leap motion官網



















下載Unity包
















下載完成












執行Unity



新增專案




匯入package










選擇sence