簡體   English   中英

使用Unity上的Cardboard SDK進行Recenter或Reorient視圖

[英]Recenter or Reorient view with Cardboard SDK on Unity

使用Unity,CardboardHead腳本被添加到主攝像頭並且可以很好地處理所有內容,但我需要能夠按需“重新定位”視圖,而我到目前為止看到的唯一選項是漫游整個場景,似乎像這樣是第一手資料,我在文檔中找不到任何東西。

使用Oculus Mobile SDK(GearVR),它將是OVRCamera.ResetCameraPositionOrientation(Vector3.one,Vector3.zero,Vector3.up,Vector3.zero); 雖然每次觀看者佩戴時都能很好地處理,所以很少需要它。

CardboardHead上有一個“目標”參數,可讓您使用另一個游戲對象作為旋轉參考。 或者你可以使用虛擬父游戲對象。 無論哪種方式,當您想要重新定位時,您可以設置此參考對象的旋轉,以便CardboardHead現在指向前方。 將此函數添加到CardboardHead上的腳本(或者只是將其添加到該腳本中):

public void Recenter() {
    Transform reference = target != null ? target : transform.parent;
    if (reference != null) {
        reference.rotation = Quaternion.Inverse(transform.rotation) * reference.rotation;
        // next line is optional -- try it with and without
        reference.rotation = Quaternion.FromToRotation(reference.up, Vector3.up) * reference.rotation;
    }
}

Cardboard.SDK.Recenter (); 應該做的伎倆。

Recenter orientation將Cardnter.SDK添加到Receboard()功能,重置頭部跟蹤器,使手機的當前標題成為正向(+ Z軸)。

無法找到API / SDK的文檔,但它位於v0.4.5更新的發行說明中。

您可以旋轉Cardboard Main以指向某個方向。

當我希望應用程序以某種方式啟動時,這對我有用。 由於如果沒有分配目標,CardboardHead在啟動時指向Vector3.zero,我在Start()期間為CardboardMain運行了一個函數,該函數將指向我想要的方向。

當然,如果你因為其他原因已經在旋轉CardboardMain,可以通過創建CardboardHead的父級(CardboardMain的子級)並執行相同的操作來使用相同的方法。

這個問題有點舊,但對於Google VR SDK 1.50+,你可以做到

transform.eulerAngles = new Vector3(newRot.x, newRot.y, newRot.z);
UnityEngine.VR.InputTracking.Recenter();

此外,如果您不想讓您感到困惑,您還需要捕獲GvrEditorEmulator實例並同時重新啟動它。

#if UNITY_EDITOR
        gvrEditorEmulator.Recenter();
#endif

雖然接收GvrEditorEmulator目前似乎不能很好地工作,但如果你禁用它,你會看到主攝像機的重新調整工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM