Преобразование MLMultiArray (выходной формы) в SCNGeometry

#scenekit #arkit #coreml

#scenekit #arkit #coreml

Вопрос:

кому-нибудь удалось эффективно преобразовать MLMultiArray в пользовательскую геометрию? Я смог преобразовать MLMultiArray -> UIImage, хотя не уверен, как эффективно создать пользовательскую геометрию.

Общая картина — я пытаюсь замаскировать сцену Scenekit, используя SCNNode с пользовательской геометрией. По сути, я хотел бы создать эффект портала, как показано во многих онлайн-демонстрациях / руководствах. Хотя, вместо того, чтобы использовать SCNBox в качестве геометрии для маскирующего узла, я хотел бы использовать выходные данные из моей модели CoreML в качестве «маскирующей» формы.

Если кто-нибудь может поделиться примерами кода или высокоуровневыми подходами, я был бы очень признателен! Спасибо

Пример приложения, использующего пользовательскую геометрию для маски портала
https://itunes.apple.com/us/app/dark-subject-one/id1312987602

Изображение пользовательской геометрической маски, используемой в портале

Комментарии:

1. Что находится внутри вашего MLMultiArray?

2. @MatthijsHollemans — это результат моей базовой модели: MultiArray (Double 1 x 224 x 224), определенный как пусть MultiArray: MLMultiArray = observations[0].FeatureValue.multiArrayValue. Затем я преобразую данные этой маски в UIImage, например. пусть semiTransparentMask = maskToRGBA(maskArray: многочиповой<Двойной>(MultiArray), rgba: (0, 255, 0, 100.0))!

3. Правильно, значит, это какая-то маска сегментации? И вы хотите превратить это в сетку, которую вы можете прикрепить к SCNNode. Итак, вам понадобится какая-то процедура, которая может превратить растровое изображение в (один или несколько) полигонов.

4. Понял, спасибо за руководство @MatthijsHollemans!