是否已指定 UI 更改 3d 对象而不是仅更改纹理的 instagram 蒙版?

Does have instagram masks specified UI to chage the 3d objects instead changing textures only?

所以我有 3 个不同的,其中包含具有特殊动画的不同 3d 对象。

首先是3d物体在头顶上方旋转,随着我们头部的摇动改变轨道的角度。第二个是掉落在角色周围的 2d 精灵通过闭眼呼叫。第三个是简单的 facemesh,上面有网格纹理。我绘制了特殊的 UI 并对其进行了编码,因此在 ArPlayer 中它可以完美运行,但是当我尝试将其上传到 facebook 时,这个 UI 不起作用并且我只有 1 号掩码。 所以我尝试在 Youtube 上搜索解决方案并且只有 this,但我认为这仅适用于纹理更改。所以我的问题是:我可以使用 instagram changing ui 和我的效果吗?如果可以,我该怎么做。太感谢了!

P.S: 你能找到的所有图片。

效果不得使用自定义按钮、键盘、选择器或滑块 - 效果只能使用本机 UI 选择器和滑块。 (Spark AR 审查政策 2.6)

使用本机 UI 选择器,您不仅可以更改纹理,还可以更改对象的可见性。

示例:

  1. 创建一个新项目
  2. 在场景中创建几个平面物体(比如3个)并命名为obj0, obj1, obj2 并使它们不可见
  3. 在 Capabilities 中添加 Native UI -> Picker
  4. 向项目添加 3 个纹理并将它们命名为 icon_1、icon_2、icon_3 和 为每个人检查 "No compression" 选项
  5. 添加这样的脚本
const NativeUI = require('NativeUI');
const Textures = require('Textures');
const Scene = require('Scene');

Promise.all([
    Textures.findFirst('icon_1'),
    Textures.findFirst('icon_2'),
    Textures.findFirst('icon_3'),
    Scene.root.findFirst('obj0'),
    Scene.root.findFirst('obj1'),
    Scene.root.findFirst('obj2')
]).then(onReady);


function onReady(assets) {

    const texture0 = assets[0];
    const texture1 = assets[1];
    const texture2 = assets[2];

    const objects = [assets[3],assets[4],assets[5]];

    const picker = NativeUI.picker;

    const index = 0;

    const configuration = {

      selectedIndex: index,

      items: [
        {image_texture: texture0},
        {image_texture: texture1},
        {image_texture: texture2}
      ]

    };

    picker.configure(configuration);
    picker.visible = true;

    picker.selectedIndex.monitor({fireOnInitialValue:true}).subscribe(function(index) {
      objects[index.newValue].hidden = false;
      if(index.oldValue != undefined)
      {
          objects[index.oldValue].hidden = true;
      }
    });
}

类似的官方例子来自开发者,他们使用Native UI picker (script) + patch来隐藏对象。启动 Spark AR Studio 并从模板“3D Stickers”创建新项目并观察他们是如何做到的。如果您没有这样的项目模板,请更新 Spark AR Studio。