This page has been translated automatically.
视频教程
界面
要领
高级
实用建议
UnigineEditor
界面概述
资产工作流程
设置和首选项
项目开发
调整节点参数
Setting Up Materials
Setting Up Properties
照明
Landscape Tool
Sandworm
使用编辑器工具执行特定任务
Extending Editor Functionality
嵌入式节点类型
Nodes
Objects
Effects
Decals
光源
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
编程
基本原理
搭建开发环境
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
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
创建内容
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

使用AppProjection插件进行投影

AppProjection允许您创建多投影仪设置。支持边缘融合,非线性图像映射以及每个投影的颜色校正。因此,如有必要,AppProjection可以将图像投影到覆盖360度的大型曲面屏幕显示器上。此外,可以完全自定义每个投影以使用所需的视锥。

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

Projection setup

投影设置

AppProjection

AppProjection的可自定义投影

也可以看看#

启动AppProjection#

要启动应用程序并渲染投影:

  1. 指定引擎插件库(lib/AppProjection_*)以及所需的其余部分启动参数(例如渲染API,窗口大小等)。例如:

    命令行
    main_x64.exe -extern_plugin AppProjection

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

    注意

    不能将AppProjection用于:

  2. 要更改连续显示的数量,请指定-width CLI选项。例如:

    命令行
    main_x64.exe -extern_plugin AppProjection -width 2

    默认情况下,最多支持从一个渲染节点输出8个投影。

AppProjection with two projections

AppProjection有两个投影

设置投影#

要设置投影,请按Esc打开系统菜单,转到Plugins选项卡,然后单击Projection按钮。

Projection Configurator窗口将打开。该窗口可以:

您应该先选择一个投影在右上角进行调整。

翘曲#

Warp选项卡允许您为投影设置几何校正。需要进行几何校正的区域包括:

  • 先进的离轴校正,其中投影机的放置很麻烦,并且需要对投影机的梯形校正功能进行高级映射
  • 非平面屏幕,例如弯曲屏幕和半球形圆顶
  • 将一台投影机上的一幅图像投影到一个以上的表面上
  • 异常的投影应用程序到定制设计的屏幕上

Interface

界面

通过修改显示的网格来执行变形。提供以下选项:

Projection 在下拉列表中选择一个投影以设置其参数。您也可以使用Page UpPage Down按钮在投影之间切换。
Multiplier 使用箭头键移动点时要使用的位移步长(以像素为单位)。使用+增加值,或使用-减少值。
Resolution

沿网格水平轴和垂直轴的控制点数。默认情况下使用2 x 2网格。

注意
最大网格大小为32 x 32
Points

可视编辑器使您可以使用控制点和黄色手柄为选定的投影设置变形。这些句柄针对每个选定的控制点显示,具体取决于其类型

您可以通过单击鼠标来选择控制点,也可以使用箭头键在控制点之间进行切换。

使用鼠标进行的多重选择是对多个对象的共同选择。要在选定组中添加或删除点,请按住Ctrl键单击它们。可以使用箭头键并按下Shift键以链状方式使用键盘进行多选。

Ctrl + Z / Ctrl + Y组合用于Undo / Redo操作。 Shift + Ctrl + Z取消所有转换。

注意
无论图像的方向如何(无论是否翻转),点总是在屏幕空间坐标中移动,这意味着如果按向左箭头,则该点总是向左移动。
  • 拖动控制点及其黄色手柄以使投影变形并针对所需的配置进行调整。您也可以在按下Ctrl键的情况下使用箭头键移动点。

    您可以在下面看到翘曲网格的示例和相应的投影图像。

    Warped grid

    扭曲的网格

    Warped image

    图像变形
  • 您可以通过选择每个控制点的参数并通过网格分辨率设置旁边的以下面板更改参数来微调投影变形:

    以下参数可用:

    • Point —所选控制点的水平和垂直索引。枚举从左下角开始。
    • Position —所选控制点沿X和Y轴的坐标。

      Coordinates for points and handles

      控制点的坐标
    • Type —选定控制点的变形类型:

      • —自动线性插值(无控制手柄)
      • —平滑曲线的对称控制手柄
      • -非对称控制手柄(您可以独立控制每个手柄)
      • -自动平滑曲线(无控制手柄)

网格本身也可以在视图空间内移动:

  • 鼠标中键进行平移(垂直或水平拖动网格)
  • 鼠标滚动可放大和缩小
  • 按钮可撤消所有平移和缩放操作并使网格适合窗口
Canvas

为选定的投影配置画布:设置旋转角度并启用垂直和水平翻转。

色彩和亮度校正#

Color选项卡允许您校正色彩强度,以及调整所选投影的色彩平衡。

Brightness

每通道色彩乘法器可控制以下强度:

  • Red
  • Green
  • Blue
  • RGB at once

Red channel scale

红色通道的亮度= 2
Contrast

允许您调整每个通道(以及一次所有通道)的色彩平衡的设置:

  • 正值将添加到屏幕上的颜色值。
  • 从屏幕上的颜色值中减去负值。

Red channel bias

红色通道的对比度= -0.1
Brightness (corners) 用于分别调整每个投影角的亮度补偿的设置。
注意
通过单击相应的参数名称(对于Color Balance参数集,按行或按列,对于每个角分别按行或按列),可以将所有颜色参数重置为默认值。

调和#

Blend选项卡允许您在选定区域和沿边缘配置混合。

Screen-Space Blending

管理选定区域中的混合。屏幕空间混合区域不受扭曲的影响。

要选择该区域,请单击Add以开始创建混合区域,然后在网格中单击以定义该区域的一侧,然后单击以定义另一侧-将会出现绿线。第三次单击显示混合方向。

屏幕空间混合区域的区域分为两部分:蓝线和绿线之间的部分是纯黑色区域,绿线和红线之间的部分是渐变区域。

默认情况下,这些线中的每条线都有两个标记线限制的点。使用解析度,您可以增加每条线上的点数以通过移动点来根据需要进行调整。可以选择多个点。

使用以下设置调整每个混合区域:

  • Enabled —如果启用,则启用从列表中选择的混合区域的使用。
  • Link to Projection —如果启用,则允许同时调整两个混合的Alpha, ContrastGamma,以更好地邻接两个投影。从下拉列表中选择投影和混合区域,然后调整必要的参数。
  • Name —修改混合区域名称的窗口。
  • Alpha-整个混合区域的透明度。
  • Contrast —混合区域的渐变部分的对比度。
  • Gamma —伽玛校正值。

定义屏幕空间混合区域

混合区
Warped Edge Blending

控制投影各边(左,右,上和下)的柔和边缘融合。如果使图像变形,则边界融合也会变形。

  • Size控制混合区域的大小:

    • 0-没有混合。
    • 0.5-混合了一半的屏幕。
  • Alpha控制混合区域的透明度:

    • 0-混合区域不透明。
    • 1-混合区域是完全透明的。
  • Contrast定义混合区域的对比度,并使从最暗区域到最亮区域的转换是非线性的。 __igt
  • Gamma —伽玛校正值。

    Gamma = 0.5
    Gamma = 5
注意
可以通过单击相应的列或行名称来重置边框值。

掩蔽#

Mask选项卡允许使用遮罩切出所选投影的某些区域。

创建遮罩,请单击Add并确保已启用Creation Mode按钮。然后通过单击所需的位置在网格上至少创建三个点。投影的相应区域将被切除。当前投影的蒙版列表显示在网格下方。您可以使用相应的按钮添加新的蒙版并删除现有的蒙版。

要将新点添加到列表中选定的蒙版,请确保启用Creation Mode按钮。然后,您可以通过在网格区域内单击来添加新点。要将新点插入现有遮罩中,请选择要在其旁边添加新点的点,然后单击以插入新点。您可以拖动现有点以将其移动。要删除点,请右键单击它。

您还可以通过指定每个点的坐标来精确调整蒙版。在网格上选择一个点(其颜色将变为绿色),然后在下面的Position字段中输入坐标。

您可以使用以下图标更改所选控制点的类型:

  • —自动线性插值(无控制手柄)
  • —平滑曲线的对称控制手柄
  • -非对称控制手柄(您可以独立控制每个手柄)
  • -自动平滑曲线(无控制手柄)

在列表中选择一个遮罩时,其参数将显示在其旁边的面板上:

  • Enabled —启用或禁用所选遮罩的显示。当配置重叠区域时,如果有很多遮罩,可以方便使用。
  • Name —掩码名称,可以编辑。
  • Smooth —遮罩边缘的圆度。

使成为#

Render设置块位于Projection Configurator窗口的底部。这些设置旨在通过在实际投影上显示辅助元素来简化投影的微调。

  • Debug Color选项允许您为不同的投影临时设置单独的颜色。这有助于可视化重叠区域。
  • Show Grid —在投影上显示网格。
  • Warp Points —显示从一个或多个选定点到每侧中心的点和辅助红线。
  • Blend Lines —显示屏幕空间混合线和辅助紫色线,其从一个或多个选定点延伸到每侧中心。

多个投影的观看设置#

如果使用AppProjection创建了两个以上的投影,则可以在System menu -> Plugins中调整以下查看设置。

FOV

所有投影的视场(在这种情况下,相机的Field of View选项不适用)。

Small Field of view

FOV = 60

Large Field of view

FOV = 80
Angle

允许调整投影之间的视角:将投影表面彼此旋转一定角度时,可以将该角度输入为Angle值,并自动重新计算投影以显示正确的图像。

例如,如果两个曲面彼此旋转40度:

Angle

角度= 40度
Bezel X 补偿显示器的水平边框。正值会减小视口空间;正值会减小视口空间。负数会增加它(用于重叠)。
Bezel Y 补偿显示器的垂直边框。正值会减小视口空间;正值会减小视口空间。负数会增加它(用于重叠)。

保存和加载预设#

设置投影配置后,可以将其保存到预设文件(*.proj)中以随时加载(例如,设置另一个投影):

  • Save按钮保存预设文件
  • Load按钮加载预设文件
注意
  • 您保存的*.proj文件仅包含当前所选投影的设置。
  • *.proj文件加载的设置将应用于当前选择的投影。

自定义AppProjection#

可以自定义AppProjection以支持每个投影的自定义视锥(对称或非对称视锥)。

AppProjection视口#

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

  • 可以将主视口设置为任何投影(对于支持的配置,它已经被设置)。
  • 每个视口都有自己的模型视图和投影矩阵。
  • 默认情况下,只有主要的一个具有图形用户界面(渲染系统GUI,编辑器小部件,线框或事件探查器)。但是,可以在所有投影上绘制单独的GUI。
  • 所有视口都有自己的视口反射遮罩可选择性地渲染节点和来自节点的反射。

默认配置#

对于默认配置,主视口设置为以下投影:

  • 对于2个投影,第一个视口。
  • 对于3个投影,第二个视口。
  • 对于4个投影,第二个视口。
  • 对于5个投影,第三个视口。

如何自定义投影#

AppProjection视口的渲染由wall.h脚本(位于<UnigineSDK>/data/core/scripts/system/文件夹中)控制。有两种可能的设置,具体取决于渲染主投影的方式。可以通过以下方式得出:

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

以下示例演示了如何调整相机配置并为主投影选择渲染器。

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

第一种变体是通过默认引擎渲染器渲染主(主)投影。

  1. 如果尚不支持创建的配置,请通过Unigine::Plugins::AppProjection::setPrimary()设置主投影:

    源代码 (C++)
    // Set the first projection as a primary one
    Unigine::Plugins::AppProjection::get()->setPrimary(1);
  2. 通过Unigine::Plugins::AppProjection::SetEnabled()启用所有非主要投影。主菜单应保留为禁用状态,因为它是由默认引擎渲染器绘制的。

    源代码 (C++)
    // Enable the 2nd projection in a row
    // The second argument of the function sets 'enabled' flag
    Unigine::Plugins::AppProjection::get()->setEnabled(1, 1);
  3. 通过Unigine::Plugins::AppProjection::SetProjection()Unigine::Plugins::AppProjection::SetModelview()设置辅助投影的投影和模型视图矩阵。

    源代码 (C++)
    // Settings for the 2nd projection
    Unigine::Plugins::AppProjection::get()->setProjection(1, projection_1);
    Unigine::Plugins::AppProjection::get()->setModelview(1, projection_1);

2.使用AppProjection渲染器#

另一个变体是通过AppProjection渲染器渲染主投影。例如,如果要为所有投影设置对称的平截头体,则可以使用此变体。

  1. 设置要用作主要投影的投影,并通过AppProjection启用其渲染。

    源代码 (C++)
    // Set the first projection as a primary one
    Unigine::Plugins::AppProjection::get()->setPrimary(1);
  2. 通过Unigine::Render::setEnabled()禁用渲染到默认的UNIGINE视口:

    源代码 (C++)
    Unigine::Render::setEnabled(0);
  3. 启用所有AppProjection投影,包括主要的。结果,所有视口将由AppProjection渲染器本身渲染:

    源代码 (C++)
    // Enable all projections
    Unigine::Plugins::AppProjection::get()->setEnabled(0, 1);
    Unigine::Plugins::AppProjection::get()->setEnabled(1, 1);
  4. 为所有投影设置模型视图和投影矩阵。

    源代码 (C++)
    // Settings for the 1st projection
    Unigine::Plugins::AppProjection::get()->setProjection(0, projection_0);
    Unigine::Plugins::AppProjection::get()->setModelview(0, modelview_0);
    
    // Settings for the 2nd projection
    Unigine::Plugins::AppProjection::get()->setProjection(1, projection_1);
    Unigine::Plugins::AppProjection::get()->setModelview(1, modelview_1);
最新更新: 2021-12-13
Build: ()