LinkVR 開發者手冊


 

詳細版,以及LinkVR軟件和unity插件

鏈接:https://pan.baidu.com/s/15xQ7ZGMkJftpJyj4AKeyCg
提取碼:8k67

 
1 版本要求
Unity Pro 2017.3.0 及以上版本(目前暫支持 2017.3-2018.2 版本, 2018.3 及以上版本會盡快支持)
2 使用前須知
1. 打開 LinkVR Unity SDK -> MonoReplacer 文件夾
2. 運行 LinkVR 授權 mono 替換工具 .exe
2.1 Mono 替換工具
3. 替換當前 Unity 版本的 Mono 文件。
1) 點擊瀏覽,會出現瀏覽文件夾的提示框
2) 選擇 Unity.exe 所在的 Editor 文件夾
3) 點擊替換,直到完成替換
2.2 啟動 Mono 替換工具 上海曼恆數字技術股份有限公司
2.3 選擇 Unity Editor 文件夾
2.4 點擊替換
2 上海曼恆數字技術股份有限公司
3
4. 完成替換 Unity Mono 后,在新建或打開當前版本 Unity 工程時,會提示需要授權碼進行授權,
請聯系客服索取或登錄 https://www.gvrtalk.com/form_linkvr.php 申請 60 天試用。
2.5 授權激活 上海曼恆數字技術股份有限公司
4
3 導入插件
1. 授權完成后,打開 Unity ,依次點擊 Assets -> Import Package -> Custom Package... ,選擇
LinkVRSystem_v2.2.0.unitypackage 文件,若您沒有該插件,請聯系客服索取。
3.1 導入 LinkVR 插件 上海曼恆數字技術股份有限公司
5
2. 彈出導入界面,勾選所有文件,點擊“ Import ”按鈕。
3.2 導入界面
3. 在項目資源文件夾中會出現 LinkVR 文件夾,其中 Examples 文件夾中的場景是 LinkVR 的案例場景,
Document 文件夾中的文檔是 LinkVR API 文檔。
3.3 資源文件夾內容 上海曼恆數字技術股份有限公司
6
4 使用 LinkVR
注意:在工具欄中 Tools -> LinkVR 中可以進行項目設置, LinkVR 在插件導入時會自動進行一次項目設
置,若您有特殊需求,不希望項目設置被自動更改,請不勾選 Automatically Check And Set Project Settings
默是勾選狀態。
Automatically Check And Set Project Settings 表示自動檢查並進行項目設置;
Set Project Settings 表示手動設置一次項目設置。
4.1 修復項目設置
設置的內容如下(詳情可查看 LinkVRSettings.cs 腳本):
1) PlayerSettings 中的顯示分辨率對話框選項設置為 Disabled
2) PlayerSettings 中的捕獲單屏設置為 false
3) PlayerSettings 中的 MTRendering (多線程渲染)設置為 false
4) PlayerSettings 中的 Windows 圖形渲染 API 設置為 OpenGLCore Direct3D 11 ,默認是將
OpenGLCore 放首位。
5) PlayerSettings 中的 VR 支持打開,並將設備設置為 Stereo Display (non head-mounted)
6) QualitySettings 中的抗鋸齒屬性設置為 Disabled
7) SyncUploadBufferSize 的值設置為 4
注:如果 Unity 工程在發布時選擇的是采用 OpenGLCore 渲染,務必將 QualitySettings 中的抗
鋸齒屬性設置為不開啟, LinkVR 的雙目渲染方式與 Unity MSAA 硬件抗鋸齒不兼容,導致
應用程序在打開后黑屏。如果 Unity 工程在發布時選擇的是采用 Direct3D 11 渲染,在顏色空
間設置項中務必選擇 Gamma 選項, Linear 顏色空間會破壞立體渲染,這是 Direct3D 的一個
限制。另外,在 Windows7 系統中,采用 Direct3D 11 渲染的應用程序不支持主動立體,在
Windows10 系統中,兩種渲染方式都支持主動立體。 LinkVR Unity SDK 默認采用並推薦的渲染
方式是 OpenGLCore ,因為它在系統方面的兼容性更好。如果項目需要,您可以不勾選
Automatically Check And Set Project Settings ,並手動設置為采用 Direct3D 11 渲染,但需要知
曉其在主動立體方面的限制。 上海曼恆數字技術股份有限公司
7
4.1 LinkVR 系統主入口
1. Hierarchy 面板中選中 FPSController -> LinkVRSystemRoot 物體,可見 LinkVRSystem 腳本,該腳
本主要有四個公有字段。
4.2 LinkVRSystem
1) isDeveloperMode (是否是開發者模式)
它的作用是可以模擬沉浸式追蹤環境,便於開發者進行開發和調試。詳情參考 5.1 開發者模
2) designatedConfigPath (指定的配置文件)
它的作用是案例內容在啟動后針對指定的配置文件進行相應結構的生成和追蹤系統的綁定,
是整個 LinkVR 系統中最核心的部分。
選擇指定的配置文件有兩種方式:
點擊 designatedConfigPath 字段后邊的“ Choose ”按鈕,選擇配置文件(建議將配置文
件放到 StreamingAssets 文件夾中,否則請在打包之后將配置文件手動拷貝到對應的文件
夾內)。
LinkVR 客戶端軟件內生成並選擇對應的配置文件后直接啟動項目案例,配置文件路徑
作為命令行參數傳遞給項目案例,項目案例讀取配置文件路徑,生成相應的結構並綁定
追蹤系統。 上海曼恆數字技術股份有限公司
8
3) cameraTemplete (相機模板)
它的作用是可以設置案例內容運行時動態生成的相機的模板,方便使用相機特效和其他所需
的組件或腳本。
具體做法為:
根據需要更改 FPSController 物體下的 FirstPersonCharacter 物體上的相機組件的參數設置。
根據需要在 FirstPersonCharacter 物體上掛載所需的組件或腳本。
這樣,在案例內容運行后, LinkVR 系統將根據此相機模板動態復制並生成 LinkVR 系統的相機。
當然,您也可以不將相機模板指定為 FirstPersonCharacter 物體,可以新建一個相機物體,根
據需要進行相機參數的設置和組件或腳本的掛載,將相機拖到資源文件夾中作為 prefab 預制
體,然后將該預制體拖到 LinkVRSystem 腳本的 cameraTemplate 屬性上。
4) rootTransform (根節點)
它是采取第一人稱視角時的人物 Body ,需要掛載 CharacterController 組件和
LinkVR.Characters.FirstPersionController 腳本,默認的第一人稱就是它的父物體。
2. Assets –> StreamingAssets -> config.xml 文件中,有四個 LinkVR 相關的配置參數。
1) argsConfig (案例內容啟動時傳入的配置文件路徑參數),切勿隨意修改。
2) defaultLinkVRConfig (默認的配置文件路徑),當指定的配置文件路徑不存在時,使用默認的
配置文件路徑。
3) showCursor (是否顯示鼠標指針),可以直接在 config.xml 文件中修改屬性值來決定案例內
容是否顯示鼠標指針。
4) isFlyMode (漫游是否是飛行模式),可以直接在 config.xml 文件中修改屬性值或在代碼中使
LinkVRMoveManager.Instance.IsFlyMode = value 修改屬性值來決定漫游是否采用飛行模式。
漫游模式,有兩種方式:
剛體模式,運用的是 LinkVR.Characters.FirstPersionController 腳本來控制漫游。
飛行模式,運用的是 LinkVRMoveManager.TranslateFlyMode() 來控制漫游。 上海曼恆數字技術股份有限公司
9
4.2 實現漫游
LinkVR -> FPSController.prefab 拖到場景中,若有其他的 VRPlayer 請移除。(場景中要有地面)即可
實現漫游。正如 Assets -> LinkVR -> Examples -> 001 - SimpleExample 案例所示。
4.3 實現 UI 交互
Link VR 內,提供了 UGUI 的事件監聽器。其中提供了兩種方式,一種是直接實現事件接口,另一種
是利用 EventTrigger 添加事件: AddTriggerListener() 。詳見 Assets -> LinkVR -> Scripts -> Event ->
EventTriggerListener 腳本。如下圖所示:
4.3 EventTriggerListener
1. LinkVR -> FPSController.prefab 拖到場景中,若有其他的 VRPlayer 請移除。
2. 新建腳本,綁定 UI 以及事件,並將腳本拖拽至場景物體上(具體的 UI 交互案例請查看 LinkVR ->
Examples -> 002 - UIExample )如下所示:
public Button button1; 上海曼恆數字技術股份有限公司
public Toggle toggle;
public Slider slider;
public Dropdown dropdown;
public ScrollRect scrollRect;
EventTriggerListener.Get(button1).onHover += (eventData, onHover) =>
{
Log(onHover ? "Button 1 is hovered" : "");
};
EventTriggerListener.Get(button1).onPress += (eventData, onPress) =>
{
if (eventData.button != PointerEventData.InputButton.Left) return;
Log(onPress ? "Button 1 is pressed" : "");
};
EventTriggerListener.Get(button1).onClick += (eventData) =>
{
if (eventData.button != PointerEventData.InputButton.Left) return;
Log("Button 1 is clicked");
};
toggle.onValueChanged.AddListener((bool isOn) =>
{
Log("The toggle state is " + (isOn ? "on" : "off"));
});
slider.onValueChanged.AddListener((float value) =>
{
Log("The value of slider is " + (int)value);
});
dropdown.onValueChanged.AddListener((int value) =>
{
string optionLetter = "";
switch (value)
{
case 0:
optionLetter = "A";
break;
10 上海曼恆數字技術股份有限公司
case 1:
optionLetter = "B";
break;
case 2:
optionLetter = "C";
break;
case 3:
optionLetter = "D";
break;
}
Log("The dropdown option selected is Option " + optionLetter);
});
EventTriggerListener.Get(scrollRect).onBeginOrEndDrag += (eventData, onBeginOrEndDrag) =>
{
if (eventData.button != PointerEventData.InputButton.Left) return;
Log(onBeginOrEndDrag ? "ScrollView is on drag" : "");
};
EventTriggerListener.Get(scrollRect.verticalScrollbar).onBeginOrEndDrag += (eventData,
onBeginOrEndDrag) =>
{
if (eventData.button != PointerEventData.InputButton.Left) return;
Log(onBeginOrEndDrag ? "Scrollbar is on drag" : "");
};
11 上海曼恆數字技術股份有限公司
12
4.4 實現手柄按鍵綁定
G-Motion 手柄在使用代碼獲取手柄輸入時,對應按鍵的序號如下:
4.4 手柄按鍵序號
1. LinkVR -> FPSController.prefab 拖到場景中,若有其他的 VRPlayer 請移除。
2. 新建腳本,綁定手柄按鍵( Joystick 中的 Buttons 數組即對應了 G-motion 手柄的按鍵,以下示例
是以手柄 0 鍵為例),並將腳本拖拽至場景物體上,如下所示:
方式一:
// 獲取手柄實體
JoystickTracker t = LinkVRInput.Joystick;
if (t != null)
{
// 手柄 0
t.Buttons[0].onButtonDown = () =>
{
Debug.Log("ButtonDown");
};
t.Buttons[0].onButtonUp = () =>
{ 上海曼恆數字技術股份有限公司
Debug.Log(“ButtonUp”);
};
t.Buttons[0].onClick = () =>
{
Debug.Log(“Clicked”);
};
}
方式二:
// 手柄 0
if (LinkVRInput.GetButtonDown(0))
{
Debug.Log("ButtonDown");
}
if (LinkVRInput.GetButtonUp(0))
{
Debug.Log("ButtonUp");
}
if (LinkVRInput.GetButton(0))
{
Debug.Log("Button");
}
方式三:
// 結合 UI
public Button button1;
EventTriggerListener.Get(button1).onClick += (eventData) =>
{
// 手柄 0
if (eventData.button != PointerEventData.InputButton.Left) return;
Log("Button 1 is clicked");
};
注:在 LinkVR 系統中,有默認注冊的手柄事件並開啟了手柄射線,請務必先查閱 JoystickBehaviour 類,
該腳本掛載在 LinkVR -> Resources -> Joystick.prefab 上,當 LinkVR 系統初始化時,會默認加載該手柄。其中
Joystick.RaycastDistance 為射線長度; Joystick.LayerMask 為需要相應的層級; Joystick.IsRaycastOn true
否則不發射射線。
13 上海曼恆數字技術股份有限公司
14
5 功能介紹
5.1 開發者模式
isDeveloperMode 表示是否是開發者模式,它利用鍵盤和鼠標對應追蹤手柄的按鍵,作用是可以模擬
沉浸式追蹤環境,便於開發者進行開發和調試。
啟用開發者模式
會自動添加 DeveloperMode 腳本,開發者可以利用鼠標、鍵盤進行操作測試,具體的鼠標鍵盤按鍵與
手柄對應關系在運行后 GUI 上會有提示。
控制狀態可分為控制人物和控制手柄兩種。控制狀態切換鍵為 LeftAlt
Control State Player 時,控制人物移動以及旋轉。
Control State Hand 時,控制手柄移動以及旋轉。
5.1 啟用開發者模式 上海曼恆數字技術股份有限公司
15
5.2 開發者模式的提示信息
不啟用開發者模式
會自動去除 DeveloperMode 腳本。
5.3 不啟用開發者模式
若開發者想在該模式下進行測試,則需要進行以下步驟:
1) 確保連接追蹤外設(連接 Venomx 手柄和對應的接收器) 上海曼恆數字技術股份有限公司
16
5.4 Venomx 手柄 圖 5.5 Venomx 手柄按鍵接收器
2) Assets -> StreamingAssets-> single_screen.xml (默認指定的配置文件)中,將設備地址段的設備
名稱更改為“ Venomx ”,保存
5.6 配置文件設備地址段原內容
5.7 配置文件設備地址段更改后內容
3) 啟動 Assets -> StreamingAssets->VRPN-> VenomxListener.exe ,該程序會自動監聽 Venomx 手柄的按
鍵事件和搖桿軸事件。
5.8 Venomx 監聽程序 上海曼恆數字技術股份有限公司
17
4) 此時,在 Unity 編輯器內當內容運行后,就可以接收到手柄的按鍵事件了。不過只能有按鍵的事
件,位置追蹤和旋轉是沒有數據的,測試過程中需要在 Scene 視窗中手動拖拽和旋轉手柄位置,
所以不能在編輯器中測試手柄按住按鍵拖拽 UI 或物體的操作,只能利用現場環境的追蹤系統了。
注:因版本問題,有可能會出現版本不一致造成此監聽程序獲取不到手柄的輸入。遇到此類問題,請
確認 Venomx 手柄和接收器是否可以匹配版本為 1.0.1 Venomx 監聽程序。 LinkVR 只提供 1.0.1 版本的
Venomx 監聽程序。 上海曼恆數字技術股份有限公司
5.2 抗鋸齒
由於 LinkVR 的雙目渲染方式與 Unity MSAA 硬件抗鋸齒不兼容,導致應用程序在打開后黑屏,因此
要想支持抗鋸齒,可添加抗鋸齒的腳本。當前在 FPSController -> FirstPersonCharacter 相機模板上已經添加
AntiAliasing 腳本來處理抗鋸齒,此時 Camera 上的 MSAA 不要勾選。若開發者想用其他的抗鋸齒方式,
可選擇 Post Processing 插件或其他的抗鋸齒插件。
5.9 抗鋸齒
18 上海曼恆數字技術股份有限公司
5.3 UI 交互
002 – UIExample 案例中,有基本的 UI 交互示例。該案例中,在物體上添加了 UIInteraction 腳本,
該腳本是一個 UI 示例腳本,主要有以下功能:
1. Hover :手柄射線是否懸浮在 UI 按鈕上
2. Button :手柄是否按下、抬起、長按
3. Slider :手柄控制滑動
4. Toggle :手柄控制切換鍵
5. Scrollview :手柄控制卷軸視圖上下滑動
6. Dropdown :手柄控制下拉菜單並選擇菜單中的內容
7. DragAndDrop :手柄控制拖放操作
5.10 UI 交互腳本示例
5.11 UI 交互視圖
19 上海曼恆數字技術股份有限公司
5.4 瞬移功能
003 - TeleportExample 案例中,運行后可以進行瞬移操作。該案例中,在 FPSController ->
LinkVRSystemRoot 上添加了 LinkVRTeleport 腳本,該腳本主要有以下四個字段和三個委托:
1. enableTeleport (是否啟用瞬移)
開發者可根據需要,來判斷是否啟用瞬移功能。
2. enableCameraFade (是否啟用相機淡入淡出特效)
開發者可根據需要,來判斷是否啟用相機淡入淡出特效。
3. teleportButton (瞬移按鍵)
開發者可自定義用哪個按鍵來控制瞬移(默認是手柄上鍵),按下該按鍵,會出現瞬移射線。
4. confirmButton (瞬移確認按鍵)
開發者可自定義是否需要瞬移確認鍵,當該屬性為 None 時,抬起瞬移按鍵,則可直接瞬移至圓圈
點位置;其他情況下,需要按下指定的瞬移確認鍵,即可瞬移。
5. onArcShow (瞬移曲線出現時的回調)
開發者可根據需要,在瞬移曲線出現時添加想實現的事件。
6. onTeleportComplete (瞬移完成時的回調)
開發者可根據需要,在瞬移完成時添加想實現的事件。
7. onTeleportPointComplete (瞬移至瞬移點完成時的回調)
與瞬移完成時的回調互斥,開發者可根據需要,在瞬移至瞬移點完成時添加想實現的事件。
LinkVR 提供了瞬移點預制體: LinkVR->Prefabs->TeleportPoint ,可在場景中放置實現瞬移點功能。
20 上海曼恆數字技術股份有限公司
5.12 瞬移腳本
5.13 TeleportPoint
21 上海曼恆數字技術股份有限公司
5.14 瞬移視圖
22 上海曼恆數字技術股份有限公司
23
6 核心類
以下內容僅簡要介紹,若想了解更多關於 LinkVR Unity 中的腳本編程接口,請查閱插件包中 LinkVR
API 文檔。
6.1 生成 LinkVR 結構
核心方法為 LinkVR.LinkVRDeserializer.Deserialize(Transform root, string path, GameObject
cameraTemplate) LinkVR 系統會自動調用此方法,在指定的 Transform 下生成相應的節點。
6.2 LinkVRGmotion 類的屬性
Instance LinkVR Root 節點單例
IsDeveloperMode :是否是開發者模式
DeviceName :追蹤設備的名稱
DeviceIP :追蹤設備的 IPv4 地址
ScreenType :屏幕屬性 (弧幕 / 直幕)
Head :頭部追蹤節點,對應 G-motion 設備中的眼鏡
Hands :手部追蹤節點列表
Cameras :跟隨頭部追蹤點的相機節點列表
IsServer :是否是主端
ServerIP :配置文件中的主端 IP 地址,在多台渲染機環境下,作為轉發人物位置信息的主端
ClientIP :配置文件中的從端 IP 地址列表,在多台渲染機環境下,作為接收人物位置信息的從端
EyeSeparation :開啟主動立體時,雙眼之間的間距 (注: 1.4 及以下版本有效, 1.5 及以上版本廢
棄, 1.5 及以上版本的眼間距在解析配置文件時已賦值給相機)
HeadIndex :眼鏡標記體的序號
HandIndex :手柄標記體的序號
IsSingleClient :是否采用 1 N 模式 (注: 1.4 及以下版本有效, 1.5 及以上版本廢棄)
Joystick :第一個手柄節點的實例 上海曼恆數字技術股份有限公司
24
6.3 LinkVRMoveManager 類的屬性
Instance LinkVR LinkVRMoveManager 單例
rootTransform LinkVRSystemRoot 節點的父級 Transform ,父級主要用於第一人稱視角
FlySpeed :飛行模式下的飛行速度
FlyRotateSpeed :飛行模式下的旋轉速度
IsFlyMode :是否是飛行模式
6.4 LinkVRCamera 類的屬性
Tracker :頭部結點(父級節點),對應 LinkVRGmotion 中的 Head
IPAddress :相機所屬渲染機的 IPv4 地址,當客戶端的網絡地址與此相同時,此相機節點被激活,
而其他相機節點則保持關閉狀態。
RefScreen :相機成像的屏幕物體,相機位置、屏幕位置、屏幕大小共同決定了相機的投影矩陣,
使相機永遠朝向此屏幕。
Near :相機的近裁剪面
Far :相機的遠裁剪面
StereoSeparation :相機眼間距
ResolutinWidth :屏幕分辨率 -
ResolutionHeight :屏幕分辨率 -
ScreenMappingRowIndex 1 N 模式下,對應屏幕的行號 (注: 1.4 及以下版本有效, 1.5 及以上
版本廢棄)
ScreenMappingColumnIndex 1 N 模式下,對應屏幕的列號 (注: 1.4 及以下版本有效, 1.5
以上版本廢棄)
ViewportRectWidth :相機視口起始水平位置
ViewportRectHeight :相機視口起始垂直位置
ViewportRectX :相機視口寬度
ViewportRectY :相機視口高度 上海曼恆數字技術股份有限公司
25
6.5 JoystickTracker 類的屬性和方法
屬性:
Address VRPN 追蹤點的網絡地址
Channel VRPN 追蹤點的傳輸通道
OnRefresh :刷新委托,可以將自定義的關於手柄刷新時的操作綁定到該委托上
Axises :手柄所有搖桿軸
Buttons :手柄所有按鍵
IsRaycastOn :是否啟用射線,啟用則會觸發 [onEnter] [onExit] [onHover] 事件以及 UI 事件
RaycastDistance :射線長度
LayerMask :響應射線的層級
Ray :手柄發射的射線
Hit :手柄射線所獲取的信息
UIEventCamera :接收 UI 事件的相機
onEnter :手柄射線進入物體時觸發的委托
onExit :手柄射線離開物體時觸發
onHover :手柄射線懸停在物體上時觸發
Refresh :在 FixedUpdate 中刷新手柄物理狀態,包括位置、旋轉、 UI 響應事件的相機的焦點、
射線觸發
RefreshInput :在 Update 中刷新手柄輸入狀態,包括按鍵的點擊、搖桿軸的偏移值
方法:
GetButton(int index) :獲取指定按鍵是否被持續按下
GetButtonDown(int index) :獲取指定按鍵是否被按下
GetButtonUp(int index) :獲取指定按鍵是否被抬起 上海曼恆數字技術股份有限公司
26
6.6 JoystickTracker.Button 類的屬性和方法
屬性:
ClickInterval :規定當前按鍵的點擊事件中按鍵按下和抬起的時間間隔,超過該值則不觸發點擊事
IsDown :當前按鍵的狀態
方法:
onButtonDown :當前按鍵被按下時觸發的委托
onButtonUp :當前按鍵被抬起時觸發的委托
onButtonPress :當前按鍵被持續按下時觸發的委托
onClick :當前按鍵被點擊時觸發委托
SetState :設置當前按鍵的狀態
6.7 JoystickTracker. Axis 類的屬性和方法
屬性:
Threshold :當前軸被判定為改變的閾值,小於該值被判定為偏移值沒有改變
Value :當前軸的偏移值
方法:
onAxisChanged :當前軸被偏移時觸發的委托
SetAxis :設置當前軸的偏移值
6.8 LinkVRInput 類獲取手柄輸入
Joystick :手柄實體
JoystickTransform :手柄實體的 Transform
GetButton(int index) :獲取指定按鍵是否被持續按下
GetButtonDown(int index) :獲取指定按鍵是否被按下
GetButtonUp(int index) :獲取指定按鍵是否被抬起
GetAxise(int index) :獲取搖桿指定軸向的偏移值
GetAxis(AxisType axis) :獲取搖桿指定軸向的偏移值 上海曼恆數字技術股份有限公司
7 案例發布
7.1 設置 PlayerSettings
7.1 設置 PlayerSettings
27 上海曼恆數字技術股份有限公司
7.2 設置 QualitySettings
目前,如果 Unity 工程在發布時選擇的是采用 OpenGLCore 渲染,由於 LinkVR 的雙目渲染方式與 Unity
MSAA 硬件抗鋸齒不兼容,導致應用程序在打開后黑屏,因此需要把抗鋸齒選項設置為 Disabled 。同時,
確保 Async Upload Buffer Size = 4 ,否則會影響立體顯示。
7.2 設置抗鋸齒
28 上海曼恆數字技術股份有限公司
29
7.3 注意事項
1. 在多台渲染機電腦的環境下,動畫系統和粒子系統的同步,需要關閉動畫系統或粒子系統中的隨
機變量,並保證案例內容同時啟動。
2. Unity 發布設置情況
1) 如果 Unity 工程在發布時選擇的是采用 OpenGLCore 渲染,務必將 QualitySettings 中的抗鋸齒
屬性設置為不開啟, LinkVR 的雙目渲染方式與 Unity MSAA 硬件抗鋸齒不兼容,導致應用
程序在打開后黑屏。
2) 如果 Unity 工程在發布時選擇的是采用 Direct3D 11 渲染,在顏色空間設置項中務必選擇
Gamma 選項, Linear 顏色空間會破壞立體渲染,這是 Direct3D 的一個限制。
3) 另外,在 Windows7 系統中,采用 Direct3D 11 渲染的應用程序不支持主動立體,在 Windows10
系統中,兩種渲染方式都支持主動立體。
4) LinkVR Unity SDK 默認采用並推薦的渲染方式是 OpenGLCore ,因為它在系統方面的兼容性更
好。如果項目需要,您可以不勾選 Automatically Check And Set Project Settings ,並手動設置
為采用 Direct3D 11 渲染,但需要知曉其在主動立體方面的限制。
3. Unity Shader 支持情況:
1) 水的 Shader 有限制。
a) 啟用主動立體后造成的影響( OpenGL 環境):
啟動案例后能進入場景,但屏幕閃爍,帶有 Unity Logo 一起閃爍。
b) 規避方法:檢查項目中是否有用到水,給水換一個材質或 Shader
2) 某些 Direct3D 渲染使用的 shader OpenGLCore 渲染環境下不支持。
4. Unity 視頻支持情況:
1) 支持 MovieTextrue
2) 支持 VideoPlayer ,但是視頻不宜過大或過多,否則會導致占用 GPU 過大,立體刷新幀率降
低,造成畫面抖動。
3) 可以選擇其他視頻插件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM