首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Cardboard VR 開發初步(四):官方 Demo 深度解析

     編輯:關於C++

一、DemoScene 結構

導入 Cardboard SDK for Unity 後,打開 Assets/Cardboard/DemoScene。Hierarchy 主要包含:

  • CardboardMain:核心雙眼攝像機,封裝了畸變校正、頭部追蹤、VR 模式切換等。
  • Cube:帶 BoxCollider 和 Teleport 腳本的互動物體。
  • Plane:地板。
  • Point Light:光源。
  • Canvas/Panel:三個 UI 按鈕(Reset、Recenter、VR Mode)。
  • EventSystem + GazePointer:注視點(小黃點)交互系統。

二、核心腳本 Teleport 解析

掛在 Cube 上,處理注視進入/退出、點擊傳送、按鈕回調:

public class Teleport : MonoBehaviour {
    Vector3 startingPosition;
    void Start() {
        startingPosition = transform.localPosition;
        Cardboard.SDK.EnableAlignmentMarker = true; // 顯示對齊線
        Cardboard.SDK.EnableSettingsButton = true;  // 顯示設置按鈕
        Cardboard.SDK.NeckModelScale = 1f;
        SetGazedAt(false);
    }
    public void SetGazedAt(bool gazedAt) {
        GetComponent<Renderer>().material.color = gazedAt ? Color.green : Color.red;
    }
    public void Reset() { transform.localPosition = startingPosition; }
    public void ToggleVRMode() { Cardboard.SDK.VRModeEnabled = !Cardboard.SDK.VRModeEnabled; }
    public void TeleportRandomly() {
        Vector3 dir = Random.onUnitSphere;
        dir.y = Mathf.Clamp(dir.y, 0.5f, 1f);
        float dist = 2 * Random.value + 1.5f;
        transform.localPosition = dir * dist;
    }
}

三、交互機制

  • EventTrigger 接收 EventSystem 事件:
    - Pointer Enter → SetGazedAt(true) (變綠)
    - Pointer Exit → SetGazedAt(false) (變紅)
    - Pointer Click → TeleportRandomly() (隨機傳送)
  • 按鈕綁定:
    - Reset Button → Teleport.Reset()
    - Recenter Button → Cardboard.SDK.Recenter() (校準「前方」)
    - VR Mode Button → Teleport.ToggleVRMode() (切換雙眼/單眼模式)

四、CardboardMain 關鍵功能

  • 雙眼渲染、畸變校正、非對稱投影
  • 頭部追蹤(陀螺儀/加速度計融合)
  • 提供 VRModeEnabled、Recenter()、EnableAlignmentMarker 等便捷屬性/方法
  • 支持設備適配(不同手機參數)

五、總結

Demo 展示了 Cardboard 核心交互:注視點 + EventTrigger + 碰撞體 實現 3D UI 操作。開發時以此為基礎擴展,善用 SDK 封裝的頭部數據、設備適配功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved