Есть ли маски Instagram, заданные в пользовательском интерфейсе, чтобы изменять трехмерные объекты, а не только менять текстуры? - PullRequest
0 голосов
/ 01 мая 2020

Итак, у меня есть 3 разных объекта, которые содержат разные 3d-объекты со специальной анимацией.

masks

Во-первых, это 3d-объекты, вращающиеся над головой и меняющие угол орбиты нашей головой. трясет. Второй - это падение 2d спрайтов вокруг персонажа, вызывающего при закрытии глаза. И третий - простой faceme sh с текстурой сетки. Я рисую специальный интерфейс и кодирую его, поэтому в ArPlayer он работает идеально, но когда я пытаюсь загрузить его на Facebook, этот интерфейс не работает, и у меня есть только маска № 1. Поэтому я пытаюсь найти решение на Youtube и иметь только this , но я думаю, что это работает только с изменением текстуры. Итак, мой вопрос: могу ли я использовать instagram, изменяющий пользовательский интерфейс, и если да, то как я могу это сделать. Большое спасибо!

PS: Все изображения, которые вы можете найти.

here

1 Ответ

0 голосов
/ 07 мая 2020

Эффекты не должны использовать пользовательские кнопки, клавиатуры, средства выбора или ползунки - эффекты могут использовать только собственные средства выбора и ползунок пользовательского интерфейса. ( Spark AR Review Policies 2.6 )

С помощью средства выбора Native UI вы можете изменять не только текстуры, но и видимость объектов.

Пример:

  1. Создать новый проект
  2. Создать несколько плоских объектов на сцене (например, 3 штуки) и назвать их obj0, obj1, obj2 и make они невидимы
  3. В Capabilities добавьте собственный интерфейс -> Picker
  4. Добавьте 3 текстуры в проект и назовите их icon_1, icon_2, icon_3 и отметьте опцию «Без сжатия» для всех
  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.

...