詳細版,以及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)
可以選擇其他視頻插件。