详细版,以及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)
能够选择其余视频插件。