nDisplay配置文件参考

nDisplay配置文件中所有可用设置的参考指南。

Windows
MacOS
Linux

你可以在一个配置文件中定义nDisplay系统的大部分内容。这个文件包含很多信息,例如:网络中的计算机组成情况、虚幻引擎在每台计算机上所需渲染的窗口和视口的情况、每个视口应渲染虚拟世界的哪个部分、希望接受的输入设备类型等内容。

本页将介绍nDisplay配置文件中的所有可用设置。

想要上手并创建自己的nDisplay配置文件,最佳办法是从nDisplay插件提供的配置示例入手。如果你已根据nDisplay模板创建项目,你会在项目文件夹 Content/ExampleConfigs 中找到这些文件。如果你还未创建,你可以在虚幻引擎安目录的 Templates/TP_nDisplayBP/Content/ExampleConfigs 下面找到这些文件。

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

  • 你配置的每种不同类型的组件在文件中都有自己的行,并且会以你指定的字符串ID标识。当某个配置部分需要引用其他部分时,请你使用这些字符串ID。

  • 你在文件中配置的许多组件都已经在虚拟3D空间中定义了位置(通常也定义了旋转度)。每个对象的位置和旋转度都是相对于该对象的 父对象。默认情况下,所有对象的父对象都是VR空间原点:VR原点可以是3D世界场景空间中的任意一点,用于表示VR空间的起始点。你还可以在3D空间中配置拥有命名的特定变换,也就是所谓的scene_node,它们可以充当一个或多个组件的父项。这有助于简化屏幕、摄像机和其他组件的空间布局。
    如需了解如何使用scene_node构建3D变换的层级结构,并且让它们在虚拟空间中从同一点开始,请参阅下文配置文件场景结构示例 部分。

  • 除非另有说明,否则所有和虚拟3D空间或真实物理空间有关的参数,在测量单位上都以"米"和"度"为单位。这包括屏幕、场景节点、摄像机等。

  • 所有与屏幕空间有关的参数,在测量单位上都以"像素"为单位。这包括窗口和视口。

群集节点配置

每当你需要在nDisplay网络中使用一个不同的虚幻引擎应用实例,你都需要定义一个 cluster_node 配置。每个cluster_node配置都必须包含一个引用,以便引用 窗口 配置部分,后者负责定义主应用程序窗口的属性。

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

配置示例:

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

[cluster_node] id=node_front addr=192.168.0.1 window=wnd_LT sound=true port_cs=41001 port_ss=41002 master=true

本例显示一个非主群集节点:

[cluster_node] id=node_left addr=192.168.0.2 window=wnd_large sound=false

参数:

参数

是否必填?

默认值

说明

id

必填

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

addr

必填

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

窗口(window)

必填

窗口 配置的名称,该配置为你的虚幻引擎应用程序的此实例定义主窗口的大小和位置。

音效(sound)

可选

false

确定此虚幻引擎实例是否播放音效。可选;默认值为 false

port_cs

可选

14001

主节点用于与群集中的其他节点通信的端口,旨在实现群集同步。port_ss 用于交换同步;port_ce 用于群集事件。可选;默认值为 140011400214003

port_ss

可选

14002

主节点用于与群集中的其他节点进行通信的端口,旨在实现交换同步。

port_ce

可选

14003

主节点用于与群集中其他节点进行群集事件通信的端口。

主(master)

可选

false

确定此虚幻引擎实例是否为群集的主节点。只有一个 cluster_node 部分可以将该参数设置为 true

gpu

可选

确定GPU索引,供虚幻引擎实例用于渲染。

以这种方式设置GPU实例等同于使用 r.GraphicsAdapter 控制台变量。

窗口配置

每个 窗口(window) 配置都会为虚幻引擎应用程序实例的主窗口定义一组属性。当nDisplay启动你的应用程序时,你可以使用它来配置窗口的初始大小和位置等设置,以及该窗口是否应该占据整个屏幕。

你还可以提供一个或多个 视口 配置,这些配置辨识主应用程序窗口中的特定区域,nDisplay将用场景的渲染填充这些区域。

配置示例:

本配置示例了一个包含单个视口的应用程序窗口:

[window] id=wnd_one fullscreen=false WinX=0 WinY=0 ResX=640 ResY=480 viewports=vp_LT

本配置示例了一个包含四个独立视口的应用程序窗口:

[window] id=wnd_four fullscreen=false WinX=0 WinY=0 ResX=640 ResY=480 viewports="vp_LT,vp_RB,vp_LB,vp_RT"

参数:

参数

是否必填?

默认值

说明

id

必填

此窗口配置的唯一名称。

全屏(fullscreen)

可选

false

确定此窗口是否应在全屏模式下运行。如果将此值设置为 false,你必须提供下述 WinXWinYResXRexY 设置。

WinX

可选

0

指定桌面应用程序窗口左上角的位置 X,以屏幕空间像素为单位与屏幕左边缘的距离。

WinY

可选

0

指定桌面应用程序窗口左上角的 X 位置,以屏幕空间像素为单位与屏幕顶部边缘的距离。

ResX

必填

0

指定应用程序窗口的水平大小,以屏幕空间的像素为单位。当 全屏 设置为 false 时,此值是必需值。当 全屏 设置为 true 时,此值可忽略。

ResY

必填

0

指定应用程序窗口的垂直大小,以屏幕空间的像素为单位。当 全屏 设置为 false 时。当 全屏 设置为 true 时,此值可忽略。

视口(viewports)

必填

引用一个或多个 视口 配置分段,这些配置分段定义主应用程序窗口的区域,nDisplay应该用渲染的场景视图填充这些区域。
如果你指定了多个视口,则必须使用逗号分隔的 视口 配置部分名称列表,该列表用引号括起来。请参阅上文 配置示例 部分下的 wnd_four 示例。该列表的顺序不影响视口的视觉顺序或位置。父窗口中视口的位置在已命名的 视口(viewport) 配置中定义。

确保你使用的视口定义不超过窗口的大小。

后期处理(postprocess)

可选

指定一个或多个 后期处理 配置分段的ID,此类分段定义了你需要应用至最终生成输出图像的后期处理操作,且该步骤必须在nDisplay将其渲染至窗口之前完成。可选;仅在需要先转换最终图像再渲染时使用此参数。若你有多个后期处理配置,则nDisplay按顺序转换。

视口配置

上文所述的各个 窗口 配置,都会引用一个或多个 视口 配置,每个视口配置都会定义游戏窗口的一个矩形区域,以便nDisplay填充渲染的场景视图。

一般而言,视口从应用程序窗口左上角算起,宽度和高度已经设定好,这样就可以填充父窗口。但是,在某些情况下,你可能需要在父应用程序窗口中偏移视口。例如,如果你需要设置两个部分重叠的投影仪,或者需要一个应用程序窗口在不同位置上托管多个独立的视口,那么你可能需要这样做。

配置示例:

[viewport] id=vp_LT X=0 Y=0 width=300 height=220 projection=proj_simple_LT

参数:

参数

是否必填?

默认值

说明

id

必填

此视口配置的唯一名称。

X

可选

0

距主应用程序窗口左边缘的视口左上角的坐标,以屏幕空间像素为单位。注意,这些值相对于应用程序窗口的左上角,而非相对于屏幕本身的左上角。

Y

可选

0

距主应用程序窗口顶部边缘的视口左上角的坐标,以屏幕空间像素为单位。注意,这些值相对于应用程序窗口的左上角,而非相对于屏幕本身的左上角。

宽度(width)

必填

0

渲染帧的宽度,以像素为单位。该尺寸不得大于使用该视口的任何 窗口 配置的 大小(size) 参数所定义的游戏窗口大小。

高度(width)

必填

0

渲染帧的高度,以像素为单位。该尺寸不得大于使用该视口的任何 窗口 配置的 大小(size) 参数所定义的游戏窗口大小。

投影(projection)

必填

投影 配置的名称,其定义了应绘制到此视口的虚拟场景渲染视图。

摄像机(camera)

可选

你要强制此视口显示的 摄像机 配置分段。视口默认从nDisplay当前所用 摄像机 分段的位置渲染场景。但你可以使用此参数覆盖默认nDisplay摄像机,并强制此视口从另一 摄像机 分段中配置的视角渲染场景。

buffer_ratio

可选

1.0

值为 01 之间,用于缩放nDisplay渲染此视口时所用渲染目标纹理的尺寸。减小此值可有效降低nDisplay生成图像的分辨率。最终图像质量会因此下降,但渲染速度更快。

rtt

可选

false

确定此视口是否渲染到纹理。

投影配置

上述所有 视口 配置都是指 投影 配置,负责定义需要在视口中绘制的渲染图像。

通常你将使用 简单 投影类型,利用此nDisplay配置文件中其他地方的 屏幕 配置分段所定义的视锥,从当前摄像机位置渲染虚拟世界。

其他投影类型,如 easyblendmpcdi,会使用其他方法来定义视口的渲染内容,并可在将图像渲染到矩形视口之前,引入其他修正或应用其他渲染技术。比如,投影可挤压、拉伸或扭曲图像,使其以较自然的方式显示在曲面上。

配置示例:

下例属于最简单的用例,它将屏幕配置定义的视锥体 scr_LT 直接路由到视口,而不扭曲或修改渲染图像。

[projection] id=proj_simple_LT type=simple screen=scr_LT

下例展示如何使用 easyblend 投影类型,将内容渲染到"可扩展显示"(Scalable Display)配置文件中定义的表面上。

[projection] id=proj_easyblend_1 type="easyblend" file="D:\eb_data\ScalableData.pol_1" origin=easyblend_origin_1 scale=0.1

下例展示如何使用 mpcdi 投影类型,将内容渲染至MPCDI配置文件中定义的表面上。

[projection] id=proj_mpcdi_LT type="mpcdi" file="D:\rot90_flat.mpcdi" buffer="Mosaic" region="Monitor_R" origin=mpcdi_origin

下例展示如何通过指定 .png 文件所定义的alpha混合贴图,使用 mpcdi 投影类型将内容渲染至指定 .pfm 几何体文件定义的曲面。

[projection] id=proj_mpcdi_LT type="mpcdi" pfm="D:\geom_displayLeft1.pfm" alpha="D:\Left1blend.png" alpha_gamma=2 origin=mpcdi_origin

参数:

参数

是否必填?

默认值

说明

id

必填

此投影配置的唯一名称。

类型(type)

必填

定义nDisplay如何生成其在视口中绘制渲染图像的投影类型。此参数接受以下值:

  • simple:将 屏幕 配置分段定义的虚拟世界上的视锥渲染至视口。

  • easyblend:将使用可扩展显示技术 中的工具校准虚拟世界视图渲染至视口。

  • mpcdi:将使用MPCDI 校准的虚拟世界视图渲染至视口。

type=simple 还接受以下额外参数的投影:

参数

是否必填?

默认值

说明

屏幕(screen)

必填

定义3D空间视锥的 屏幕 配置的名称,虚幻引擎应用程序应将该视锥渲染至此视口中。

type=easyblend 还接受以下额外参数的投影:

参数

是否必填?

默认值

说明

文件(file)

必填

可扩展显示校准文件的路径和文件名(.ol.pol 扩展名),该文件定义将要投影此视口的表面。

原点(origin)

可选

定义投影起始点的 scene_node 配置分段的ID。它将可扩展显示校准文件中定义的参考框架映射至虚幻引擎关卡中的虚拟空间。

比例(scale)

可选

1.0

用于投影的比例因子。该值取决于你用于校准EasyBlend的单位。如果你使用米,则将此值保留为 1.0。如果是分米,则使用 0.1。如果是厘米,则使用 0.01。如果是英寸,则使用 0.0254

type=mpcdi or type=picp_mpcdi 还接受以下额外参数的投影:

参数

是否必填?

默认值

说明

原点(origin)

可选

定义投影起始点的 scene_node 配置分段的ID。它将MPCDI校准文件(或 .pfm 几何体文件)中定义的参考框架映射至虚幻引擎关卡中的虚拟空间。

选项 1:使用MPCDI文件

文件(file)

必填

.mpcdi 文件的路径和文件名,该文件定义将投影此视口的表面几何结构。

缓冲区(buffer)

必填

.mpcdi 文件中缓冲区的ID,该文件定义此视口的投影区域。

区域(region)

必填

上文所设的,要渲染至的缓冲区内区域ID。

选项 2:使用显式数据

pfm

必填

指定包含投影几何体的 pfm 文件。

比例(scale)

可选

1.0

提供用于几何体的比例因子。

ue4space

可选

false

指示你的.pfm文件中的几何体是否已在虚幻引擎坐标系中表示。

alpha

可选

.png 文件的路径和文件名,用作alpha混合贴图,定义投影强度。可选参数。

alpha_gamma

可选

如果你使用 alpha 设置,可使用 alpha_gamma 设置提供alpha gamma的乘数。可选参数。

beta

可选

如果你使用 alpha 设置,还可使用 beta 设置提供 .png 文件的路径和文件名,作为beta混合贴图。此步骤定义了黑标准调整。可选参数。

nDisplay当前仅支持MPCDI 1.0 版本,以及 2DA3D(或 高级3D)配置文件类型。

type=manual 时的投影还接受以下参数,以定义nDisplay应渲染的视图旋转和视锥。可使用矩阵或角度配置视锥。

参数

是否必填?

默认值

说明

rot

可选

0,0,0

视图旋转。表示为pitch、yaw和roll值。例如,rot="P=0,Y=0,R=0"

选项 1:使用矩阵(单视场)

矩阵(matrix)

必填

若使用单视场渲染,用此4x4矩阵定义视锥。

选项 2:使用矩阵(立体)

matrix_leftmatrix_right

必填

若使用立体渲染,用此4x4矩阵组定义左右眼的视锥。例如,matrix_left="[0.5 0 0 0] [0 0.999999 0 0] [1 0 0 1] [0 0 1 0]" matrix_right="[0.500001 0 0 0] [0 1 0 0] [-1 0 0 1] [0 0 1 0]"

使用角度

选项 3:使用视锥(单视场)

frustum

必填

若使用单视场渲染,用此属性定义视锥左侧、右侧、顶部和底部的角度。例如,frustum="l=0 r=15 t=10 b=-10"。值以相对于视图矢量的度数设置。

选项 3:使用视锥(立体)

matrix_leftmatrix_right

必填

若使用立体渲染,用这两个属性定义左右眼视锥左侧、右侧、顶部和底部的角度。例如,frustum_left="l=-15 r=0 t=10 b=-10" frustum_right="left=0 right=15 top=10 bottom=-10"。值以相对于视图矢量的度数设置。

type=camera 不接受任何其他参数的投影。你可以使用蓝图或C++ API,在运行时针对投影策略设置摄像机。

type=meshtype=picp_mesh 不接受任何其他参数的投影。你可以使用蓝图或C++ API,在运行时针对投影策略设置静态网格体组件。

屏幕配置

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

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

配置示例:

该定义描述的是3*3米并直接位于其父项前面的屏幕。由于屏幕轴心点位于大小参数定义的矩形中心,因此我们在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

可选

0,0,0

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

rot

可选

0,0,0

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

大小(size)

必填

0,0

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

父项(parent)

可选

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

tracker_id

可选

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

tracker_ch

可选

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

后期处理配置

后期处理 配置定义虚幻引擎实例为 窗口 生成的图像在渲染前如何进行后期处理。

nDisplay目前仅支持一种后期处理操作:OutputRemap。你可使用此后期处理操作控制nDisplay生成的2D图像映射至应用程序窗口2D区域的方式。例如,你可平移、旋转、缩放输出图像的各部分,使其在应用程序窗口的不同区域显示。为此你需要提供 .obj 文件,其包含带UV贴图设置的平面几何体。nDisplay将使用该UV贴图确定如何在应用程序窗口的特定部分中渲染输出图像的特定部分。

配置示例:

[window] id=somewindow ... postprocess="pp_1, pp_2"
[postprocess] id=pp_1 type="OutputRemap" file="remap_1.obj"
[postprocess] id=pp_2 type="OutputRemap" file="remap_2.obj"

参数:

参数

是否必填?

默认值

说明

id

必填

此后期处理配置的唯一名称。

类型(type)

必填

你要执行的后期处理类型。目前仅支持 OutputRemap 类型。

OutputRemap 配置

文件(file)

必填

.obj 文件的路径和文件名。此文件包含将已渲染图像绘制到应用程序窗口前用于重新映射它的UV贴图。

摄像机配置

nDisplay群集中的所有实例从虚拟场景中的同一位置渲染场景。每个潜在的视点都由一个 摄像机 配置行定义。

你可以在运行时切换这些视点。每个摄像机视点也可以由跟踪设备驱动。

配置示例:

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

参数:

参数

是否必填?

默认值

说明

id

必填

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

loc

可选

0,0,0

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

rot

可选

0,0,0

该摄像机在VR空间中相对于其父项的旋转。

父项(parent)

可选

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

eye_swap

可选

false

在立体模式下渲染时,此属性确定为左右眼生成的图像是否交换。

eye_dist

可选

0.064

在立体模式下渲染时,此属性确定瞳孔间距离,用于偏移为左右眼生成的图像,以米为单位。

force_swap

可选

0

在单视场模式下渲染时,此属性用于将此摄像机偏移到左眼或右眼位置(按上述 eye_dist 属性的定义),从而模拟立体渲染。值为 -1 强制摄像机从左眼位置渲染,值为 0 从摄像机默认位置渲染(无效果),值为 1 强制摄像机从右眼位置渲染。

tracker_id

可选

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

tracker_ch

可选

-1

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

场景节点配置

在你的配置文件中,你可以定义场景节点的层级,每个场景节点表示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

可选

0,0,0

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

rot

可选

场景节点朝向相对其父项的Pitch(P)、Yaw(Y)和Roll(R)角度,以度为单位。

父项(parent)

可选

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

tracker_id

可选

输入 配置的名称,该配置定义你需要用于随着时间驱动场景节点位置的VR设备。可选参数。如果你省略此参数,场景节点的位置和旋转相对于其父节点在VR空间中是静态的。

tracker_ch

可选

-1

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

输入配置

你为需要向nDisplay系统提供输入的每个设备定义一个 输入 分段。例如,各个 摄像机 scene_node 可以由VR跟踪设备驱动,你可在 输入 部分设置该设备,并在 摄像机scene_node 配置中引用该设备。或者,你可能希望设置跟踪器、控制器和键盘,将通用的输入事件发送到虚幻引擎输入系统,或者将它们的事件和输入值绑定到通用的nDisplay蓝图节点,你可以在项目的游戏进程脚本中响应这些节点。

你还可以使用 input_setup 分段控制来自这些输入设备的特定通道、按钮和键绑定到虚幻引擎中特定类型的输入事件和值。

有关如何使用nDisplay输入的概述,请参阅使用VRPN输入

配置示例:

此配置设置nDisplay以从VRPN位置跟踪设备获取输入。通常这种设备挂载在摄像机或观众的头部,或由观众手持。通过引用 摄像机 scene_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

该配置设置nDisplay以从设置为VRPN设备的键盘读取键盘输入,并通过内置的虚幻引擎键盘输入路由该输入。

[input] id=ControlKeyboard type=keyboard addr=Keyboard0@192.168.0.1 reflect=ue4

参数:

参数

是否必填?

默认值

说明

id

必填

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

类型(type)

必填

此VRPN输入设备的类型:

  • tracker 表示跟踪设备。

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

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

  • keyboard 表示标准计算机键盘。

addr

必填

处理此特定设备的VRPN服务器的地址。值必须匹配以下格式:
DEVICENAME@SERVER_ADDRESS:SERVER_PORT
其中:

  • DEVICENAME 是该设备的VRPN名称。

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

  • :SERVER_PORT 是VRPN服务器监听接入链接的端口。
    这是可选的。如果你不提供,nDisplay会默认使用 3883 端口。

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

参数

是否必填?

默认值

说明

loc rot

可选

0,0,0 0,0,0

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

前右上

必填

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

符合 type=keyboard 的设备还接受以下附加参数:

参数

是否必填?

默认值

说明

反映(reflect)

可选

确定如何将来自该键盘的输入传递到虚幻引擎,以及你可以如何响应这些事件。
此设置接受以下任何一个值:

  • nDisplay

  • ue4

  • 两者(both)

  • 无(none)

更多信息请参阅反射键盘事件 .。

type=analogtype=button 不接受任何其他额外参数的设备。

输入设置配置

每个 input_setup 配置部分为指定的 输入 设备提供额外的配置参数,通常将该设备的通道或键绑定到一个通用的nDisplay蓝图输入节点。

配置示例:

此配置使用ID控制器设置输入设备,当按下在通道0上生成事件的按钮时,将从蓝图中的 Input > N Display Events > nDisplay Button 0 节点生成事件。

[input_setup] id=controller ch=0 bind="nDisplay Button 0"

这种配置类似于上面的配置,只是它将模拟值(通常是控制器的轴)绑定到nDisplay模拟值。你可以使用蓝图中的 Input > N Display Events > nDisplay Analog 0 节点来检测何时使用该控制器轴,或者用 Input > N Display Values > nDisplay Analog 0 节点来检索当前帧的值。

[input_setup] id=test_axes ch=0 bind="nDisplay Analog 0"

如果你使用的是键盘设备,则不必专门绑定它的每个键。相反,你只需使用 输入 部分中的 反映(reflect) 设置来确定键事件应该路由到内置的虚幻引擎键盘事件,还是路由到nDisplay键盘事件。但是,如果你希望更改绑定或添加新绑定,则可以这样做。例如,本分段使空格键触发 Input > N Display Events > nDisplay Button 3 事件。

[input_setup] id=keyboard0 key=Space bind="nDisplay Button 3"

参数:

参数

是否必填?

默认值

说明

id

必填

请参见本 input_setup 部分配置的 输入 配置的ID。
注意,与nDisplay配置文件中的大多数其他部分不同,这个 id 值不为包含它的 input_setup 分段提供ID。相反,它引用文件中其他地方定义的 输入 部分的ID。

ch

必填

确定将绑定到你在 绑定(bind) 设置中设置的事件的指定输入设备的通道。

键(key)

可选

类似于 ch,但仅用于 type=keyboard 的输入设备。

bind

必填

确定上述指定的通道或键绑定到的虚幻引擎中的事件。这个值可以是你在 输入(Input) 类别中看到的任何蓝图节点的名称,例如 F1nDisplay F1nDisplay Button 0Gamepad Left Thumbstick X-AxisGamepad Face Button Top 等。
如果名称包含空格,则你必须用双引号括起来。

你还可以使用输入模块API中的节点,在项目的蓝图代码中设置这些通道和键绑定。详情请参阅将设备通道绑定到UE4输入

常规配置

常规(general) 配置行包含控制nDisplay群集整体操作的参数。

配置示例:

[general] swap_sync_policy=1

参数:

参数

是否必填?

默认值

说明

swap_sync_policy

可选

0

确定如何在网络上同步输出。

  • 0:无同步(VSync=0)。

  • 1:软件交换同步(VSync=1)。

  • 2:NVIDIA交换锁(仅用于NVIDIA卡用OpenGL渲染)。

ue4_input_sync_policy

可选

1

确定如何通过nDisplay网络复制UE4的本地输入。

  • 0:本地UE4输入仅由主节点处理。不会复制其他群集节点。

  • 1:主节点接收的所有本地输入也复制到所有其他群集节点。

NVIDIA配置

如果你在 常规 配置分段中使用 swap_sync_policy2,则可以使用 NVIDIA 分段中的参数调整与帧锁定有关的某些特定的硬件设置。

参数

是否必填?

默认值

说明

sync_group

可选

1

用于帧锁定的同步组。

sync_barrier

Optional

1

用于帧锁定的同步屏障。

网络配置

网络(network) 配置分段提供了一些设置,你可以使用这些设置控制超时和与nDisplay群集节点之间的网络通信相关的其他设置。

你的nDisplay配置文件中只能有0个或1个 网络 分段。

配置示例:

[network] cln_conn_tries_amount=10 cln_conn_retry_delay=1000 game_start_timeout=30000 barrier_wait_timeout=5000

参数:

参数

是否必填?

默认值

说明

cln_conn_tries_amount

可选

10

当非主群集节点启动时,此设置确定在关闭前该节点尝试连接到主节点的次数。

cln_conn_retry_delay

可选

1000

当非主群集节点启动时,此设置确定节点每次连续尝试重新连接到其主节点之间的时间间隔(以毫秒为单位)。

game_start_timeout

可选

30000

设置一个时间间隔,该时间间隔是主节点上的虚幻引擎应用程序等待所有群集节点准备就绪之后,再开始游戏循环的第一帧,并开始渲染到主窗口的时间间隔,以毫秒为单位。这会让你所有的群集节点都有机会在渲染开始前连接到主节点。在此期间,主窗口将为黑色。如果在此时间间隔结束后,没有任何群集节点成功连接到主节点,群集内所有的实例都将关闭。
如果你的群集的初始化时间异常漫长,则可能需要提高此值。

barrier_wait_timeout

可选

5000

设置游戏和渲染线程的障碍超时(以毫秒为单位)。此障碍超时会在群集节点间同步游戏和渲染线程。它会在每一帧内被使用数次。换言之,它是在运行时使用的,以侦测节点无法访问的情况。如果发生此种情况,群集状态的状态将被视为失效,所有节点将自行关闭。

cln_conn_tries_amountcln_conn_retry_delay 设置将共同决定你的群集节点在启动时尝试连接到主节点的最大时长。例如,假设你将 cln_conn_tries_amount 设置为10,将 cln_conn_retry_delay 设置为1000毫秒。在启动时,每个节点会尝试连接到主节点。如果连接失败,它会等待1000毫秒后再试一次。如果该尝试再次失败,它会再等待1000毫秒。在连续失败10次后,群集节点会自动退出。一旦群集节点连接到主节点,计数就将终止。

信息配置

信息(info) 配置行包含关于此配置文件的可选信息:具体为已知与此配置文件兼容的最新版本nDisplay和虚幻引擎。

配置示例:

[info] version=22

参数:

参数

是否必填?

默认值

说明

版本(version)

必填

与此配置文件兼容的虚幻引擎最旧版本。

数字应该理解为 4. 后面的点版本。例如,值22表示该文件与nDisplay和虚幻引擎的4.22版本兼容。

不要手动设置此值。nDisplay Launcher 会自动设置该值。如果你使用的配置文件没有版本,或者你使用的当前虚幻引擎版本不支持文件中的版本,则 nDisplay Launcher 会自动尝试更新你的配置文件,以便使用最新版本。如果成功,则将更新后的配置保存到新文件中,并将此值更新到最新版本。

自定义配置参数

你可以包括 自定义 配置分段,以便向nDisplay群集节点提供你的自定义键值对。你可以在 [群集] 行中包含任意数量的参数和值。然后,你可以在运行时从nDisplay蓝图或C++ API中检索这些配置值。

配置示例:

[自定义] stringParameter=myValue numberParameter=2

配置文件场景结构示例

举一个具体的例子,打开 wall_flat_3x2.cfg 示例文件,你可以在虚幻引擎安装文件夹的 Templates/TP_nDisplayBP/Content/ExampleConfigs 中找到该文件。这个文件定义了六个投影屏,每个屏幕都由一台单独的物理计算机渲染。

它还定义了几个scene_node,这些节点一起创建了以下层级:

nDisplay example scene hierarchy

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

注意,这种配置意味着在每一对相邻的投影屏之间有较小空间(考虑到渲染场景的显示器的边缘)。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback