Захват изображения узла без фона в SceneKit - PullRequest
1 голос
/ 29 января 2020

У меня есть ARSceneView с несколькими узлами. Я хотел бы захватить изображение этих узлов без фона камеры. Метод snapshot () дает изображение узлов с фоном камеры.

Я подумал о том, чтобы установить фон сцены в прозрачный цвет следующим образом:

sceneView.scene.background.contents = UIColor.clear

Чтобы сделать это, я сохраняю содержимое фона в новой переменной следующим образом:

let storedBG = sceneView.scene.background.contents

Затем я делаю снимок: sceneView.snapshot. Наконец, установите для фона исходное значение:

sceneView.scene.background.contents = storedBG

В результате этого процесса я получаю изображение своих узлов без фона.

Вышеприведенная стратегия работает, но выглядит не очень безопасно, и, кажется, есть лучшие способы достижения того же результата. Например, я подумал о создании нового изображения, взяв разницу двух изображений.

Чтобы это работало, я бы использовал sceneView.snapshot(), который будет содержать узлы и фон, и sceneView.session.currentFrame.capturedImage, который будет включать только необработанный кадр камеры без узлов. Затем я бы использовал CoreImage, CoreGraphics или другую библиотеку, чтобы вычислить разницу этих двух изображений, чтобы получить узлы без фона. Мне кажется, этот подход может сработать.

Однако у меня нет опыта работы с CoreImage, CoreGraphics или какой-либо другой соответствующей библиотекой, чтобы это произошло. Может кто-нибудь помочь, пожалуйста?

...