2019年6月30日 星期日

Week17 李宜謙(VR Battle小心得)

期末作品展示

題目:VR棉花糖

        透過 VR 模擬棉花糖的製作,讓體驗者在現實製作前,能在虛擬環境中練習。
在虛擬環境下,不僅克服機器取得不易、環境清掃及不易上手的問題,也藉此讓人
們重拾童年回憶並沉浸在製作時的樂趣。

        本研究首先觀察棉花糖機的構造及原理,對其有初步的認識。接下來模擬糖絲
從噴射到相黏及交疊的現象,利用有限元素法的觀念,我們將糖絲用球與圓柱的集
合來做代替,並運用虎克定律來解決糖絲具有彈性的特質,再考慮外部因素的影
響,例如:空氣阻力、重力,使糖絲的運動符合真實型態。
 利用 Vive Pro 的手把進行撒糖的動作,中心的加熱圓罐會開始轉動產生出糖
絲,接著可以透過手把去纏繞鍋子內的糖絲,製作出棉花糖。

作品簡介影片連結:https://reurl.cc/8VgVo
最後得到HTC評審的許多建議及鼓勵與優等的肯定


甚至在前幾天的VR Battle受到大家的青睞,得了最佳人氣獎

覺得未來不管再怎麼辛苦也要完成這個作品
也謝謝老師及學長姐對我們不離不棄的教導與呵護!!
最後更是謝謝我的組員的互相配合及扶持愛你們


2019年6月29日 星期六

week17

很高興可以在最後一堂課獲獎得到htc工程師的肯定,很幸運也獲得CGW VR BATTLE的最佳人氣獎,我知道我們的作品(半成品)還有很多進步的空間,獲得這些獎像也給我們繼續努力的動力,謝謝大家的支持,還有小葉老師的指導。
評審們也給我們很多建議,我們也將參考大家的建議,繼續改進,讓糖絲更像!
謝謝組員的努力!

Week16

1.後來我們討論出來可以利用paeticle(粒子系統)去做render
2.做出來也挺像的(棒棒)
3.感謝紹軒努力p圖,這樣我們套用的粒子系統的圖才像
4.但還是遇到問題,particle我沒辦法控制他的長度...(正常來說要可以,所以應該是我的問題)

week15

1.老師建議我們可以將linerenderer換成cylinder,我們有成功將其替換,這樣看起來更像糖絲了

2.但是因為糖絲全部都是靠gameobject生成,當場景裡面同時存在太多物件,會導致系統跑不動

3.還有一個問題是不像糖絲!糖絲應該是有種虛無飄渺的感覺,可是用sphere & cylinder 生成的線,長得像麵條QQ(可以偷偷調細,遠看就會比較像了)

week14

1.我們決定先解決物理方面的問題,之後再解決長得不向的問題,先求有再求好。

2.現在有球有線,我們想要讓他可以一直生成,所以利用instantiate()這個函式,不斷呼叫prefab,這樣可以產生出很多球跟線,模擬棉花糖機噴絲的感覺。

Week13

1.將球套入彈簧模型之後,因為要有線的感覺,所以我們決定運用linerenderer將球跟球相連。
但是有個缺點linerenderer是一個平面的線,而且還有點透明扁扁的感覺,因此我們會繼續努力找更好的辦法呈現。

week16

-新增倒數計時&子彈碰撞鴨子消失

新增開始結束畫面
跳轉scene程式

改善新的鴨子動畫&匯出

week12

地圖上禮拜完成一半但是忘記儲存
這禮拜重新再做一個

地圖目前進度

有河、山坡、樹

缺少蒲草


與組員討論程式部分
上禮拜忘記save project
程式遺失重寫

week14

這一週請假了
在fb跟賴與組員討論進度

模型完成槍枝&小鴨

紹軒的糖絲日記-week17-final

期末作品展示!!

題目:VR棉花糖

        透過 VR 模擬棉花糖的製作,讓體驗者在現實製作前,能在虛擬環境中練習。
在虛擬環境下,不僅克服機器取得不易、環境清掃及不易上手的問題,也藉此讓人
們重拾童年回憶並沉浸在製作時的樂趣。

        本研究首先觀察棉花糖機的構造及原理,對其有初步的認識。接下來模擬糖絲
從噴射到相黏及交疊的現象,利用有限元素法的觀念,我們將糖絲用球與圓柱的集
合來做代替,並運用虎克定律來解決糖絲具有彈性的特質,再考慮外部因素的影
響,例如:空氣阻力、重力,使糖絲的運動符合真實型態。
 利用 Vive Pro 的手把進行撒糖的動作,中心的加熱圓罐會開始轉動產生出糖
絲,接著可以透過手把去纏繞鍋子內的糖絲,製作出棉花糖。

作品簡介影片連結:https://reurl.cc/8VgVo



這學期修了這堂課體驗到了很多不同的設備
也更一步了解vrvr相關的東西
也因為我們剛好專研做相關的
所以就把他拿去期末展示
雖然可能完整度不比其他組來的高
但HTC的人也很鼓勵我們要我們繼續努力
雖然這段路挺辛苦,但也覺得很開心

紹軒的糖絲日記-week16

我們將糖絲模擬放入場景中
設定鍋子外圍的colider 讓絲線不會超出鍋子
已經將linerender改為cylinder

使用者可以使用棒子將糖絲黏起
設定sphere的tag來做判斷

由於物件快速大量的產生
所以系統很快的就會開始閃爍當機


紹軒的糖絲日記-week14

這週我們將糖絲的sphere可以黏到我們設定的一個板子上了


但仍然無法將他長大!!

紹軒的糖絲日記-week13

這周我們主要是在畫出糖絲的線

目前只有sphere的連接(彈簧)
並不像是一條絲線

我們查到了可以使用LineRender直接畫出來

我們設定兩顆球之間的距離就產生一條linerender


紹軒的糖絲日記-week11

老師開始讓我們自己製作期末作品

我們分析並分成以下幾部分:

1.利用Sphere模擬防絲受力的點
2.利用linerenderer把球跟球連起來
3.將糖絲套上彈簧模型(套在sphere上做計算),讓它再受拉扯的時候可以被拉動。
4.增加空氣阻力、離心力等外部因素
5.設置糖絲怎麼被棒子黏住,要跟什麼東西黏住,不能跟什麼東西黏住
6.會黏住東西之後,要怎麼讓年花糖本體長大
7.因為是利用Sphere做糖絲的模擬,所以需要解決,物件過多,系統運算量過等問體
8.要如何讓棉花糖像真的(render的部分)

紹軒的糖絲日記-week10

今天老師介紹了leap motion
這是一個可以捕捉使用者手動作的設備

到官方網站下載驅動程式確認可以使用

小提醒:UNITY 2018.1 LEAP MOTION 版本才能跑

紹軒的糖絲日記-week05

 今天老師介紹了一款theta設備
可以拍攝360度的影片

這是老師拍攝的一些影片

設備圖!

將影片套入unity中
程式碼
加入聲音

也可以下載app連接手機做使用

紹軒的糖絲日記-week02

首先,接上我們的設備vive
開啟steam VR 並且登入
設定房間位置
開啟setting-developer 確認盒子訊號

將我們的棉花糖機模型匯入


確認手把可以出現在場景中



紹軒的糖絲日記-week08

1.一開始老師先去跟每組了解要做的期末作品

2.介紹了4/27 VR battle 以及 可以在比賽期間使用舉辦方的軟體

3.在6/27-6/28 的 CGW
http://cgw2019.yzu.edu.tw/

4.遇到一個比較難的是,我們該如何讓我們放入的腳色自然走到我們要的位置上


紹軒的糖絲日記-week12

今天主要是在unity上做到如何產生彈簧的效果
我們首先在場景中放入6顆sphere 然後再prefab上面套入我們的程式碼

之前有問過老師如何寫出彈簧效果的程式
老師有在processing上模擬給我們看
今天主要將P語言轉換至unity上


紹軒的糖絲日記-week04


 下載visual studio
下載steam VR

設定手把



將寫好的程式碼套入

在手把上放入模型

觸碰面板會得到回饋

Week17


主題:VR獵殺季節
https://www.youtube.com/watch?v=cY-NLrl18zM&feature=youtu.be

遊戲時間為60秒,擊中鴨子後空中會顯示你共擊中幾隻鴨子,時間到則遊戲結束。
VR化的優點:
鴨子看起來很立體很好吃、可以體驗懷舊的經典遊戲的真實感,可以訓練玩家反應力、手眼協調能力,遊戲不會太過複雜、可以簡單上手,Trigger仿板機的設計可以讓玩家有拿著槍的感受,提供更直覺式的遊戲體驗,不會受到滑鼠滑動卡頓、桌面不夠大的環境限制,有些玩家還要把滑鼠拿起來重複滑動才能抵達想要的地點,導致追不上飛行的鴨子,破壞遊戲體驗,憤而摔滑鼠、破壞桌面,這樣不僅殺不到鴨子,造成沒有辦法透過遊玩遊戲紓解壓力、還需要花費錢財購入新滑鼠、新桌子不但鴨財兩失、也讓人覺得得不償失,從此對遊戲喪失信心,看到鴨子就憤怒,想起打不到鴨子的失落感更讓人心情不好,世界上多了一股負能量,這樣是很不好的,為了能讓世界有一點點的進步,增加一點點的正面能量,我們製作了這個VR狩獵鴨子,讓玩家可以盡情揮舞著HTC VIVE無線手把,不再遭受有線滑鼠和桌面大小的限制,能夠盡情的狩獵鴨子,享受遊戲的樂趣,揮灑熱情的汗水,進而達到紓解壓力、舒緩身心的目的,讓世界更加的快樂美好!

2019年6月24日 星期一

Week15_珮妤的筆記

                                                          子彈觸碰到敵人分數會增加
並在場景中設置計分器

Week16_珮妤的筆記

設置通關門檻,分數達400分時,會顯示Victory

Week17_珮妤的筆記

期末展示:
https://www.youtube.com/watch?v=aK5EDI2A_pI

評審建議及心得感想 :
由於我們敵人碰到柱子不會閃,評審建議我們柱子的部分可以套用透明的collider。期望未來我們可以加入一些AI的成分,讓敵人可以互打,使遊戲更加完整。藉由這門課讓我更了解VR的應用原來這麼多元有趣,期望自己能更精進寫程式的部分。

Week14_珮妤的筆記

加入射擊程式碼,讓左槍右槍都可射擊
調整子彈速度與方向













Week13_珮妤的筆記

設定敵人位置,限制敵人會在一定範圍內移動










2019年6月17日 星期一

AHSU week17

第七組 密室逃脫

組員:05161181 梁傳宗、05161120 徐譽嘉、05160222 郭宇傑、05160425 陳亭光

介紹:玩家需完成關卡,以取得密碼逃出密室

操作:利用兩手的TouchPad移動角色,按壓Trigger拿取物品

影片:https://www.youtube.com/watch?v=KYoq4XfNGC4&feature=youtu.be

原以為我們的作品會被認為完成度不高

因為我們collider的部分沒有處理好

模型大多也都是自己建的

精緻度會沒有那麼高

但評審對我們的評價很高

也給我們相關操作的建議

我覺得是很棒的一次體驗

AHSU week 16

小組在製作最後的關卡的那天我有事請假了

由其他組員趕工完成

傳宗想到的找密碼的idea我覺得很棒



AHSU week 15

和宇傑討論七巧板的程式並debug

    void OnTriggerStay(Collider col) {        
        if (device.GetPress(SteamVR_Controller.ButtonMask.Trigger) && col.tag!="desk"){               //Debug.Log ("抓起");                    // 將 physics(物理引擎) 關掉                        col.attachedRigidbody.isKinematic = true;                      // 設定controller為parent                        col.gameObject.transform.SetParent(gameObject.transform);        }              if (device.GetPressUp (SteamVR_Controller.ButtonMask.Trigger)) {                           col.gameObject.transform.SetParent (null);                       col.attachedRigidbody.isKinematic = false;                       //GameObject.Destroy (col.gameObject, 3f);                        //tossObject (col.attachedRigidbody);                }       } 
/////////////////////////////////////////////////////////////////////////////////////////////////////////    void OnCollisionStay(Collision other) {        if(other.gameObject.tag=="desk")            blue=true;    }
    void OnCollisionExit(Collision other) {        if(other.gameObject.tag=="desk")            blue=false;    }
過關條件程式碼:    void Update () {               device = SteamVR_Controller.Input ((int)trackedObj.index);             if(col_blue.blue&&col_gray.gray&&col_green.green&&col_orange.orange&&col_yellow.yellow&&col_purple.purple&&col_red.red&&col_black.black)        {            puzzover=true;            SceneManager.LoadScene ("start_menu");        }    }
/////////////////////////////////////////////////////////////////////using System.Collections;using System.Collections.Generic;using UnityEngine;
public class tranlate : MonoBehaviour{    // Start is called before the first frame update    SteamVR_TrackedObject trackedObj; SteamVR_Controller.Device device,deviceLeft,deviceRight;    public GameObject obj;    float a=0.0f,b=0.0f,c=0.0f;    Vector2 rotat=new Vector2(0.0f,0.0f);    void Start()    {        trackedObj=GetComponent<SteamVR_TrackedObject>(); a=obj.transform.position.x; b=obj.transform.position.y; c=obj.transform.position.z;    }
    // Update is called once per frame    void Update()    {        device = SteamVR_Controller.Input ((int)trackedObj.index);        if (device.GetPress (SteamVR_Controller.ButtonMask.Touchpad)){ rotat = device.GetAxis (); float angle=Vector2.Angle (new Vector2 (1, 0), rotat); if (angle > 45 && angle < 135) { if (rotat.y > 0) c+=0.02f; else c-=0.02f; } else { if (rotat.x>0) a+=0.02f; else a-=0.02f; } } obj.transform.position = (new Vector3 (a, b, c));



AHSU week 14

製作七巧板模型

逐個匯出成obj檔

確認放到unity中可以爭常拿+放


AHSU vr week13

投影的實作:

在asset store抓的模型不知道為什麼旋轉中心在腳底
而我們希望可以以鳥的身體為中心讓它旋轉

後來我們用新物件調整中心位置及世界座標位置解決了這個問題

參考:https://blog.xuite.net/ljs.ctk/multimedia/454299781-Unity+%E6%94%B9%E8%AE%8A%E7%89%A9%E4%BB%B6%E7%9A%84%E8%BB%B8%E5%BF%83





Week17

第七組

組員:05161181 梁傳宗、05161120 徐譽嘉、05160222 郭宇傑、05160425 陳亭光

介紹:玩家需完成關卡,以取得密碼逃出密室

操作:利用兩手的TouchPad移動角色,按壓Trigger拿取物品

影片:https://www.youtube.com/watch?v=KYoq4XfNGC4&feature=youtu.be

在經過評審老師的試玩後,給了我們很好的意見與回饋。

1.手把按壓密碼的部分可以改用雷射指示,老師提到,vr遊戲雖然主打利用動作等增加沉浸感,但一些奇怪角度或許能利用別的操作方式取代,並不需要一味的追求操控感。

2.在光影控制關卡的鳥模型角度控制,我們是利用touchpad來操控,但評審老師認為可以改用手把直接改變旋轉角度值,這一點就是我們沒有想到的了,一方面更好進行細微操作,另一方面也增加了自己操作光影的體驗感。


最後很感謝評審老師以及葉正聖老師給予我們的肯定,這們克讓我體驗到了自己動手從無到做出一個遊戲的辛苦與成就感,最後也得到佳作的肯定。

2019年6月16日 星期日

Week 12

Week 12
測試我們需要的程式碼
一、使用keyboard控制人物移動
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ThirdContoller : MonoBehaviour
{
    public float Speed = 3.0f;       
    public float RotateSpeed = 3.0f;
    void Start()
    {
     
    }
    void Update()
    {
        float hor = Input.GetAxis("Horizontal");
        float ver = Input.GetAxis("Vertical");
        transform.position += transform.forward * Time.deltaTime * ver * 3 * Speed;
        transform.Rotate(transform.up * Time.deltaTime * hor * 90 * RotateSpeed);
    }
}
原本使用的是wasd控制移動,但是發現如果這樣子的話人物移動會不流暢,而且人物面對的方向也會有有問題,於是改成這樣,ws控制前進後退,ad控制人物的朝向,這樣就可以讓人物平滑的移動了

Week16 昱霖的筆記

設置通關門檻
分數達400會跳出通關畫面
(利用轉換場景方式)


Week15 昱霖的筆記

加入分數
隨著子彈觸碰到敵人
分數會增加
場景中有設置計分器,
在遊玩時能輕易看到當前分數

Week14 昱霖的筆記

加入射擊程式碼,
左、右槍皆可射擊
(在槍口放一個empty作為射擊點,放入此程式碼)
調整子彈速度與方向
令子彈在定值後消失

Week13 昱霖的筆記

設定敵人位置在超過一定數值,會將移動值改為負數
使敵人會在一定範圍內