Switchboard设置参考

Switchboard提供的设置的详细信息。

Choose your operating system:

Windows

macOS

Linux

Switchboard插件设置

按照下面的步骤修改插件的设置。

  1. 虚幻编辑器 的主菜单中,选择 编辑(Edit) > 项目设置(Project Settings) 可以打开 项目设置(Project Settings) 窗口。

  2. 项目设置(Project Settings) 窗口中,在 插件(Plugins) 部分中选择 Switchboard

Switchboard插件设置

参数

说明

Switchboard

Python编译器路径(Python Interpreter Path)

Switchboard的默认Python版本是Python 3.7.7。要使用Python的其他版本,请更改此字段以指向你机器上的Python编译器。

Switchboard路径(Switchboard Path)

Switchboard Python文件的位置。

命令行参数(Commandline Arguments)

Switchboard目前不允许使用任何命令行参数。

Listener

Listener路径(Listener Path)

SwitchboardListener可执行文件的位置。

Listener命令行参数(Listener Commandline Arguments)

SwitchboardListener需要使用以下参数:

  • -ip :设置SwitchboardListener将侦听的IP地址。

  • -port :设置SwitchboardListener将侦听的端口。

OSC

默认Switchboard OSC Listener(Default Switchboard OSC Listener)

Switchboard需要OSC Listener才能使用镜头试拍录制器。如需更多详细信息,请参见 使用Switchboard录制试拍镜头

Switchboard设置

  • 对所有设备插件通用的设置位于 设置(Settings) 面板顶部,包括在初始项目设置期间添加的值。

  • 在你添加设备之后,这些设备的设置将附加到设置面板。

  • 部分一般设置在设备的设置中是重复的,因此必要时可以覆盖各个设备的值。

  • 如果要在特定的设备中覆盖设置,将显示不同的背景颜色。只要覆盖位置正确,更改全局设置就不会导致设备中的此设置发生更改。

Switchboard设置面板

下面的部分介绍了所有可以在"设置"面板中修改的设置。

Switchboard项目设置

参数

说明

IP地址(IP Address)

运行Switchboard和内部OSC服务器的机器的IP地址。如果运行Switchboard的计算机上有多个网络控制器,请在此处更改地址。

传输路径(Transport Path)

目前未在Switchboard中使用。

项目设置

参数

说明

项目名称(Project Name)

Switchboard项目的名称。将用作存储设置和设备的文件名的基础。

UProject

UE项目文件的本地路径。

引擎目录(Engine Dir)

虚幻引擎目录的本地路径。

构建引擎(Build Engine)

用于在Switchboard中启用从源编译引擎的标记。

贴图路径(Map Path)

Content 文件夹到贴图的相对路径,将显示在Switchboard中的 关卡(Level) 下拉菜单中。

贴图过滤器(Map Filter)

用于限制哪些贴图出现在"关卡"下拉菜单中的文件过滤器。

OSC

服务器端口(Server Port)

要在Switchboard中侦听的OSC服务器的端口。

客户端端口(Client Port)

虚幻编辑器中指定的OSC客户端的端口。

源功能按钮(Source Control)

P4项目路径(P4 Project Path)

Uproject中指定的虚幻项目的Perforce库路径。仅需要指定包含Uproject文件的库文件夹。

P4引擎路径(P4 Engine Path)

仅当你计划根据源编译引擎(而非仅编译项目)时,才需要使用P4引擎路径设置。如果需要更多详细信息,请参见 同步和编译

工作区名称(Workspace Name)

映射至库项目路径的Perforce工作区的名称。

多用户服务器设置

参数

说明

服务器名称(Server Name)

附加到项目名称的名称,用于创建完整的服务器名称。

命令行参数(Command Line Args)

传递到多用户服务器可执行文件的可选参数。

自动加入(Auto Join)

启用此选项,让每个虚幻或nDisplay设备自动加入多用户服务器。

清空历史记录(Clean History)

将参数 -ConcertClean 传递到服务器,以便在启动时清空服务器会话的工作目录。

自动启动(Auto Launch)

启用此选项以在首次启动虚幻或nDisplay设备时启动多用户服务器。服务器始终在与Switchboard所在的同一设备上运行。

虚幻设备设置

Switchboard虚幻设备设置

参数

说明

是录制设备(Is Recording Device)

如果该设备类型即将用于录制序列,则启用此选项。

缓冲区大小(Buffer Size)

连接到SwitchboardListener的套接字客户端的内部缓冲区大小。

命令行参数(Command Line Arguments)

启动时传递至虚幻的可选命令行参数。

ExecCmds

设置要在启动时作为命令行参数传递至虚幻的 -ExecCmds (控制台命令。)

Listener端口(Listener Port)

Listener要侦听的端口号。默认端口为2980。

角色文件名(Roles Filename)

包含 虚拟制作角色 的.ini文件的文件名。

舞台会话ID(Stage Session ID)

用于对舞台监视器提供程序和监视器进行分组的ID。具有不同会话ID的实例在 舞台监视器 中对彼此不可见。

UE4编辑器文件名(UE4 Editor filename)

虚幻编辑器可执行文件的文件名。

GPU数量(Number of GPUs)

当设备上有多个GPU时使用的GPU数量。

实例设置(Instance Settings)

IP地址(IP address)

SwitchboardListener侦听的远程地址。

角色(Roles)

支持选择角色.ini文件中提供的 虚拟制作角色 的下拉菜单。

是录制设备(Is Recording Device)

覆盖以确定此设备是否用于录制。

命令行参数(Command Line Arguments)

覆盖以获得可选命令行参数。

ExecCmds

覆盖以获得虚幻的exec命令。

GPU数量(Number of GPUs)

覆盖以获得要使用的GPU计数。

引擎目录(Engine Directory)

覆盖以获得引擎的本地路径。

uProject路径(uProject Path)

覆盖以获得uProject文件的本地路径。

KiPro设备设置

Switchboard Kipro设备设置

参数

说明

是录制设备(Is Recording Device)

如果该设备类型即将用于录制序列,则启用此选项。

IP地址(IP address)

KiPro Web服务器的地址。

停止后自动播放(Auto Play After Stop)

启用此选项可以在录制结束时自动播放。

Live Link Face

Switchboard Live Link设备设置

参数

说明

是录制设备(Is Recording Device)

如果该设备类型即将用于录制序列,则启用此选项。

IP地址(IP address)

目前未在Switchboard中使用。

nDisplay设备设置

Switchboard nDisplay设备设置

参数

说明

nDisplay配置文件(nDisplay Config File)

支持.cfg和JSON格式。

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

启用此选项以使用所有内核。

纹理流送(Texture Streaming)

切换纹理流送。

渲染API(Render API)

选项为DirectX11或DirectX12。

渲染模式(Render Mode)

允许选择nDisplay渲染模式。

额外命令行参数(Extra Cmd Line Args)

启动时传递至nDisplay的可选命令行参数。

ExecCmds

设置要在启动时作为命令行参数传递至虚幻的 -ExecCmds (控制台命令。)

GPU数量(Number of GPUs)

当设备上有多个GPU时使用的GPU数量。

Listener端口(Listener Port)

Listener要侦听的端口号。默认端口为2980。

角色(Roles)

支持选择角色.ini文件中提供的 虚拟制作角色 的下拉菜单。

舞台会话ID(Stage Session ID)

用于对舞台监视器提供程序和监视器进行分组的ID。具有不同会话ID的实例在 舞台监视器 中对彼此不可见。

对于每个nDisplay场景节点:

参数

说明

IP地址(IP address)

SwitchboardListener侦听的远程地址。

角色(Roles)

支持选择角色.ini文件中提供的 虚拟制作角色 的下拉菜单。

额外命令行参数(Extra Cmd Line Args)

覆盖以获得可选的命令行参数。

ExecCmds

覆盖以获得nDisplay的exec命令

GPU数量(Number of GPUs)

覆盖以获得要使用的GPU计数。

引擎目录(Engine Directory)

覆盖以获得引擎的本地路径。

uProject路径(uProject Path)

覆盖以获得uProject文件的本地路径。

Shogun设备设置

Switchboard Shogun设备设置

参数

说明

是录制设备(Is Recording Device)

如果该设备类型即将用于录制序列,则启用此选项。

IP地址(IP Address)

运行Shogun的设备的地址。

保存路径(Save Path)

Shogun的捕获文件夹的路径。

SoundDevices设备设置

Switchboard SoundDevices设备设置

参数

说明

是录制设备(Is Recording Device)

如果该设备类型即将用于录制序列,则启用此选项。

IP地址(IP Address)

SoundDevices Web服务器的地址。

为Switchboard创建你自己的设备插件

根据你的项目需求和你使用的设备,可能需要在Switchboard中添加或扩展设备功能。此部分介绍如何在Python中创建你自己的设备插件。利用一些C++知识即可将Listener扩展成接受更多类型的消息,但本文不包含这方面的内容。

以下说明逐步介绍如何为Switchboard创建新的设备插件 SampleDevice ,该插件可用作起点。

  1. 要使设备插件在加载后可以在Switchboard中发现,必须在 \Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\switchboard\devices\ 中按照命名惯例 <plugin_name>\plugin_<plugin_name>.py 创建一个文件夹和Python文件。

    • 对于 SampleDevice 插件,请创建以下文件: \Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\switchboard\devices\sampledevice\plugin_sampledevice.py .

  2. plugin_sampledevice.py 文件中,扩展 \Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\switchboard\devices\device_base.py 中定义的 Device 类。

    • device_base.py 中导入 Device

    • 创建新类 DeviceSampleDevice ,此类继承自 Device

    • switchboard/switchboard_logging.py 导入 LOGGER 以报告错误。

          从switchboard.devices.device_base导入Device
          从switchboard.switchboard_logging导入LOGGER
      
          class DeviceSampleDevice(Device):`
              def __init__(self, name, ip_address, **kwargs):
              super().__init__(name, ip_address, **kwargs)

    确认文件可以被Switchboard发现。启动Switchboard并展开 添加设备(Add Device) 下拉菜单。 SampleDevice 出现在列表中。

    将你的自定义设备添加到Switchboard

  3. 将SampleDevice添加到你的Switchboard不会在视图中创建控件。要创建SampleDevice控件,请扩展 plugin_sampledevice.py 中的 DeviceWidget

    • device_widget_base.py 导入 DeviceWidget

    • 创建新类 DeviceWidgetSampleDevice ,此类继承自 DeviceWidget

          从switchboard.devices.device_base导入Device
          从switchboard.devices.device_widget_base导入DeviceWidget
          从switchboard.switchboard_logging导入LOGGER
      
          class DeviceSampleDevice(Device):
              def __init__(self, name, ip_address, **kwargs):
                  super().__init__(name, ip_address, **kwargs)
      
          class DeviceWidgetSampleDevice(DeviceWidget):
              def __init__(self, name, device_hash, ip_address, icons, parent=None):
                  super().__init__(name, device_hash, ip_address, icons, parent=parent)

    确认控件显示在Switchboard中。启动Switchboard并添加一个SampleDevice。一个最小化的SampleDevice控件将显示在视图中。

    Switchboard自定义设备控件

  4. 在添加新的SampleDevice时创建自定义对话框,方法是创建继承自 AddDeviceDialog 的新类,并将其分配到 DeviceSampleDevice 类中的静态变量 add_device_dialog

    • device_widget_base.py 导入 AddDeviceDialog

    • 从PySide2导入Qt模块

    • 创建继承自 AddDeviceDialog 的新类 AddSampleDeviceDialog ,并在调用基础类的构造函数时,将device_type参数设置成"SampleDevice"。

    • 在新类的构造函数中,将QLineEdit文本框添加到对话框。

    • 使用新类覆盖 DeviceSampleDevice 中的 add_device_dialog 静态变量。

          从switchboard.devices.device_base导入Device
          从switchboard.devices.device_widget_base导入AddDeviceDialog、DeviceWidget
          从switchboard.switchboard_logging导入LOGGER
      
          从PySide2导入QtWidgets、QtGui、QtCore
      
          class AddSampleDeviceDialog(AddDeviceDialog):
              def __init__(self, existing_devices, parent=None):
                  super().__init__(device_type="SampleDevice", existing_devices=existing_devices, parent=parent)
      
                  # 创建QTWidgets以添加到表单
                  self.additional_text_field = QtWidgets.QLineEdit(self)
      
                  # 将新选项附加到父类中定义的QTWidgets.QFormLayout对象
                  self.form_layout.addRow("Additional Text", self.additional_text_field)
      
          class DeviceSampleDevice(Device):
              # 重载与设备插件关联的添加设备对话框对象
              add_device_dialog = AddSampleDeviceDialog
      
              def __init__(self, name, ip_address, **kwargs):
                  super().__init__(name, ip_address, **kwargs)
      
          class DeviceWidgetSampleDevice(DeviceWidget):
              def __init__(self, name, device_hash, ip_address, icons, parent=None):
                  super().__init__(name, device_hash, ip_address, icons, parent=parent)

      `

    确认新的设备对话框显示在Switchboard中。启动Switchboard并添加一个SampleDevice。额外的文本字段将显示在对话框中。

    Switchboard的添加自定义设备对话框

  5. Switchboard的右侧还可能有设备的控件,该控件包含其他选项卡式的扩展对话框,可以共享更多信息。要创建此选项卡,需要覆盖 Device 基础类中的类方法 plug_into_ui

    • 创建新类 SampleDeviceTabView ,此类继承自 QtWidgets.QWidget

    • DeviceSampleDevice 中创建类成员 tab_view 以容纳控件的实例。

    • 覆盖 DeviceSampleDevice 中的类方法 plug_into_ui ,并使用新类 SampleDeviceTabView 初始化 tab_view

          从switchboard.devices.device_base导入Device
          从switchboard.devices.device_widget_base导入AddDeviceDialog、DeviceWidget
          从switchboard.switchboard_logging导入LOGGER
      
          从PySide2导入QtWidgets、QtGui、QtCore
      
          class AddSampleDeviceDialog(AddDeviceDialog):
              def __init__(self, existing_devices, parent=None):
                  super().__init__(device_type="SampleDevice", existing_devices=existing_devices, parent=parent)
      
                  # 创建QTWidgets以添加到表单
                  self.additional_text_field = QtWidgets.QLineEdit(self)
      
                  # 将新选项附加到父类中定义的QTWidgets.QFormLayout self.form_layout对象
                  self.form_layout.addRow("Additional Text", self.additional_text_field)
      
          class DeviceSampleDevice(Device):
              add_device_dialog = AddSampleDeviceDialog # 覆盖插件的默认对话框
              tab_view = None
      
              def __init__(self, name, ip_address, **kwargs):
                  super().__init__(name, ip_address, **kwargs)
      
              @classmethod
              def plug_into_ui(cls, menubar, tabs):
                  ''' Implementation of base class function that allows plugin to inject UI elements.
                  '''
      
                  if not cls.tab_view:
                      cls.tab_view = SampleDeviceTabView(parent=tabs)
      
                  tabs.addTab(cls.tab_view, 'SampleDevice Tab')
      
          class DeviceWidgetSampleDevice(DeviceWidget):
              def __init__(self, name, device_hash, ip_address, icons, parent=None):
                  super().__init__(name, device_hash, ip_address, icons, parent=parent)
      
          class SampleDeviceTabView(QtWidgets.QWidget):
              def __init__(self, parent):
                  QtWidgets.QWidget.__init__(self, parent)

    添加到Switchboard的自定义设备

上述步骤展示了如何为Switchboard创建新设备插件。如需高级示例,请参见Switchboard的nDisplay设备插件。

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消