AvPlayer с искажением

Есть ли способ, чтобы (один-единственный) AVPlayerLayer покрывал область, как показано на рисунке ниже?
Игрок должен покрыть как белую, так и красную области с соответствующей точки зрения.

1 ответ

Решение

Вы определенно не можете сделать это с одним слоем с аффинным преобразованием. Может быть, с Core Image, но я не знаю, какой фильтр (ы) вы бы использовали, и в любом случае они, вероятно, будут очень дорогими.

То, что вы могли бы сделать, это использовать несколько слоев AVPlayer, каждый из которых воспроизводит один и тот же элемент, с их трехмерными преобразованиями, установленными так, чтобы они пересекались в точке сгиба. Левая сторона правого слоя будет позади левого слоя, а правая сторона левого слоя будет позади правого слоя.

  • Возможно, вы захотите, чтобы оба слоя игрока были внутри AVSynchronizedLayer, чтобы они воспроизводились с одинаковыми часами.
  • Я не знаю, понадобятся ли вам два AVPlayer. В любом случае, достаточно легко получить playerItem от одного и создайте второй AVPlayer вокруг него.

Как вы можете догадаться, я этого не делал, поэтому будьте осторожны, разработчик. Надеюсь, это укажет вам правильное направление.

Другие вопросы по тегам