Преобразование матрицы преобразования OpenGL для работы на CATransformLayer

Я использовал SDK дополненной реальности от String для проекта. По сути, этот SDK передает набор маркеров для изображений, которые он распознает, и связанное с ним преобразование матрицы OpenGL, в котором указано, где находится изображение маркера в трехмерном пространстве на экране камеры iPhone. Я пытаюсь нанести на карту CATransformLayer на фоне сцены, чтобы она была правильно ориентирована на изображение маркера и воспроизводила видео на своем месте. Я думал, что я мог бы сделать это с помощью AVPlayerLayer сидя внутри CATransformLayer который имеет матричное преобразование (преобразуется в CATransform3D) применяется к нему.

Насколько я могу судить, это не очень хорошо работает - я не могу получить логическое отображение между исходной матрицей OpenGL и матрицей, стоящей за CATransform3D,

Вы можете видеть, что довольно сложно делать прямое преобразование между маркерным преобразованием и CATransform3D объект (синий бит - мой слой):

Скриншот текущего состояния этой проблемы

Я предположил, что они были одинаковыми (мне несколько раз говорили, что они идентичны из-за CALayer GL бэк). Это правда? Я что-то пропустил?

Я могу вернуться к рендерингу моего видео в качестве текстуры на сцене, но было бы здорово поддерживать высокий уровень, если это возможно - какие-либо идеи / комментарии / мысли?

1 ответ

Попробуйте посмотреть на этот ответ. Он должен делать то, что вам нужно.

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