詳細版,以及LinkVR軟件和unity插件php
連接: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)
能夠選擇其餘視頻插件。