This page has been translated automatically.
视频教程
界面
要领
高级
实用建议
专业(SIM)
UnigineEditor
界面概述
资源工作流程
设置和首选项
项目开发
调整节点参数
Setting Up Materials
设置属性
照明
Sandworm
使用编辑器工具执行特定任务
如何擴展編輯器功能
嵌入式节点类型
Nodes
Objects
Effects
Decals
光源
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
编程
基本原理
搭建开发环境
使用范例
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
双精度坐标
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
创建内容
内容优化
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

带有Surround插件的3显示器输出

Surround旨在跨三个监视器跨越基于UNIGINE的项目。它允许扩展虚拟世界的边界,同时保持对渲染视口的完全控制。

注意
此插件不能在基于Qt的应用程序中使用。

硬体需求#

启动Surround应该同时满足两个硬件要求:

  1. 一个视频卡或NVIDIA SLI系统上至少有3个视频同时输出。
  2. AMD Radeon HD 6000系列或NVIDIA GeForce 600系列GPU。

也可以看看#

启动Surround#

Surround既可以在窗口模式下也可以在全屏模式下渲染。

Surround on three monitors

Surround输出到三个监视器

通常需要将应用程序与插件库(lib/Surround_*)一起启动启动参数(例如渲染API,窗口大小等)。

命令行
main_x64 -extern_plugin Surround

您可以使用该库的64位调试或发行版本。 (引擎会根据指定的主应用程序自动加载相应版本的库。)

注意

不能将Surround用于:

自定义Surround#

可以自定义Surround,以在渲染到三个监视器时支持任何自定义的视锥(对称或不对称的视锥)。

注意
为防止通过系统脚本修改摄像机设置,请在项目的启动器中指定-extern_define "PROJECTION_USER"定义。

Surround相机#

Surround在中心有一个视口,而所有其他视口则被渲染为辅助视口。默认情况下,主显示是用于单显示器配置的UNIGINE引擎视口。它使用引擎使用的Player矩阵查看场景。其他显示器是具有任意角度并面向所需方向的任意摄像机。每个显示器都有自己的模型视图和投影矩阵。如果需要,可以启用或禁用主监视器和辅助监视器。

  • 中央监控器是主要的监控器。两侧监视器是辅助监视器,可以是任何摄像机,任何角度和面向任何方向的辅助监视器。
  • 每个显示器,包括主要的显示器,都有自己的模型视图和投影矩阵。
  • 默认情况下,只有主要的一个具有接口(渲染系统GUI,编辑器小部件,线框或分析器)。但是,分开图形用户界面可以在所有监视器上绘制。
  • 所有视口都有自己的视口反射遮罩可选择性地渲染节点和来自节点的反射。

如何自定义相机配置#

就像使用Wall一样,渲染Surround视口也由wall.h脚本(位于<UnigineSDK>/data/core/scripts/system中)控制。

要实现自定义摄像机配置,请在unigine.usc系统脚本中将wall.h注释掉,并在系统脚本的render()函数中将您的自定义代码与#ifdef HAS_SURROUND ... #endif包装在一起:

源代码 (UnigineScript)
int render() {
	#ifdef HAS_SURROUND
		// place an implementation of a 
		// custom camera configuration here
		// ...
	#endif
	return 1;
}

根据中央监视器的呈现方式,有两种可能的设置。可以通过以下方式得出:

  • 默认引擎渲染器(与呈现通常的单显示器应用程序时相同)。
  • Surround渲染器本身(如果要对中央监视器使用不对称的视锥,并修改其Modelview矩阵,则更加安全)。
注意
只能同时启用两个渲染器之一。

以下示例演示了如何调整摄像机配置并选择中央监视器的渲染器。

1.使用默认引擎渲染器#

第一种变体是通过默认引擎渲染器渲染中央(主)监视器。

  1. 通过engine.surround.setEnabled()启用两个侧面(辅助)监视器。默认情况下,所有Surround监视器都处于禁用状态。中央的那个应该被禁用,因为它是由默认引擎渲染器绘制的。

    源代码 (UnigineScript)
    // Enable the 1-st and the 3-rd monitors.
    // The third argument of the function sets the "enabled" flag.
    engine.surround.setEnabled(0,1);
    engine.surround.setEnabled(2,1);
  2. 通过engine.surround.setProjection()engine.surround.setModelview()设置侧面监视器的投影和模型视图矩阵。

    源代码 (UnigineScript)
    // Settings for the 1-st monitor
    engine.surround.setProjection(0,projection_0);
    engine.surround.setModelview(0,modelview_0);
    
    // Settings for the 3-rd monitor
    engine.surround.setProjection(2,projection_1);
    engine.surround.setModelview(2,modelview_1);

2.使用Surround渲染器#

另一个变体是通过Surround渲染器渲染中央监视器。例如,如果要为所有监视器设置对称的视锥台,则可以使用此变体。

  1. 通过engine.render.setEnabled()禁用渲染到默认的UNIGINE视口:

    源代码 (UnigineScript)
    engine.render.setEnabled(0);
  2. 启用所有三个Surround监视器,包括主要的一个。结果,所有三个视口将由Surround渲染器本身渲染:

    源代码 (UnigineScript)
    // Enable all three monitors:
    engine.surround.setEnabled(0,1);
    engine.surround.setEnabled(1,1);
    engine.surround.setEnabled(2,1);
  3. 为所有三个监视器设置模型视图和投影矩阵。

    源代码 (UnigineScript)
    // Settings for the 1-st monitor
    engine.surround.setProjection(0,projection_0);
    engine.surround.setModelview(0,modelview_0);
    
    // Settings for the 2-nd (primary) monitor
    engine.surround.setProjection(1,projection_1);
    engine.surround.setModelview(1,modelview_1);
    
    // Settings for the 3-rd monitor
    engine.surround.setProjection(2,projection_2);
    engine.surround.setModelview(2,modelview_2);
最新更新: 2022-12-14
Build: ()