image.png
在视频通话特效中,你可以决定谁可以看到特定的内容。
视觉元素可以被设置为「只向当前用户显示」「只向其他参与者显示」或「向所有人显示」。这个设置会反映在每个效果实例的视频流中。
例如,你可以在其他参与者看到的你的视频资料中,显示带有文字的卡片,但在你自己的视频流中隐藏它。
这个项目案例(需要 Spark AR Studio v125 或以上版本)展示了本文所涉及功能的基本实现。

改变一个对象的可见者

用户/参与者的可见性可以按对象进行设置。
选择您想在场景层次结构中改变可见性的对象,并滚动到 Inspector Panel 检查器面板中的 Enable For 启用部分。
image.png
使用 User 用户和 Participants 参与者复选框来改变谁将在他们的视频流中看到该对象。默认情况下,两个复选框都被选中,这意味着视频通话中的每个人都能看到该对象。

为了测试,你可以在预览窗口顶部的下拉菜单中,在「用户看到自己的视图」和「其他参与者看到用户的视图」之间进行切换。
image.png

纠正通话参与者的镜像视频流

当你在一个视频通话中,你的视频流在其他参与者的视图中自动水平镜像。
因此,重要的是要考虑到任何可能受此影响的内容,无论是通过镜像特定资产还是镜像整个屏幕。

镜像单一对象

如果一个单一的对象需要在其他参与者的视频流中进行翻转,选择该对象并滚动到 Properties 属性面板中的Transformations 变换部分。将 Scale 刻度类型设置为 Per Axis 每轴,并将 X 轴刻度改为 -1
image.png

在视窗中,该对象会错误的翻转显示,但在参与者预览(和实时效果)中,该对象会正确显示。
image.png

镜像你的整个视频流

如果你的效果包含大量需要翻转的视觉元素,那么镜像你的整个视频资料可能会更快更容易,而不是为每个对象调整之前的设置。
如果你的效果包含大量需要翻转的视觉元素,那么镜像你的整个视频流可能会更快更容易,而不是为每个对象调整之前的设置。
然而,我们不希望在自己的视频流中镜像我们的视窗,所以需要进行一些设置。
首先,在场景层级中添加一个空对象,作为一个容器,然后将你所有的特效场景对象嵌套在它之内。在示例项目中,我们将这个对象命名为 Card_null。
在场景层级中添加第二个空对象,确保它不嵌套在任何其他对象中。我们将这个对象命名为 MultiViewport_null
image.png
然后,添加一个画布 Canvas 和两个矩形 Rectangle 对象,将它们嵌套在 MultiViewport_null 中。
将其中一个矩形重命名为 self_rect 作为你自己的视图,另一个命名为 peer_rect 作为参与者的视图。
image.png
选择其中一个矩形,在属性面板 Properties 中,将其宽度和高度分别设置为填充宽度 Fill Width 和填充高度 Fill Height。对第二个矩形重复这一步骤。
249368913_434118271586744_276122823534762622_n.gif
每个矩形都应该有一个单独的材质,将其着色器类型 Shader Type 设置为平面 Flat
这两种材质也应该有各自的纹理链接到补丁编辑器 Patch Editor 中。你可以通过点击材质的纹理 Texture 属性旁边的箭头来设置。
选择 self_rect 对象并滚动到检查器面板 Inspector Panel 中的启用 Enable For 部分。确保选择了用户 User,并取消选择参与者 Participants
image.png
peer_rect 对象做相反的处理,启用参与者 Participants 关闭用户 User
image.png
在最后一步,我们需要使用补丁编辑器将屏幕渲染到自己和同伴的纹理上,但是要将视频流镜像发送到同伴纹理。
右键单击层级结构中的 MultiViewport_null 对象,选择 Create Patch。对 Card_null 对象做同样的操作。
249364999_1197022257473069_2368850346866422939_n.gif
这两个补丁构成了下面显示的补丁图的一部分,它做了以下工作:

  1. Card_null 被渲染成一个纹理(绿色注释补丁)
  2. 产生的纹理被应用于 self_mat 材质(蓝色注释补丁)
  3. 另外,在纹理上应用一个变换来镜像它,结果被应用到 peer_mat 材质上(紫色注释补丁)
  4. MultiViewport_null 对象被渲染到最终的屏幕输出(橙色注释补丁)。

image.png
设置好上述补丁图后,可以用预览视窗 Preview Panel 从用户和参与者的角度来预览效果。
249096331_664224504964237_5005938762362676308_n.gif