Spark AR —— 块(Block)的入门【贴片】(二)

427 阅读5分钟

本文已参与掘金创作者训练营第三期「高产更文」赛道,详情查看:掘力计划|创作者训练营第三期正在进行,「写」出个人影响力

Spark AR 是 Facebook 免费创作 AR 作品的平台,使用户能够为 Facebook 和 Instagram 创建交互式增强现实体验,超过 40 万名创作者,190个国家/地区,使用 Spark AR 来创作自己的AR作品

由于该软件无需任何编码知识即可使用,因此任何人现在都可以在 AR 世界中几乎没有经验地制作下一个疯狂式传播的 Instagram AR 特效,引领世界潮流。

专门的 AR 滤镜设计师单价甚至可达到 1000 美元到 3 万美元不等。

在块中使用输入输出

输入

使用输入自定义块内的贴片图:

  1. 打开块;
  2. 在场景面板中选择Block Root
  3. 进入检查器的 Interactions
  4. 单击Producer Patch旁边的Create:

image.png

或者,将场景块对象从场景面板中拖到贴片编辑器中。

输出

使用输出将信息从块传递到项目中。例如,块外的贴片。

在打开的块:

在场景面板中选择Block Root。 在检查器中单击Output旁边的箭头。

消费者贴片将被创建:

image.png

在项目中使用输入和输出

输入

当你在场景面板中选择块时,你添加到块中的所有输入都将在检查面板的Inputs项下列出:

image.png

你可以在检查器中改变输入的值,以改变块在你的效果中表现的方式。或者,单击输入旁边的箭头,创建一个消费者贴片,可以连接到图表的其余部分:

image.png

你也可以将块从场景面板拖到贴片编辑器中。

输出

一旦你定义了块的输出,将它从场景面板拖到贴片编辑器中创建一个贴片:

image.png

脚本

在通过名称访问场景中的块之后,你可以通过使用 BlockSceneRoot 类的方法在脚本中设置输入值和获取输出值。

// Load in the scene module
 const Scene = require('Scene');
 const Diagnostics = require('Diagnostics');
 
 // Locate a block in the scene
 Scene.root.findFirst('myBlock').then(function(myBlock){
     // Set a scalar input (signals also accepted)
     myBlock.inputs.setScalar('blockInput', 5)
     .then(function() {
         // Success
     }, function(error) {
         // input named blockInput probably doesn't exist
         // or is not of scalar type, check error for details
         Diagnostics.log(error);
     });
 
     // Get a scalar output
     myBlock.outputs.getScalar('blockOutput')
     .then(function(blockOutputScalarSignal){
         // Do something with blockOutputScalarSignal
     }, function(error) {
         // output named blockOutput probably doesn't exist
         // or is not of scalar type, check error for details
         Diagnostics.log(error);
     });
 
     // Alternatively get scalar output with implicit
     // error handling - i.e. in case of error `blockOutputScalarSignal` will have value 0.   
     const blockOutputScalarSignal = myBlock.outputs.getScalarOrFallback('blockOutput', 0);
 });

添加一个描述

在区块中添加描述是个好主意。这将帮助任何与你分享块的创作者了解它做了什么,并帮助你保持跟踪。

添加描述:

  1. 在块的场景面板中选择Block Root
  2. 在检查器中单击Block Properties
  3. General选项卡中输入您对块的描述。

image.png

当你在资产面板中选择块时,你会在检查器中看到描述:

image.png

在其他项目中共享块和使用块

您可以打包块与其他创建者共享,或者将它们添加到其他项目中。

打包一个块:

  1. 打开你的块。
  2. 点击File并选择Package…
  3. 选择名称和目的路径。
  4. 单击Save

将创建一个*.arblockpkg* 文件 —— 您可以与其他创建者共享该文件或将该块添加到另一个项目中。他们将能够将*.arblockpkg* 文件导入到他们的项目中。

加入 Spark AR 社区,与其他创作者分享技巧、灵感和区块和贴片组等资产。

在一个块中创建一个块

也可以在块中创建块。 让我们用看起来像雪的粒子系统重新使用这个块:

image.png

SnowBlock 中添加另一个块:

  1. 双击SnowBlock在一个新的一级窗口中打开它。
  2. 在资产面板中,创建另一个块。

第二级块将在资产面板中以 block0 的形式列出。

image.png

编辑第二级块

编辑第二级块:

  1. 在资产面板中选择block0,在检查器中,单击Edit
  2. 在新打开的第二级窗口中进行任何编辑。
  3. 转到File并单击Save
  4. 在下面的例子中,我们添加了一个不同的粒子系统到block0。它在场景面板中显示为emitter0

image.png

实例化第二级块

您需要实例化第二级块,以便内容也出现在第一级块中。这样做:

  1. 回到第一级窗口,在资产面板中右键单击block0并选择Instantiate
  2. 转到File并单击Save

这两个块的内容现在将在第一级窗口中可见。

image.png

这两个块的内容也将在主项目中可见。在我们的例子中,两个粒子系统在视口和模拟器中都是可见的:

image.png

在块和贴片资产之间选择

块允许你组织你的项目,反复使用它的一部分。它们可以包含场景对象、资产和贴片。

贴片资产允许您与其他 Spark AR Studio 创建者保存和共享贴片组。贴片资产不能包含生产者贴片,消费者贴片或任何资产。

一般来说:

  • 如果您想保存和导出的效果元素只使用贴片,请使用贴片组(Patch Groups)。
  • 如果你使用的是场景对象和资产以及贴片,那就使用块。

限制

块只能用于以米为计量单位的项目。

不支持以下特性:

  • 一些全局对象和资产,例如环境光和环境纹理;
  • 脚本;
  • 其他需要特殊功能的元素。