2016年10月22日 星期六

Unreal: Simple 360 Videos

since: 2016/10/22
update: 2017/03/24

reference:
1. How to create a simple 360 VideoSphere in Unreal Engine | vrobot


Unreal 版本: 4.13 ~ 4.15

A. 新增專案
     1. 新增一個 BlankBlueprint 專案

     2. 在 Content BrowserContent 目錄下, 新增 MapsMovies 資料夾

     3. 將目前的關卡地圖, 存到 Maps 資料夾下(預設名稱: NewMap)

      4. 設定專案的 "編輯起始地圖" 與 "遊戲預設地圖"


    5. 加入影片素材
         a. 下載 360° Videos - YouTube (在此使用 Experience Vivid Sydney)
       
         b. 將影片放入 Movies 資料夾內: (以確保影片檔能正確被封裝)


-----------------------------------------------------------------------------------------------

B. 專案內容新增 "多媒體檔"
     1. 點選 Content > Movies 資料夾:
         Add New > Media > File Media Source

     2. 取名為: my360File

3. 點二下 my360File ,  將 File Path 設為之前加入的影片檔

-----------------------------------------------------------------------------------------------
C. 專案內容新增 "媒體播放"
     1. 點選 Content > Movies 資料夾:
         Add New > Media > Media Player

     2. 勾選:
         Audio output SoundWave asset
         Video output MediaTexture asset
          > OK
 

3. 取名為: MyMediaPlayer, 結果:

     4. 點二下 MyMediaPlayer, 再點二下最下方的影片素材,
         檢查右下方的 Sound WaveVideo Texture 設定.

-----------------------------------------------------------------------------------------------

D. 建立 Video Material
      1. 檢查 Media Texture

      2. 由此 Media Texture 來建立 Material

      3. 結果:

      4. 開啟剛剛產生的 Material , 在 Details 將 Two Sided 勾選

      5. 新增 Texture Coordinate 節點:
          UTiling: -1.0
          VTiling:  1.0

      6. 新增 Constant 2Vector 節點:
          R: -1.0
          G:  1.0         


      7. 最後新增 Multiply 節點, 連結下:

-----------------------------------------------------------------------------------------------


E. Level Blueprint
     1. 開啟 Level Blueprint

   2. 新增一個 Media Player Reference 的變數: (取名為 360Video)

3. 確認變數型別為: MediaPlayer(Reference),
    先 Compile 後, 設定好預設的 Media Player

     4. 將 360Video 變數拖拉(Ctrl 鍵?)到 Event Graph 裡, 新增 Open Source Node,
         並設定其 Media Source (在此為: my360File)

-----------------------------------------------------------------------------------------------

F. 新增圓球體
    1. 將一個 Sphere 拖拉到場景內:

    2. 調整大小

    3. 並取消碰撞

    4. 調整 Player Start 的 Z軸高度

    5. 也調整 Sphere 的 Z軸 高度

    6. (按 Ctrl) 將 Sound Wave Media Material assets 拖拉到 Sphere

    7. 編譯並執行:

-----------------------------------------------------------------------------------------------

G. 備註
    1. 將 Sphere  跟隨玩家角色移動:
        a. 記得要先做 "修正 VR 的地平線水平高度" 的處理:
            參考: I touchs: Unreal: Begin A Virtual Reality Project
                     > C. 修正 VR 的地平線水平高度

        b.  將 Sphere 設成 Movable:


        c. 修改 Level Blueprint:

    2. 設定影片播放速率:(4.13)
        a. 說明:
            在 Windows 平台, 測試過 MP4, MKV, AVI 與 WMV 影片格式,
            其中 AVI 與 WMV 可以 work, 但是 AVI 播起來頓頓的, 所以建議使用 WMV 格式.
             p.s. 後來再測試後, 某些 MP4 也可以正常播放.

        b. Level Blueprint:

    3. 設定影片播放速率:(4.15)

    4. 重置影片播放:

2016年10月20日 星期四

Unreal: Playing Videos

since: 2016/10/20
update: 2017/03/05

reference:
1. Playing Videos in a Level | Unreal Engine


Unreal 版本: 4.13


A. 新增專案
    1. 新增一個 BlankBlueprint 專案

    2. 在 Content BrowserContent 目錄下, 新增 MapsMovies 資料夾

    3. 將目前的關卡地圖, 存到 Maps 資料夾下(預設名稱: NewMap)

    4. 設定專案的 "編輯起始地圖" 與 "遊戲預設地圖"


    5. 加入影片素材
         a. 下載 Unreal 提供的範例影片: Sample Video (檔名: SampleVideo.mp4)
       
         b. 將影片放入 Movies 資料夾內: (以確保影片檔能正確被封裝)

-----------------------------------------------------------------------------------------------

B. 專案內容新增 "多媒體檔"
     1. 點選 Content > Movies 資料夾:
         Add New > Media > File Media Source

     2. 取名為: myVideoFile

     3. 點二下 myVideoFile ,  將 File Path 設為之前加入的影片檔

-----------------------------------------------------------------------------------------------

C. 專案內容新增 "媒體播放"
     1. 點選 Content > Movies 資料夾:
         Add New > Media > Media Player

     2. 勾選:
         Audio output SoundWave asset
         Video output MediaTexture asset
          > OK

     3. 取名為: myMediaPlayer, 結果:

     4. 點二下 myMediaPlayer, 再點二下最下方的影片素材,
         檢查右下方的 Sound WaveVideo Texture 設定.

-----------------------------------------------------------------------------------------------

D. 新增一個 Static Mesh 來作為播放影片的地方
      1. Place > Basic > Cube
          > 利用 Translate (W), Rotation (E) and Scale (R), 來調整大小形狀與位置


      2. 按 Ctrl (或 Shift), 將 Sound WaveMedia Texture assets 皆選取,
          並拖放到剛剛新增的 Static Mesh 上.

-----------------------------------------------------------------------------------------------

E. Level Blueprint
     1. 開啟 Level Blueprint

     2. 新增一個 Media Player Reference 的變數: (取名為 MediaPlayer)

     3. 確認變數型別為: MediaPlayer, 並設定好預設的 Media Player

     4. 將 MediaPlayr 變數拖拉(Ctrl 鍵?)到 Event Graph 裡, 新增 Open Source Node,
         並設定其 Media Source (在此為: myVideoFile)

     5. 編譯執行:

-----------------------------------------------------------------------------------------------

F. 改變播放速率(目前只在 Mac 上有效)
     1. 開啟 MyMediaPlayer, 取消勾選右下方的: Play on Open (不然不會改變播放率)

     2. 開啟 Level Blueprint, 新增 Float 變數: myRateSetRate 節點, 連結如下:

     3. 說明:
         只有 Rate1.0(影片的正常播放速率)才會有聲音, 太快或太慢都不會有聲音.

-----------------------------------------------------------------------------------------------
    4. 正解: (UE 4.13 ~ UE 4.15)
        Q: How to set Play Rate in Media Player on Windows?
             It seems works only on Mac, not Windows.

        A: The first thing you need to do is make sure that you call the Open Source Node
            before the Set Rate Node. Secondly, there is a known issue with the Media Player
            in UE4 where it doesn't like receiving multiple commands "simultaneously."
            So you will need to add a Delay Node between the Open Source Node
            and Set Rate Node. It might depend on the machine, but for me, the Delay
            must be a minimum of 0.2 seconds for this to work.


            a. Static Set Rate:

                Level Blueprint:

                Result:

            b. Timeline Set Rate:

                Timeline:

                Level Blueprint:

                Result: