2017年6月23日 星期五
【期末DEMO】BaseballVR
虛擬棒球 打擊練習
在一壘、二壘、三壘及游擊手,左右外野都有防守員防守。增加難度
界外球的判斷:每一擊球後會判斷是否為界外
https://youtu.be/E4yaDaEU3tw
2017年5月17日 星期三
2017年5月3日 星期三
2017年4月12日 星期三
2017年3月29日 星期三
【03160135 吳亞芳】Week06
實作範例
按下控制器Trigger製造出藍Cube
按控制器Trigger製造出紅Cube
按下控制器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
地球的Rotation.cs內容
(0,0,1f,0)
以z軸為中心轉
02.SeesawVR 蹺蹺板
由PC版本改為VR版本
PC版本介紹:
Main Camera
地板floor
Is Kinemaic 勾(動力學靠程式推動)
板子board
Use Gravity 勾
Is Kinemaic 不勾
記得+玩要按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裡面
CameraRig是用來改變transform的,移動位置及設定整個身體面對的方向

記得套用public變數Target :Compass(Disk)
儲存 並play
移動指南針還是使用鍵盤,眼睛是可以轉向但整個CameraRig是會跟著輪盤走
繼續修改:把指南針改成拿在手上,不需依靠鍵盤移動
把Disk變成prefab(拉下來Project)
Hierarchy裡的Disk就可以刪除
再把預製物Disk移出一個到右手Controller當兒子
把位置歸零才會剛好在手把上
Scale調1/10變小點
不想看到右手手把只需把Model disabe
儲存play
測試與問題
可以把Model換成別的3D模型
登入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
Is Kinemaic 勾(動力學靠程式推動)
板子board
- Rigibody
Use Gravity 勾
Is Kinemaic 不勾
- Constrains
Freeze Position x,y,z 位置不移動
Freeze Rotation x,y 不旋轉
z軸可選轉
z軸可選轉
Person
兩個cube
- Rigibody mass:70、Use Gravity 勾
- Box collider
Reverion.cs
....等如ppt及影片所說
要改成VR版本
先匯入(Asses Store)SteamVR
記得+玩要按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月12日 星期日
2017年3月8日 星期三
【03160135 吳亞芳】Week03
註冊Zuvio帳號
http://http://irs.zuvio.tw
課程代碼 37586
課程名稱 2017虛擬實境
體驗HoloLens
Leapmotion


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

右鍵打開觀察器

進入Leap motion官網


下載Unity包

下載完成
執行Unity

新增專案

匯入package



選擇sence

http://http://irs.zuvio.tw
課程代碼 37586
課程名稱 2017虛擬實境
體驗HoloLens
Leapmotion


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

右鍵打開觀察器

進入Leap motion官網


下載Unity包

下載完成
執行Unity

新增專案
匯入package



選擇sence

訂閱:
文章 (Atom)

































