Language:
Share

使用nDisplay在多显示屏上进行渲染

ndisplay_banner.png

互动式内容不仅限于显示在一个屏幕上,或者像VR头显这样的双屏设备上。越来越多的视觉化系统想要通过多个同步显示屏实时渲染内容,更高效地让观众沉浸在游戏世界中。这些系统可能由多个相邻的物理显示屏组成,如Powerwall 显示屏;或者可能使用多个投影仪将3D环境投影到穹顶、倾斜幕墙、曲面屏等物理表面,如Cave 虚拟环境。

虚幻引擎通过一个系统 nDisplay 为这些使用场景提供支持。该系统可以解决将3D内容同时渲染到多个显示屏的一些最重要的挑战:

  • 它有助于完成在网络中的不同计算机上部署和启动多个项目实例的过程,并且这些计算机各自可以渲染到一个或多个显示设备。

  • 它管理根据显示硬件的空间布局,实时计算每个屏幕的视锥体所涉及的所有计算工作。

  • 它确保各个屏幕上显示的内容保持 完全 同步,将确定性内容分发到所有引擎实例。

  • 它提供无源和有源立体声渲染。

  • 它可以受VR跟踪系统输入的驱动,这样显示屏中的视点就可以准确地实时跟随移动观众的视点。

  • 它足够灵活,可以支持任意相对方向的任意数量的屏幕,并可以在任意数量的项目中轻松复用。

nDisplay系统概述

每个nDisplay设置都有一台 计算机和任意数量的附加计算机。

  • 网络中的每一台计算机都运行项目封装可执行文件的一个或多个实例。其中每一个虚幻引擎实例都负责将同一3D场景的一个分段渲染到单一屏幕或显示屏。

  • 主节点还负责从VRPN设备接收输入,然后将该输入复制到所有其他相连的计算机。

nDisplay network overview

为此,nDisplay向普通虚幻系统架构添加了多个组件:

  • 一个网络配置和管理应用程序,名为 nDisplayLauncher。您在网络的一台计算机上运行该应用程序,以自动在网络中的所有计算机上部署和启动您的项目。 

  • 一个独立的侦听器应用程序,名为 nDisplayListener,在每一台计算机上运行。该应用程序侦听从nDisplayLauncher传入的请求,并在本地计算机上处理这些请求。

  • 一个包含所有设置的共享配置文件,nDisplay需要这些设置才能在正确的计算机上启动正确数量的实例,这些计算机各自渲染游戏3D世界中的正确视点,以产生在所有显示屏或投影仪上无缝渲染的错觉。请参阅下文关于nDisplay配置文件

入门

本节介绍如何首次启动和运行nDisplay。准备工作:

  • 确保您的物理设备(屏幕、投影仪等)已正确设置并能正常工作。

  • 确保您打算在主计算机上使用的Windows帐户在您打算在nDisplay网络中使用的 所有 计算机上都有管理权限。

  • 确保您想要在nDisplay网络中使用的所有计算机能够通过端口41000、41001和41002接收TCP/IP通信。(您可以使用不同的端口;请参阅下文更改通信端口 。)

第1步. 设置项目以便使用nDisplay

设置项目以使用nDisplay的最简单方法是根据nDisplay模板项目创建项目:

根据模板创建nDisplay项目

这样会自动启用nDisplay插件,向项目添加一些样本配置文件,并提供已经配置有默认设置的默认关卡。

如果您有现成的项目想要使用nDisplay,可以手动进行相同配置。请参阅下文向现有项目添加nDisplay

第2步. 设置配置文件

您需要将以下信息告知nDisplay:想要在网络中使用的不同计算机、这些计算机将渲染到的屏幕或投影仪的尺寸和分辨率、关卡3D空间中这些屏幕之间的空间关系等。为此,需要创建一个配置文件,用一系列设置表达所有这些信息。

创建该配置文件可能是nDisplay设置中最棘手的部分,因此需谨慎操作。有关详细信息,请参阅下文关于nDisplay配置文件

通常,设置好配置文件后,您只需在网络拓扑发生变化时修改配置文件即可:例如,当您需要更改想要渲染到的计算机时,或者如果您更改真实世界中的屏幕和显示屏的物理布局。

将配置文件保存到项目的内容文件夹中。您将在下一步中用到该文件。

第3步. 封装和部署

每次更改项目中的内容时,都需要封装游戏并部署到已在配置文件中标识的所有计算机。

  1. 在虚幻编辑器中,为Windows烘焙和封装游戏。有关详细信息,请参阅构建操作:烘焙、封装、部署和运行
    然后,在将应用程序部署到从属计算机时,nDisplay会将其复制到每个目标计算机上的相同位置。因此,最好将项目封装到所有机器上都存在的位置。

  2. 在虚幻引擎安装文件夹下面找到 Engine\Binaries\DotNET\nDisplayListener.exe 应用程序。将该应用程序复制到包含您已为游戏封装的 .exe 文件的文件夹。

  3. 将nDisplay配置文件复制到相同文件夹。
    您应将封装项目的 .exe 文件、nDisplayListener.exe 应用程序和配置文件全部并排放在同一个文件夹中。

  4. 运行虚幻引擎安装文件夹下面的 Engine\Binaries\DotNET\nDisplayLauncher.exe 应用程序。

  5. 将封装项目的 .exe 文件添加到“应用程序(Applications)”列表。
    单击 应用程序(Applications) 列表下面的 添加(Add),然后浏览并选择您为项目封装的 .exe 文件。

  6. 指定配置文件。
    单击 配置文件(Config Files) 控件右侧的 添加(Add),然后浏览并选择您的配置文件。

  7. 单击 部署应用程序(Deploy application)
    nDisplay将包含项目可执行文件的文件夹的所有内容复制到您在配置文件中标识的所有其他计算机上的相同位置。

第4步. 启动所有节点

当您将项目成功部署到已在配置文件中标识的所有计算机后,可以使用 nDisplayLauncher 应用程序同时在所有计算机上启动该项目。

  1. 如果您尚未运行 nDisplayLauncher 应用程序,请启动该程序并按上一节所述设置应用程序和配置文件。

  2. 单击 启动侦听器(Start listeners)。这样会在您已在nDisplay配置文件中标识的每台计算机上运行nDisplayListener应用程序。

  3. 当nDisplay确认已在所有计算机上启动所有侦听器后,单击 运行(Run) 以启动所有实例。

完成后:

  1. 单击 终止(Kill) 会自动关闭所有计算机上的所有虚幻引擎实例,或者直接关闭主计算机上运行的虚幻引擎实例即可。

  2. 单击 停止侦听器(Stop listeners) 以关闭所有计算机上的nDisplayListener应用程序。

关于nDisplay配置文件

开始了解并创建自己的nDisplay配置文件的最佳方法是从nDisplay插件提供的示例配置入手。如果您已根据nDisplay模板创建了项目,会在项目文件夹 Content/ConfigExamples 中找到这些文件。如果还未创建,可以在虚幻引擎安装文件夹中的 Templates/TP_nDisplayBP/Content/ConfigExamples 下面找到这些文件。

nDisplay配置文件的结构与它用来渲染视觉化的不同类型组件有直接关系。

  • 您配置的每种不同类型的组件在该文件中都有自己的行,并以您指定的字符串ID标识。当一个配置节需要引用另一个配置节时,使用这些字符串ID。

  • 在该文件中配置的许多组件已在3D空间中定义了位置(通常也定义了旋转)。每个对象的位置和旋转都相对于该对象的 父代。默认情况下,所有对象的父代都是VR空间原点:VR空间中被视为起点的3D场景空间中的任意点。您还可以配置3D空间中特定的命名变换,称为scene_node,它们可以充当一个或多个组件的父代。这有助于简化屏幕、摄像机和其他组件的空间布局。

  • 除非另有说明,否则所有参数都需使用以米和度为单位的值。

摄像机配置

nDisplay一次从一个视点渲染场景。每个潜在的视点都由一个 camera 配置文件定义。

您可以在运行时切换这些视点。每个视点也都可以由跟踪设备驱动。

示例配置:

[camera] id=camera_static loc="X=0.Y=0,Z=1.7" tracker_id=VRPNTracking tracker_ch=0

参数:

参数

说明

id

该摄像机配置的唯一名称。

loc

该摄像机在VR空间中相对于其父代的位置。

tracker_id

input 配置的名称,该配置定义您需要用于随着时间驱动摄像机位置的VR设备。可选参数。如果省略该参数,摄像机位置在VR空间中将保持不变。

tracker_ch

当您提供 tracker_id 时,该参数指定nDisplay将从中读取跟踪数据的设备信道。

parent

您希望用作该对象父代的 scene_node 配置的名称。该参数是可选的。如果指定父代,您在loc参数中设置的值将相对于该父代的位置。如果省略父代,您在loc参数中设置的值将相对于VR根。

屏幕配置

每个不同的输出显示屏都使用在3D VR空间中定义了大小和位置的矩形所定义的视锥体,从当前摄像机位置渲染场景。每个矩形都由一个 screen 配置定义。通常,每个投影屏在VR空间中都有与您用来渲染的物理屏幕相同的尺寸。

屏幕轴心点始终是最中心点。

示例配置:

该定义描述的是3*3米并直接位于其父代前面的屏幕。由于屏幕轴心点位于size参数定义的矩形中心,因此我们在Z轴上添加1.5米的偏移,以将屏幕向上移动一半高度。

[screen] id=screen_front loc="X=1.5.Y=0,Z=1.5" rot="P=0,Y=0,R=0" size="X=3,Y=3" parent=screens

要将屏幕定义在观众左侧,将其向左移动(Y轴用负值),并围绕着局部Y轴旋转(yaw)。 

[screen] id=screen_left loc="X=0,y=-1.5,Z=1.5" rot="P=0,Y=-90,R=0" size="X=3,Y=3" parent=screens

参数:

参数

说明

id

该屏幕配置的唯一名称。

loc

该屏幕中心在VR空间中相对于其父代的位置。

rot

屏幕所面向方向的Pitch(P)、Yaw(Y)和Roll(R)角度,以度为单位。

size

屏幕矩形的局部X和Y轴的总大小,以米为单位。

parent

您希望用作该对象父代的 scene_node 配置的名称。该参数是可选的。如果指定父代,您在loc和rot参数中设置的值将相对于该父代的位置。如果省略父代,您在loc和rot参数中设置的值将相对于VR根。

集群节点配置

上述定义的每个投影屏通常都由虚幻引擎应用程序的不同实例渲染。对于每个实例,您需要定义一个 cluster_node 配置。每个集群节点都引用它应该渲染的投影屏配置。 

cluster_node 配置还定义将运行该应用程序实例的计算机的主机名或IP地址。您可以为每个cluster_node配置设置不同的物理计算机,也可以让多个cluster_node配置在同一个主机上运行。

示例配置:

该示例配置主节点(每个网络一个):

[cluster_node] id=node_front addr=192.168.0.1 screen=screen_front viewport=vp_front sound=true port_cs=41001 port_ss=41002 master=true

该示例显示非主集群节点:

[cluster_node] id=node_left addr=192.168.0.2 screen=screen_left viewport=vp sound=false

参数:

参数

说明

id

该集群节点配置的唯一名称。

addr

将运行该虚幻引擎实例的计算机的IP地址。这必须是IPv4地址。不支持IPv6。

screen

screen 配置的名称,该配置定义应该由该虚幻实例负责渲染的投影屏。

viewport

viewport 配置的名称,该配置定义该虚幻引擎实例运行的应用程序窗口中的渲染框架位置。

sound

确定该虚幻引擎实例是否应播放声音。这是可选参数,默认值为false

Winx WinY

指定应用程序窗口左上角在桌面上的位置,以屏幕空间像素为单位。

ResX ResY

指定应用程序窗口的大小,以屏幕空间像素为单位。确保您用于该集群节点的视口定义不会超过该窗口的大小。

port_cs port_ss

port_ss 集群同步端口,主节点必须使用这些端口来与集群中的其他节点通信。这是可选参数:默认值为1400114002

master

确定该虚幻引擎实例是否是集群的主节点。只有一个cluster_node节可以将该参数设置为true。这是可选参数,默认值为false

视口配置

以上所述的每个 cluster_node 配置都引用 viewport 配置,视口配置定义游戏窗口中将映射渲染框架的矩形区域。 

通常,每个具有不同分辨率设置的显示设备都需要一个不同的视口配置。例如,如果所有显示屏都相同,则只需一个视口配置,您可以从所有集群节点配置引用该视口配置。

一般而言,视口从应用程序窗口左上角算起,宽度和高度已经设定好,这样就可以填充父窗口。但是,在某些情况下,您可能需要在父应用程序窗口中偏移视口。例如,如果需要设置两个部分重叠的投影仪,就需要这样操作。

示例配置:

[viewport] id=vp_left X=0 Y=0 width=1920 height=1080

参数:

参数

说明

id

该视口配置的唯一名称。

X Y

视口左上角在主应用程序窗口的屏幕空间中的坐标,以像素为单位。

width height

渲染框架的高度和宽度,以像素为单位。该尺寸不应该大于使用该视口的任何 cluster_node 配置的size参数所定义的游戏窗口大小。

场景节点配置

在配置文件中,您可以定义场景节点的层级,每个场景节点表示3D空间中的一个变换。如果您在配置文件中设置的任何对象在3D空间中需要有位置和旋转,例如摄像机或投影屏,可以使用其中一个 scene_node 配置作为其父代。这样可以帮助您定义视觉化系统所有不同组件之间的空间关系。

像摄像机一样,场景节点也可以由VR跟踪设备驱动。

示例配置:

以下代码行定义两个节点的层级,其中子节点在其父代前面有2米偏移。

[scene_node] id=vr_space_root loc="X=0.Y=0,Z=0" rot="P=0,Y=0,R=0"
[scene_node] id=walls_front_group loc="X=2.Y=0,Z=0" rot="P=0,Y=0,R=0" parent= vr_space_root

以下代码行显示了配置为由VR跟踪设备驱动的场景节点:

[scene_node] id=cave_wand loc="X=0, Y=0,Z=1" tracker_id=CaveTracking tracker_ch=1

参数:

参数

说明

id

该场景节点配置的唯一名称。

loc

该场景节点在VR空间中相对于其父代的位置。

rot

场景节点所面向方向的Pitch(P)、Yaw(Y)和Roll(R)角度,以度为单位。

parent

您希望用作该场景节点父代的另一个 scene_node 配置的名称。该参数是可选的。如果指定父代,您在 locrot 参数中设置的值将相对于该父代的位置。如果省略父代,您在 locrot 参数中设置的值将相对于VR根。

tracker_id

input 配置的名称,该配置定义您需要用于随着时间驱动场景节点位置的VR设备。可选参数。如果省略该参数,场景节点位置和旋转将在VR空间中相对于其父代保持不变。

tracker_ch

当您提供 tracker_id 时,该参数指定nDisplay将从中读取跟踪数据的设备信道。

输入配置

每个 camera 和每个 scene_node 可以选择性由VR跟踪设备驱动。为此,您为每个VR设备定义一个 input 节,并在 camerascene_node 配置中引用该节。

示例配置:

[input] id=CaveTracking type=tracker addr=Tracker0@192.168.0.1 loc="X=-1.5,Y=0,Z=3.4" rot="P-0,Y=0,R=0" front=X right=Y up=-Z

参数:

参数

说明

id

该输入设备配置的唯一名称。

type

该VRPN输入设备的类型:

  • tracker表示跟踪设备。

  • analog表示产生轴数据的设备。

  • button表示产生布尔按钮数据的设备。

addr

该VRPN输入设备的类型: 负责处理该特定设备的VRPN服务器的地址。该值必须采用以下格式: DEVICENAME@SERVER_ADDRESS 其中:

  • DEVICENAME是该设备的VRPN名称。

  • SERVER_ADDRESS是VRPN服务器的IPv4地址。

remap

该参数重新映射跟踪设备的信道编号,以便在虚幻中可以从不同信道读取其输入。例如,某些控制器使用信道0进行头部跟踪,信道1用于控制器,其他则将信道1用于头部跟踪,信道5用于控制器。来回切换这两类设备可能需要更改配置和运行时代码以便匹配。为避免在此类情况下进行任何其他更改,可以使用该参数来重新映射信道。 例如,值: remap[0:1, 5:2] 会将跟踪设备信道1的数据转发到虚幻中的信道0,将跟踪设备信道2的数据转发到虚幻中的信道5。

type=tracker的设备还接受以下附加参数:

参数

说明

loc rot

类似于其他配置节,locrot 参数指定该输入设备在局部空间中的位置和旋转偏移。但是,对于输入设备,通常使用这些偏移来调整跟踪设备在VR空间中的根位置,以匹配您希望它在场景节点层级中应该具有的位置。

front right up

这些参数将虚幻中跟踪器的每个局部轴(前、右和上)与跟踪器坐标系中的相应轴匹配。虚幻使用右手惯用Z轴向上的坐标系。如果您的跟踪器使用其他坐标系,可以使用这些参数将跟踪器坐标系映射到虚幻坐标系。 例如,以下代码行将跟踪器Y轴映射到虚幻前(X)轴,将跟踪器X轴映射到虚幻右(Y)轴,将跟踪器负Z轴映射到虚幻上(Z)轴: front=Y right=X up=-Z

常规配置

general 配置行包含用于控制nDisplay集群总体运行的参数。

示例配置:

[general] swap_sync_policy=1

参数:

参数

说明

swap_sync_policy

确定输出在网络中的同步方式。

  • 0:不同步。

  • 1:软件交换同步

  • 2:NV交换锁定(仅适用于使用OpenGL的NVIDIA卡渲染)

立体声配置

stereo 配置行设置立体声渲染的可选全局参数。

示例配置:

[stereo] eye_swap=True eye_dist=0.064

参数:

参数

说明

eye_swap

确定是否交换为左右眼生成的图像。可选参数。默认值为false。

eye_dist

用于调整为左右眼生成的图像偏移的瞳距值,以米为单位。

结构

以上概述的不同配置类型之间的引用即暗含了结构,红色箭头是必须存在的引用,绿色箭头是可选引用:

配置引用结构

示例

为了举一个具体示例,打开 wall_flat_3x2.cfg 样本文件。该文件定义了六个投影屏,每个屏幕将由单独的物理计算机渲染。

它还定义了多个scene_node,它们共同形成了以下层级:

nDisplay示例场景层级

该层级中节点的相对位置和旋转决定了摄像机的布局和VR空间中的六个屏幕的布局,因此六个投影屏是并排放置的,距离摄像机1米。 

单击查看大图。

请注意,该配置暗示着每对相邻的投影屏之间存在一小块间隙,以便容纳渲染场景的显示器边缘。

蓝图API

您可以使用蓝图API控制nDisplay系统在游戏运行时逻辑中的行为。

要在该API中公开用于管理集群、输入和渲染的函数:

  1. 在蓝图中创建新的 显示集群(Display Cluster)>获取插件API(Get Plugin API) 节点。

  2. 输出API(Out API) 引脚拖出一根引线,并在 显示集群(Display Cluster) 类别下查找所需选项:
    nDisplay获取插件API

Actor复制

所有nDisplay系统输入都只有主节点处理。如果不进行复制,则只有主节点会看到场景变化。因此,主节点需要能够将更改复制到nDisplay网络的所有其他部分。

为此,nDisplay提供了两种可以连接到Actor的不同组件:

  • DisplayClusterSceneComponentSyncParent 组件跟踪其父组件的3D变换更改,并将这些更改推送到网络中的其他集群节点。
    nDisplay系统使用的默认DisplayClusterPawn使用该组件。

  • DisplayClusterSceneComponentSyncParent 组件跟踪其子组件的3D变换更改,并将这些更改推送到网络中的其他集群节点。

例如,在下面显示的Actor中,DisplayClusterSceneComponentSyncParent_DefaultSceneRoot 组件跟踪并复制其父Actor在关卡中四处移动时它的3D变换的更改。DisplayClusterSceneComponentSyncThis 组件跟踪并同步其子立方体组件相对于场景图形根移动时的运动。

DisplayClusterSceneComponentSyncParent

如果您的场景中包含可能在游戏期间受到影响的其他Actor,必须使用上述两个组件之一来将这些更改复制到所有节点。为此:

  1. 在关卡视口或 世界大纲视图 面板中选择需要复制的Actor。

  2. 细节(Details) 面板中,单击 添加组件(+ Add Component)。搜索 DisplayClusterSceneComponentSyncParentDisplayClusterSceneComponentSyncThis 并从列表中选择它。
    添加nDisplay同步组件

这些组件不执行完全复制。只会将父Actor或子组件的变换发送到集群。

使用VRPN输入

要将VRPN 输入设备与nDisplay一起使用:

  1. 在网络中安装VRPN服务器。
    当前版本的nDisplay需要VRPN 版本33

  2. 在服务器的 vrpn.cfg 文件中(该文件位于服务器可执行文件附近),启用输入设备并指定名称。

  3. 在nDisplay配置文件中,添加一个条目来设置VRPN输入设备,调整它的坐标系并将其连接到摄像机。

以下示例演示了设置ART DTrack跟踪系统的一种方法:

  • 在vrpn服务器exe附近的Vrpn.cfg中,添加以下行:

    vrpn_Tracker_DTrack DTrack  5000    

    这样会让VRPN接收来自于端口5000的DTrack输入,并将它们映射到名为DTrack的VRPN设备。(确保将DTrack配置为在端口5000上输出其跟踪数据。)

  • 在nDisplay配置文件中,添加以下行:

    [input] id=CaveTracking type=tracker addr=DTrack@127.0.0.1 loc="X=1.32,Y=0,Z=0.93735" rot="P=0,Y=0,R=0" front=Z right=-X up=Y
    [camera] id=camera_dynamic loc="X=0,Y=0,Z=0" tracker_id=CaveTracking tracker_ch=0

    第一行创建名为CaveTracking的nDisplay输入设备,它从VRPN地址DTrack@127.0.01获取数据。您必须在这里调整坐标系以适应您的跟踪系统和偏移。第二行告知nDisplay在信道0上从CaveTracking输入获取摄像机位置。

要从游戏代码管理VRPN设备的状态,并检测按按钮等输入事件:

  • 在C++中,使用IDisplayClusterInputManager类。

  • 在蓝图中,使用 显示集群(DisplayCluster)>输入(Input) 下面的节点。确保您在节点中设置的ID与配置文件中设置的ID值相匹配。例如:
    ndisplay_vrpn_api.png

更改通信端口

nDisplay系统主机之间通过三个TCP/IP端口通信:14000、14001和14002。您需要确保在所有计算机上打开这些端口。

如果想要自己更改端口号,可以在以下位置进行更改。

  • 运行时同步端口。主节点使用两个端口与集群中的其他节点同步数据。要设置这两个端口,在配置文件中用于定义主节点的 cluster_node 行上包含 port_csport_ss 配置参数。例如:

    [cluster_node] id=node_front addr=192.168.0.1 screen=screen_front viewport=vp_front port_cs=42001 port_ss=42002 master=true
  • nDisplay Launcher和nDisplay Listener端口。nDisplay Launcher和nDisplay Listener都需要配置为使用相同的通信端口。您可以在启动这些应用程序时,在命令行上进行指定。
    当您启动nDisplay Launcher时,使用listener_port参数。例如: nDisplayLauncher.exe listener_port=15003

此外,您还需要在每个主机上使用port参数自行启动nDisplayListener应用程序。例如:

nDisplayListener.exe port=15003

向现有项目添加nDisplay

将现有项目设置为使用nDisplay:

  1. 启用nDisplay插件。
    在虚幻编辑器中,从主菜单中选择 编辑(Edit)>插件(Plugins)。搜索“nDisplay”,选中 启用(Enabled) 复选框。

  2. 为项目启用nDisplay。
    从主菜单中选择 编辑(Edit)>项目设置(Project Settings),找到 插件(Plugins)> nDisplay 部分。选中 启用(Enabled) 复选框。

  3. 还是在 项目设置(Project Settings) 窗口中,转至 项目(Project)>说明(Description) 部分,选中 设置(Settings)>使用无边框窗口(Use Borderless Window) 复选框。

  4. 重新启动虚幻编辑器,重新打开项目,然后打开项目的默认关卡。

  5. 场景设置(World Settings) 面板中,将 游戏模式(Game Mode)>游戏模式覆盖(GameMode Override) 设置为 DisplayClusterGameModeDefault

  6. 向关卡添加新的 DisplayClusterSettings Actor。
    您可以在 模式(Modes) 面板上的 所有类(All Classes) 列表中找到这个Actor。

  7. 继续完成上文入门 中所述的其余设置操作。

nDisplay Launcher UI参考

本节介绍nDisplay Launcher用户界面中提供的所有设置和选项。

控件

描述

渲染API(Render API)

指定下次单击“运行(Run)”时使用的渲染API。

渲染模式(Render mode)

指定nDisplay产生的输出类型:

  • 单视场(Monoscopic):无立体声渲染

  • 帧连续(Frame sequential):有源四缓冲立体声

  • 并排(Side-by-side):无源水平一致立体声

  • 自顶向下(Top-bottom):无源垂直一致立体声

单视场(Monoscopic)不需要任何特定的硬件功能,但帧连续(Frame sequential)需要。确保您的显示设备、GPU和驱动程序设置与您选择的渲染模式兼容。

使用所有可用核心(Use All Available Cores)

强制每个虚幻实例使用其主机上所有可用的处理器。选择该选项时,nDisplay Launcher会在用于启动每个实例的命令行中添加USEALLAVAILABLECORES选项。

无纹理流送(No Texture Streaming)

禁用每个虚幻实例的纹理流送。始终加载最高质量的纹理。选择该选项时,nDisplay Launcher会在用于启动每个实例的命令行中添加NOTEXTURESTREAMING选项。

自定义命令行参数(Custom command line arguments)

如果想要nDisplay Launcher在用来启动每个虚幻实例的命令行上传递任何其他参数,请在此注明这些参数。有关详细信息,请参阅命令行参数 参考。

应用程序(Applications)

列出通过nDisplay Launcher运行的所有封装的虚幻应用程序。使用“添加(Add)”和“删除(Delete)”按钮编辑该列表。有关更多信息,请参见上文第3步. 封装和部署

配置文件(Config Files)

列出您已经为nDisplay Launcher设置的所有配置文件。使用“添加(Add)”和“删除(Delete)”按钮编辑该列表。有关更多信息,请参见上文第3步. 封装和部署

运行(Run)

在您已从 配置文件(Config Files) 列表中选择的文件中配置的所有主机上,启动您从 应用程序(Applications) 列表中选择的应用程序。

终止(Kill)

关闭nDisplay Launcher启动的所有虚幻引擎实例。

启动侦听器(Start listeners)

在您从 配置文件(Config Files) 列表中选择的文件中配置的每台主机上启动一个nDisplay Listener应用程序实例。

停止侦听器(Stop listeners)

关闭该nDisplay Launcher启动的所有nDisplay Listener应用程序实例。

部署应用程序(Deploy application)

将您从 应用程序(Applications) 列表中选择的应用程序复制到您从 配置文件(Config Files) 列表中选择的文件中配置的每台主机。

复制(Copy)

将左侧日志窗口中列出的所有消息复制到剪贴板。

清理(Clean)

从左侧日志窗口中清除所有消息。