Viewport与ScreenComponent的关系

nDisplay设置里有个DefaultViewOrigin组件,当然你也可以添加自己的该类型组件,这个组件就是眼睛或Camera。它会有自己捕获的画面--360°画面,在这个360°的球形视角内,显示面板(ScreenComponent)在哪,就显示那个视线方向的画面,面板越大,截住的(视线)画面就越多,如果面板大成球形,那么就显示360°画面了。
因此,ScreenComponent要与物理面板尺寸造型一致,比如,都是球形的部分,且占球形的比例相同。
ScreenComponent尺寸位置固定以后,它能截住(显示)的画面就固定了。此时,在Viewport的Projection Policy里绑定一下ScreenComponent,在Region里设定ScreenComponent截住的画面要在UE4实例窗口中出现的位置和缩放尺寸。

Viewport与Window等概念及关系

这里聚焦在nDisplay config里的Cluster设置。
  1. Cluster作为Root节点,有一个【Render Sync Policy】需要特别注意,它用来设置nDisplay系统的同步时钟源。通常设为Nvidia,即显卡板载时钟源,其运作要求显卡之间用同步卡进行连接,并有一块显卡作为master,master通过同步卡物理连接来进行显卡之间的时钟同步,master即为nDisplay系统的同步时钟源。Switchboard的node节点列表中,每一行都有一个空心五角星的图标,高亮黄色状态表明将该node设为master节点。
  2. Host是最简单的概念,仅仅作为node的一个运行平台,node可以自由的(切换)决定自己运行在哪台host上。
  3. Node是集群的计算单元,对应着一个UE实例。记住这个对应关系,【一个Node对应着一个UE实例】因此,Node的window属性,设置的就是这个UE实例运行时的窗口尺寸和位置。

Screen Component

Each different output display that uses the Simple projection type renders the scene from the current camera's position using a frustum that is defined by a rectangle with a defined size and placement in the 3D VR space. Each of these rectangles is defined by a screen configuration. Usually, each of these projection screens has the same dimensions in space as the physical screen that you'll use to render it.
The pivot point of a screen is always in its exact midpoint.
这段描述的是:针对每一路不同的显示输出来说,(这里仅涉及采用简单投影关系的输出),它们输出或显示的内容是对场景的渲染结果,这个渲染的(在场景里的)范围,是用当前相机的位置和一个视锥体来描述的,而这个视锥体是由3D空间中一个有确定尺寸和位置的矩形来定义的。每一个这样的矩形,都由一个Screen配置(或说Screen Component)来定义。通常,每个这样的投影Screen(组件)都与用来显示这个(Screen组件定义的渲染范围的)渲染结果的物理屏幕拥有相同的尺寸。

nDisplay初步学习

  • 一套nDisplay设置,物理上包括:一个主计算机和若干附加计算机。附加计算机数量是scalable numbers的。
  • 每台计算机可以包含一个或多个node。这里的node就是nDisplay的逻辑概念。一个node包含一个unreal engine实例。每个UE实例可以负责一个或多个显示设备的内容渲染:一个UE实例渲染的内容属于同一个3D场景,渲染的画面属于同一个视点,该UE实例会根据其负责的每个显示设备的物理布局分别设定该视点的透视变换及矩形范围并渲染结果拆分到对应显示设备。(实质还是一个pass,在shader里计算每个像素时,都要根据该像素对应的投影变换来计算)
  • primary node中还会通过一个所谓外围的VRPN Servers来接收Tracker、Controller的输入,然后将该输入复制到该nDisplay设置包含的所有nodes,包括primary node和cluster nodes。

上面就是nDisplay设置的整体结构描述了,可以发现概念焦点就是Node。下面对node的几种典型设置情况进行一下描述:
  • 一个UE实例对应一个显示设备
  • 多个UE实例,每个实例对应一个显示设备。这种情况是由于一台计算机上有多块显卡,用多个UE实例来分流渲染任务
  • 一个UE实例,对应多个显示设备,每个显示设备显示一部分。这在上面已经介绍了详情

nDisplay架构能够正常运作的框架保证
  • 引擎内置插件:其会在组成群集的所有UE实例间通信和同步信息,确保所有实例同时渲染相同的帧、确保所有显示设备渲染游戏场景的正确视锥等。
  • 一个共享的配置资产,它包含 nDisplay 需要的所有设置,以便在正确的计算机上启动正确数量的实例。每个实例都能在游戏 3D 场景中渲染正确的视点,从而在所有屏幕或投影设备上产生无缝的渲染效果。(请参阅nDisplay 3D 配置编辑器了解更多信息。)

工作流程
你需要告诉nDisplay你希望在网络中使用的不同计算机、这些计算机将渲染到的屏幕或投影器的大小和分辨率、这些屏幕在3D空间中的空间关系以及其他设置。为了实现这些操作,你可以创建一个配置资产,在一系列设置中表现所有这些信息。