Разное

Ar kit apple: ARKit — Augmented Reality — Apple Developer

Содержание

Что такое ARKit? Дополненная реальность для каждого в iOS 11

Что такое ArKit? Недавно компания Apple объявила о создании AR-платформы в iOS 11. Для разработчиков уже доступен специальный набор инструментов для создания приложений с дополненной реальностью.

Apple уверена, что за дополненной реальностью будущее, и работа в этом направлении уже приносит первые плоды.

ArKit является собственной разработкой Apple и даст разработчикам специальный набор инструментов для создания приложений с дополненной реальностью.

Чтобы дополненная реальность работа, Apple использует процессор (в новых A11 Bionic под это выделена отдельная подсистема), встроенную камеру устройства и набор датчиков для анализа окружающего пространства.

Что может ARKit?

Декорирование пространства

Благодаря этому можно будет посмотреть на то, как будет выглядеть та или иная мебель в квартире, не обязательно ехать в IKEA.

Автомобили

Благодаря ARKit можно посмотреть, как будет выглядеть автомобиль в вашем дворе и даже выбрать ему цвет.

Меню в кафе/ресторанах с дополненной реальностью

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

Навигация по супермаркету

Это просто идеально! Например, таким образом не заблудишься в большом супермаркете в поисках зубной щетки.

Линейка

В жизни бывают разные ситуации. Вот, например, нужно срочно надо что-то измерить с помощью линейки, а ее под рукой нет. ARKit может выручить в данной ситуации.

Игры

Само собой игры, куда без них. Это могут быть простые вещи вроде Pac-Man на кофейном столике или что-то более серьезное вроде мультиплеерных тактических сражений. Кроме того, ARKit позволит улучшить работу уже существующих AR-игр вроде Pokemon Go — покемоны будут не просто парить в воздухе на воне изображения с камеры, а адекватно перемещаться по поверхностям в поле зрения.

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

Тестируем возможности ARKit. Создаем игру с дополненной реальностью

На WWDC 2017 Apple анонсировала ARKit — SDK для работы с дополненной реальностью. Благодаря ему порог вхождения в эту технологию стал значительно ниже. Можно ожидать появления большого количества качественных игр и приложений.

Если вы смотрели Keynote, то, вероятно, вы уже в восторге от увиденного. Игровой мир, который инженеры Apple смогли развернуть на обычном столе при помощи ARKit, не может оставить равнодушными даже самых искушенных геймеров. Это был не просто прототип, а хорошо работающая технология, над которой действительно потрудились. В этом легко убедиться, запустив несколько демо или попробовав самим привнести что-либо виртуальное в наш мир.

Вынужден расстроить счастливых обладателей iPhone 6 и ниже. На данных девайсах все эти прелести жизни будут недоступны. Для использования всех ключевых функций ARKit необходим процессор А9 и выше. Apple, конечно, даст урезанный доступ к функциональности, но это уже совсем не то.

Дополненная реальность

Дополненная реальность (augmented reality, AR) — это виртуальная среда, которая накладывается на реальный мир для придания ему большей выразительности, информативности или просто ради развлечения. Термин, предположительно, был предложен исследователем компании Boeing Томасом Коделлом еще в 1990 году. Уже тогда начали появляться первые примеры устройств с применением данной технологии. Впервые дополненная реальность была реализована на электронных шлемах летчиков для вывода информации о полете и радаре.

Хочется спросить, чем же все занимались почти 20 лет и почему масштабное развитие эта технология получила лишь сейчас. Все предельно просто. Появление хороших камер в телефонах, сенсоров и развитие технологий компьютерного зрения сделали это возможным.

Что же можно сделать полезного и чего ждать в ближайшее время на полках AppStore? На самом деле все ограничивается лишь фантазией разработчиков. Можно с уверенностью назвать несколько отраслей, где AR произведет революцию с выходом нового фреймворка от Apple:

  • Игровая индустрия;
  • Архитектура;
  • Киноиндустрия.

Возможности ARKit

ARKit — не волшебная палочка Гарри Поттера, а инструмент, который умеет грамотно обрабатывать большое количество данных, полученных от устройства. Благодаря камере и датчикам движения фреймворк отслеживает движение, находит поверхности и определяет освещенность. После анализа данных мы получаем конкретное представление об окружающем мире в виде точек пересечения, координат поверхностей и положении камеры в пространстве.

Основой задачей ARKit является слежение за окружающим миром (World Tracking) для создания виртуальной модели реального мира. Фреймворк распознает особенности видеокадров, отслеживает изменения их положения и сравнивает эту информацию с данными от датчиков движения. Результатом является виртуальная модель реального мира. Отдельная возможность — распознавание плоских горизонтальных поверхностей. ARKit находит плоскости и сообщает об их расположении и размерах.

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

Основой ARKit являются ARSCNView и ARSKView. Они служат для отображения live видео и рендеринга 3D и 2D изображений. Как все уже догадались, это наследники от SCNView и SKView. Следовательно, ARKit не привносит каких-то невероятных особенностей в отображении данных. Это все те же движки для работы с 2D и 3D графикой, с которыми уже все знакомы. Поэтому порог вхождения в данную технологию будет достаточно низким. Apple знаменита любовью к своим технологиям и продуктам, но несмотря на это разработчики ARKit сделали поддержку Unity и Unreal Engine. Это положительно скажется на количестве качественных приложений, которые появятся в ближайшее время.

ARSCNView и ARSKView содержат в себе сердце ARKit — ARSession. Именно этот класс содержит в себе все необходимое для работы с дополненной реальностью. Для запуска ARSession необходимо передать конфигурацию работы сессии.

Тип конфигурации определяет стиль и качество работы AR, которое может быть достигнуто:

  • На девайсах с процессором A9 и новее можно использовать ARWorldTrackingSessionConfiguration. Именно эта конфигурация дает возможность воспользоваться всей мощью нового фреймворка. Для вас будет создана модель окружающего мира в виртуальной реальности и предоставлена информация о плоскостях в поле видимости камеры. Это поможет расположить виртуальные объекты с максимальной точностью.
  • На остальных девайсах, поддерживающих ARKit, будет доступна лишь ARSessionConfiguration. Базовый класс предоставляет только информацию о движении устройства в пространстве, но не строит виртуальных моделей. Это не даст необходимого эффекта и не позволит насладиться всем качеством новой технологии. Вам будет недоступна возможность фиксации виртуальных объектов относительно объектов реального мира.

После выбора типа конфигурации необходимо создать ее экземпляр, произвести настройку и запустить сессию:

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        // Create a session configuration
        let configuration = ARWorldTrackingSessionConfiguration()

        // Run the view's session
        sceneView.session.run(configuration)
}

Важно помнить, что ARKit потребляет довольно много энергии для расчетов. Если View с контентом не отображается в данный момент на экране, то имеет смысл приостановить сессию на это время, используя session.pause().

После запуска сессии можно начинать работать с виртуальным контентом. Если хотите, чтобы ARKit распознавал плоскости, не забудьте установить значение planeDetection у конфигурации в значение horizontal. Изначально распознавание горизонтальных поверхностей выключено. Будем надеяться, что в будущем появится возможность находить и вертикальные поверхности, но пока только горизонтальные.

Способ получения информации об окружающей среде зависит от того, какой вид отображения данных вы будете использовать ARSCNView, ARSKView или Metal. Единицей информации, которую предоставляет ARKit, является ARAnchor. Если у вас включено распознавание поверхностей, то вы столкнетесь с сабклассом ARPlaneAnchor. Он содержит в себе информацию о найденных плоскостях. Благодаря данным якорям есть возможность ориентироваться в пространстве. В случае использования Metal вам придется вручную заниматься рендерингом. Тогда можете подписаться на обновления, используя делегат ARSessionDelegate у класса ARSession, и получать якоря от сессии. Если используете один из Apple движков для рендеринга объектов, тогда есть возможность воспользоваться более удобными делегатами ARSCNViewDelegate или ARSKViewDelegate.

На первый взгляд все довольно просто. Почти всю сложную работу делает ARSession. Давайте попробуем сделать тестовое приложение.

Тестируем возможности ARKit

Дополненная реальность сейчас у всех ассоциируется с игрой Pokémon GO, которая взорвала рынок игровой индустрии. Попробуем сделать нечто похожее.

Для создания тестового приложения мы воспользуемся ARSCNView для создания и рендеринга 3D моделей. Наша игра будет состоять из 2 этапов. Сначала мы будем расставлять мишени по комнате, а после пытаться как можно быстрее попасть по ним всем. Игра довольна примитивна, но продемонстрирует простоту создания игр с дополненной реальностью.

Начнем с того, что растянем на весь ViewController ARSCNView и создадим IBOutlet. Далее будем работать с ней, как с обычной SCNView. Произведем первоначальную настройку. Сделаем контроллер делегатом контактов физического мира и выведем статистику. Настроим запуск и паузу сессии при появлении и скрытии контроллера.

override func viewDidLoad() {
        super.viewDidLoad()

        sceneView.scene.physicsWorld.contactDelegate = self

        // Show statistics such as fps and timing information
        sceneView.showsStatistics = true
}

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        // Create a session configuration
        let configuration = ARSessionConfiguration.isSupported ? 
ARWorldTrackingSessionConfiguration() : ARSessionConfiguration()

        // Run the view's session
        sceneView.session.run(configuration)
}

override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)

        // Pause the view's session
        sceneView.session.pause()
}

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

ARKit настолько прост, что мы больше не будем использовать никакие его настройки. Единственное, что еще понадобится — это расположение камеры в пространстве виртуального мира. Остальное — дело техники и немного SceneKit.

Мы не будем здесь описывать обработку нажатий или подсчет очков. Это не так важно, и вы можете это увидеть сами в ДЕМО, представленном в конце статьи.

Наша игра содержит две модели объектов: шарик, которым мы будем стрелять, и летающие логотипы Touch Instinct. Для добавления этих моделей на экран, необходимо создать их, используя SCNNode.

Что понадобится, чтобы создать физический объект:

  • задать фигуру определенного размера;
  • создать фигуру с физическими свойствами для контролирования контактов с другими объектам;
  • создать физическое тело для описания поведения объекта при соприкосновении;
  • задать текстуры.

Пример реализации классов патрона в виде шара и логотипа в виде куба с нужными текстурами.

class ARBullet: SCNNode {

    override init() {
        super.init()

        let arKitBox = SCNSphere(radius: 0.025)
        self.geometry = arKitBox
        let shape = SCNPhysicsShape(geometry: arKitBox, options: nil)
        self.physicsBody = SCNPhysicsBody(type: .dynamic, shape: shape)
        self.physicsBody?.isAffectedByGravity = false

        self.physicsBody?.categoryBitMask = CollisionCategory.arBullets.rawValue
        self.physicsBody?.contactTestBitMask = CollisionCategory.logos.rawValue

        // add texture
        let material = SCNMaterial()
        material.diffuse.contents = UIImage(named: "art.scnassets/ARKit_logo.png")
        self.geometry?.materials  = [material]
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}
class Logo: SCNNode {

    override init() {
        super.init()

        let logo = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
        self.geometry = logo
        let shape = SCNPhysicsShape(geometry: logo, options: nil)

        self.physicsBody = SCNPhysicsBody(type: .dynamic, shape: shape)
        self.physicsBody?.isAffectedByGravity = false

        self.physicsBody?.categoryBitMask = CollisionCategory.logos.rawValue
        self.physicsBody?.contactTestBitMask = CollisionCategory.arBullets.rawValue

        // add texture
        let material = SCNMaterial()
        material.diffuse.contents = UIImage(named: "art.scnassets/logo-mobile.png")
        self.geometry?.materials  = Array(repeating: material, count: 6)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

Хочется обратить внимание на CollisionCategory. Это структура используется для определения типа объекта при контакте.

struct CollisionCategory: OptionSet {
    let rawValue: Int

    static let arBullets  = CollisionCategory(rawValue: 1 << 0)
    static let logos = CollisionCategory(rawValue: 1 << 1)
}

Это стандартная тактика для определения контакта. Свойство categoryBitMask задает маску конкретного объекта, а contactTestBitMask настраивает все контакты, которые нам будут интересны и о которых мы хотим получать уведомления.

Раз мы заговорили про обработку контактов, давайте посмотрим, как это выглядит в контроллере. Во viewDidLoad мы уже подписались на события контактов физического мира. Осталось реализовать одну функцию.

extension ViewController: SCNPhysicsContactDelegate {

    func physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact) {
        guard let nodeABitMask = contact.nodeA.physicsBody?.categoryBitMask,
            let nodeBBitMask = contact.nodeB.physicsBody?.categoryBitMask,
            nodeABitMask & nodeBBitMask == CollisionCategory.logos.rawValue & CollisionCategory.arBullets.rawValue else {
                    return
        }

        contact.nodeB.removeFromParentNode()
        logoCount -= 1

        if logoCount == 0 {
            DispatchQueue.main.async {
                self.stopGame()
            }
        }

        DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: {
            contact.nodeA.removeFromParentNode()
        })
    }

}

Самое интересное — это первая проверка того, что произошло именно соударение патрона и мишени в виде куба. Она выполняется на основе битовой маски. Это очень удобно и избавляет от большого количества других проверок.

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

Две основные игровые функции — это добавление мишени и выстрел. Добавление происходит на небольшом расстоянии от экрана в той стороне, куда направлена камера. Мы просто создаем уже сконфигурированный объект куба, добавляем его на сцену и настраиваем его расположение относительно камеры в пространстве.

private func addLogo() {
        guard let currentFrame = sceneView.session.currentFrame else {
            return
        }

        let logo = Logo()
        sceneView.scene.rootNode.addChildNode(logo)

        var translation = matrix_identity_float4x4
        translation.columns.3.z = -1
        logo.simdTransform = matrix_multiply(currentFrame.camera.transform, translation)

        logoCount += 1
        if logoCount == ViewController.logoMaxCount {
            startGame()
        }
}

При выстреле мы также создаем объект шара. Добавляем его на сцену. Но теперь нам необходимо не просто его добавить, но и придать ему ускорение. Для этого мы определяем позицию посередине экрана и придаем ускорение, приложив силу в нужном направлении.

private func shoot() {
        let arBullet = ARBullet()

        let (direction, position) = cameraVector
        arBullet.position = position
        arBullet.physicsBody?.applyForce(direction, asImpulse: true)
        sceneView.scene.rootNode.addChildNode(arBullet)
}

Вот так всего за пару десятков строк мы создали простую игру.

Будущее наступит в сентябре

Как видите, Apple потрудились на славу. Благодаря новому фреймворку ARKit создание приложений с дополненной реальностью — так же просто, как сделать приложение с несколькими контроллерами. При этом вам не нужно беспокоиться о красивых декорациях. Эта технология точно изменит наше представление о мобильных приложениях.

Скачивайте новый Xcode 9, и создавайте приложения, которые добавят в наш мир виртуальной магии. Будущее уже здесь. Ну или будет здесь ближе к сентябрю, после очередной презентации Apple.

Демо проект

Скачивайте в репозитории Touch Instinct

возможности и примеры / Хабр

Многие люди верят, что за дополненной реальностью — будущее. Если виртуальная реальность погружает вас в цифровой мир, то дополненная «вливается» в реальный мир, делает обыденность интереснее, что позволит в будущем крутить показывать вам рекламные баннеры на домах, на транспорте и других людях, так что вы вообще не сможете отличить настоящий рекламный щит от иллюзорного.

В технологических гигантах, очевидно, понимают этот тренд. Google для своей мобильной операционки Android разработала инструмент Project Tango, с помощью которого элементы дополненной реальности можно просматривать на экране смартфона. Apple не отстаёт: на конференции WWDC этого года компания представила инструмент для iOS с говорящим названием ARKit. Разработчики с энтузиазмом начали экспериментировать. Появились приложения для парковки гоночных машин на стоянку, танцев роботов на кухне и посадки первой ступени Falcon 9 в бассейн, а осенью поддержку технологии получит игра Pokemon Go. Давайте обсудим несколько потенциальных направлений для использования дополненной реальности, включая развлечения (PornHub?), обучение и медицинские цели и посмотрим на самые интересные работы.

Хирурги тренируют навыки с помощью операций на тренажёрах, чтобы не отправлять в расход пациентов. В нью-йоркском медколледже Weill Cornell есть специальная комната, оборудованная системой виртуальной реальности. В тех же целях может использоваться дополненная реальность: студенты смогут стоять у бюста и рассматривать, что находится внутри его черепа, как в видео с джунглями в гараже. Учитывая, что для неё не нужно специальное оборудование, часть студентов сможет тренироваться очень часто.

Пока подобных тренажёров среди разработанных примеров нет. Зато есть образцы, позволяющие показать Солнечную систему. Мне не хватало этого приложения, когда я дочери объяснял, почему день сменяется ночью, с помощью прижатого к источнику света жёлтого шара и маленького шарика.

Дополненная реальность позволяет разместить любые шедевры в любом месте. Мы, конечно, и там умеем пользоваться поисковиками, и увидеть плоские изображения для нас не проблема. Скульптуры были бы интереснее, так как дополненная реальность поможет разглядеть их со всех сторон. Игровая форма этого действия позволит просвещать как можно больше людей. Технологии ведь созданы, чтобы мы становились лучше?

Если вернуться к упоминанию медицины, то ещё в 2014 году Google Glass начали использовать для помощи людям с болезнью Паркинсона. Очки дополненной реальности напоминают о приёме лекарств, при необходимости «будят» пациента, отображают визуальные подсказки. Робот на экране мог бы стать подобным виртуальным помощником для детей или для взрослых.

На стыке развлечений и образования находятся работы Томаса Гарсии. Первым он представил проект по посадке лунного модуля на Луну. Позже он на заднем дворе своего дома посадил ступень Falcon 9 на морскую платформу в бассейне.

Смотрите видео со звуком.

«Страдаешь от одиночества? Устал работать самостоятельно? Ненавидишь принимать решения?

Собери совещание!» — народная мудрость. Коллегам теперь можно показать объёмные диаграммы, висящие прямо в воздухе в переговорной, превратив скучную встречу в высокотехнологичное совещание из будущего.

Помните, как лет 10-12 назад можно было убивать комаров в дополненной реальности на экране Nokia 3650? Теперь у нас есть то же самое, но на iPhone, и с 8-битными инопланетянами в стиле Space Invaders из далёких 1970-х.

А как насчёт поиграть в Dead House в собственной квартире — разве не чудесная идея?

Танки или крейсеры на полу квартиры будут смотреться крайне интересно.

После просмотра следующего видео на ум пришла идея спецпроекта для какой-нибудь марки автомобиля, машинного масла или шин: гонка на ближайшей дороге, где от пользователя требуется показать максимальное мастерство в дополненной реальности и загрузить видео.

В дополненной реальности порно тоже будет. И продажи подушек для обнимания ещё испытают потрясения, если всё сложится правильно.

Виртуальную реальность в порно уже используют, и в дополненной реальности оно будет. Производителям такого контента откроются огромные возможности, учитывая реалистичность. Рынок подушек для обнимания испытает потрясение, если всё сложится правильно. Или нет — политика Apple на тему эротического контента довольно строга.

Далее на видео — два человека, играющие в баскетбол: я раза три пересмотрел, пока понял, что их обоих нет в реальности. Затем — героиня Overwatch.

Google работает с дополненной реальностью долгие годы. У нас были очки Google Glass, которые до сих пор используют для исследовательских целей, и есть Project Tango, который поддерживает лишь несколько устройств. Для Tango нужны дополнительные датчики и совместимые процессоры, что на рынке Android, богатом на производителей, обеспечить сложно. С другой стороны, технология от Apple будет работать со всеми устройствами на iOS 11 и процессорами A9 и A10, то есть с iPhone 6S и выше и iPad 7-го поколения.

Количество устройств по сравнению с Tango получается огромным: по итогам 2016 года 34% всех активированных в США телефонов были сделаны Apple.

Как работает инструмент Apple ARKit, дополненная реальность в айфоне или айпаде


Своё название инструмент Apple ARKit получил в соответствии с главной функцией — предоставить
набор инструментов (Kit) разработчикам приложений, чтобы те могли задействовать дополненную
реальность (AR). Технология Apple ARKit включена в iOS 11 — версию операционной системы для
айфонов и айпадов, которая увидела свет в 2017 году.

Что такое ARKit? Главный успех

Фактически, это готовая, унифицированная платформа для создания приложений с использованием
дополненной реальности. По этой причине многие обозревали сравнили запуск ARKit с созданием
каталога App Store. По масштабности эти два события действительно сопоставимы, и вот почему.


В отличие от прежних версий операционной системы, дополненная реальность в iOS 11 стала
полноценным инструментом, доступным каждому разработчику. Так же как в 2008 году App Store
унифицировал использование сенсорного дисплея, ARKit в 2017 году вывел на единый уровень
возможности, связанные с дополненной реальностью.


Теперь разработчикам не нужно тратить уйму времени и сил, чтобы самостоятельно «учить»
устройство на iOS анализировать окружающий мир и создавать AR в оперативной памяти.

Как создаётся дополненная реальность в iPhone и iPad

Вне зависимости от того планируется использовать созданное приложение для развлечения или для
практических задач, инструментальные средства используются одни и те же:

  • камеры устройства получают визуальное изображение;
  • микрофон и некоторые другие датчики получают звук, считывают сведения о вибрациях и о других
    изменениях;
  • процессор обрабатывает поступающую информацию и согласовывает её с командами, которые
    подаются из самого приложения.


Оснащённые набором инструментов AR iPhone и iPad теперь «умеют» самостоятельно обнаруживать
горизонтальные и вертикальные поверхности, определять источники света и тени, различать голоса и
лица и многое другое. Процессоры семейства A9 и более поздние модели в полной мере справятся с
тем, чтобы задействовать поступающую информацию и создавать дополненную реальность.


Потенциал применения ARKit в приложениях и играх

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

  • свободную навигацию по картам и получение информации о мире;
  • измерение расстояний и других показателей;
  • трёхмерное рисование и моделирование;
  • симуляторы езды, полёта, других процессов;
  • развлекательные и игровые приложения, так или иначе основанные на взаимодействии с
    реальным
    миром.


Чем дальше, тем больше становится коммерческих, обучающих и игровых программ. Инструменты,
созданные командой Apple, применяются разработчиками по всему миру.

«В действительности всё не так впечатляюще» — Офтоп на vc.ru

Примеры использования AR-технологий от Apple и впечатления разработчиков, уже успевших с ними поработать.

В начале июня 2017 года на конференции для разработчиков WWDC 2017 корпорация Apple представила новую версию своей мобильной операционной системы — iOS 11. Помимо прочих нововведений, iOS 11 получила встроенную поддержку технологий дополненной реальности, а разработчики — набор инструментов для работы с ними ARKit.

В отличие от основного конкурента — технологии Google Tango, — инструменты дополненной реальности от Apple работают на устройствах с поддержкой iOS 11 без установки дополнительных аппаратных средств. Google Tango работает только на устройствах, оборудованных набором специальных датчиков.

Среди недостатков системы мобильные разработчики, с которыми пообщалась редакция vc.ru, называют более низкую точность работы по сравнению с Google Tango. Для замера расстояний и создания изображений в ARKit в основном используются возможности камеры смартфона, а на её работе может сказываться плохое освещение и другие факторы. При этом точность всё равно остаётся достаточно высокой по сравнению со сторонними технологиями, считают журналисты.

Технологии дополненной реальности в устройствах на базе iOS станут доступны пользователям осенью 2017 года с выходом стабильного релиза операционной системы iOS 11.

Разработчики смогли опробовать технологию сразу после презентации WWDC 2017 — и некоторые из них уже представили разработки на базе новых инструментов. Например, команда студии Laan Labs создала виртуальную линейку, которая позволяет замерять расстояния с погрешностью в несколько миллиметров. Наиболее интересные примеры применения технологии собирают авторы сайта Made With ARKit.

Тестируем возможности ARKit. Создаем игру с дополненной реальностью

На WWDC 2017 Apple анонсировала ARKit — SDK для работы с дополненной реальностью. Благодаря ему порог вхождения в эту технологию стал значительно ниже. Можно ожидать появления большого количества качественных игр и приложений.

Если вы смотрели Keynote, то, вероятно, вы уже в восторге от увиденного. Игровой мир, который инженеры Apple смог оставить на обычном столе при помощи ARKit, не может оставить равнодушными даже самых искушенных геймеров.Это был не просто прототип, а хорошо работающая технология, над которой действительно потрудились. В этом легко убедиться, запустив несколько демо или попробовав самим привнести что-либо виртуальное в наш мир.

Вынужден расстроить счастливых обладателей iPhone 6 и ниже. На данных девайсах все эти прелести жизни будут недоступны. Для использования всех ключевых функций ARK необходим процессор А9 и выше. Apple, конечно, предоставит урезанный доступ к функциональности, но это уже совсем не то.

Дополненная реальность

Дополненная реальность (дополненная реальность, AR) — это виртуальная среда, которая накладывается на реальный мир для придания большей выразительности, информативности или просто ради развлечения. Термин, предположительно, был предложен исследователем компании Boeing Томасом Коделлом еще в 1990 году. Уже тогда начали появляться первые примеры устройств с данной технологии. Впервые дополненная реальность реализована на электронном шлеме летчиков для вывода информации о полете и радаре.

Хочется спросить, чем же все занимались почти 20 лет и почему масштабное развитие эта технология получила лишь сейчас. Все предельно просто. Появление хороших камер в телефонах, сенсоров и развитие технологий компьютерного зрения сделали это возможным.

Что же можно сделать полезного и чего ждать в ближайшее время на полках AppStore? На самом деле все ограничивается лишь фантазией разработчиков. Можно с уверенностью назвать несколько областей, где AR произведет революцию с выходом нового фреймворка от Apple:

  • Игровая индустрия;
  • Архитектура;
  • Киноиндустрия.

ARKit

ARKit — не волшебная палочка Гарри Поттера, а инструмент, умеет грамотно обрабатывать большое количество данных, полученных от устройства. Благодаря камере и датчику движения фреймворк отслеживает движение, находит поверхность и определяет освещенность. После анализа данных мы пересечения получаем представление об окружающем мире в виде точек, координаты положения и положения камеры в пространстве.

Основой принцип ARKit является слежение за окружающим миром для создания модели реального мира.Фреймворк распознает особенности особенности видеокадров, отслеживает изменения их положения видеокадров и сравнивает эту информацию с данными от датчиков движения. Результатом является виртуальная модель реального мира. Отдельная возможность — распознавание плоских горизонтальных поверхностей. ARKit находит плоскости и сообщает об их расположении и размерах.

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

Основой ARKit являются ARSCNView и ARSKView .Они для отображения живых видео и рендеринга 3D и 2D изображений. Как все уже догадались, это наследники от SCNView и SKView . Следовательно, ARKit не привносит каких-то невероятных функций в отображении данных. Это все те же движки для работы с 2D и 3D графикой, с которым уже все знакомы. Поэтому порог вхождения в систему будет достаточно низко. Apple знаменита своим технологиям и любовным продуктам, но несмотря на это разработчики ARKit сделали поддержку Unity и Unreal Engine.Это положительно скажется на количестве качественных приложений, которые появятся в ближайшее время.

ARSCNView и ARSKView содержат в себе сердце ARKit — ARSession . Именно этот класс содержит в себе все необходимое для работы с дополненной реальностью. Для запуска ARSession необходимо передать конфигурацию работы сессии.

Тип конфигурации определяет стиль и качество работы AR, которое может быть достигнуто:

  • На девайсах с процессором A9 и новее можно использовать ARWorldTrackingSessionConfiguration .Именно эта конфигурация дает возможность воспользоваться всей мощью нового фреймворка. Для вас будет создана модель окружающего мира в реальности камеры. Это поможет расположить виртуальные объекты с максимальной точностью.
  • На остальных девайсах, поддерживающих ARKit, будет доступен лишь ARSessionConfiguration . Базовый класс предоставляет информацию о движении устройства в рекламе, но не строит виртуальных моделей.Это не даст необходимого эффекта и не позволит насладиться всем качеством новой технологии. Вам будет недоступна возможность фиксации виртуальных объектов относительно объектов реального мира.

После выбора типа конфигурации необходимо создать ее экземпляр, произвести настройку и запустить сессию:

  override func viewWillAppear (_ animated: Bool) {
        super.viewWillAppear (анимированный)

        // Создаем конфигурацию сеанса
        let configuration = ARWorldTrackingSessionConfiguration ()

        // Запускаем сеанс просмотра
        sceneView.session.run (конфигурация)
}  

Важно помнить, что ARKit потребляет довольно много энергии для расчетов. Если View контентом не отображается в данный момент, то смысл приостановить сессию на это время, используя session.pause () .

После запуска сессии можно начинать работать с виртуальным контентом. Если хотите, чтобы ARK распознал вал плоскости, не забудьте установить значение planeDetection у конфигурации в значение по горизонтали .Изначально распознавание горизонтальных поверхностей выключено. Будем надеяться, что в будущем появится возможность найти и вертикальные поверхности, но пока только горизонтальные.

Способ получения информации об окружающей среде зависит от того, какой вид отображения данных вы будете использовать ARSCNView , ARSKView или Metal . Единицей информации, которую предоставляет ARKit, является ARAnchor . Если у вас включено распознавание поверхностей, то вы столкнулись с сабклассом ARPlaneAnchor .Он содержит в себе информацию о найденных плоскостях. Благодаря данным якорям есть возможность ориентироваться в визу. В случае использования Metal вам придется вручную выполнить рендерингом. Тогда можете подписаться на обновления, используя делегат ARSessionDelegate в классе ARSession , и получить якоря от сессии. Если вы используете один из движков Apple для рендеринга объектов, тогда есть возможность использовать более удобными делегатами ARSCNViewDelegate или ARSKViewDelegate .

На первый взгляд все довольно просто. Почти сложную работу делает ARSession . Давайте попробуем сделать тестовое приложение.

Тестируем возможности ARKit

Дополненная реальность сейчас у всех ассоциируется с игрой Pokémon GO, которая взорвала рынок игровой индустрии. Попробуем сделать нечто похожее.

Для создания тестового приложения мы воспользуемся ARSCNView для создания и рендеринга 3D моделей. Наша игра будет состоять из 2 этапов.Сначала мы будем расставлять мишени по комнате, а после пытаться как можно быстрее попасть по ним всем. Игра довольна примитивна, но демонстрирует простоту создания игр с дополненной реальностью.

Начнем с того, что растянем на весь ViewController ARSCNView и создадим IBOutlet. Далее будем работать с ней, как с обычной SCNView . Произведем предварительную настройку. Сделаем контроллер контактатом физического мира и выведем статистику. Настроим запуск и паузу сессии при появлении и скрытии контроллера.

  переопределить функцию viewDidLoad () {
        super.viewDidLoad ()

        sceneView.scene.physicsWorld.contactDelegate = self

        // Показать статистику, такую ​​как частота кадров и информация о времени
        sceneView.showsStatistics = true
}

переопределить функцию viewWillAppear (_ animated: Bool) {
        super.viewWillAppear (анимированный)

        // Создаем конфигурацию сеанса
        let configuration = ARSessionConfiguration.isSupported?
ARWorldTrackingSessionConfiguration (): ARSessionConfiguration ()

        // Запускаем сеанс просмотра
        sceneView.session.run (конфигурация)
}

переопределить функцию viewWillDisappear (_ animated: Bool) {
        super.viewWillDisappear (анимированный)

        // Приостановить сеанс просмотра
        sceneView.session.pause ()
}  

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

ARKit настолько прост, что мы больше не будем использовать никакие его настройки.Единственное, что еще понадобится — это расположение камеры в виртуального мира. Остальное — дело техники и немного SceneKit.

Мы не будем здесь описывать количество участков или подсчет очков. Это не так важно, и вы это увидите сами в ДЕМО, представленном в конце статьи.

Наша игра содержит две модели объектов: шарик, который мы будем стрелять, и летающие логотипы Touch Instinct. Для добавления этих моделей на экран необходимо создать их, используя SCNNode .

Что понадобится, чтобы создать физический объект:

  • задать фигуру определенного размера;
  • создать фигуру с физическими свойствами для управления контактами с другими объектами;
  • создать физическое тело для описания поведения объекта при соприкосновении;
  • задать текстуры.

Пример реализации классов патрона в виде шара и логотипа в виде куба с нужными текстурами.

  класс ARBullet: SCNNode {

    override init () {
        супер.в этом()

        пусть arKitBox = SCNSphere (радиус: 0,025)
        self.geometry = arKitBox
        let shape = SCNPhysicsShape (geometry: arKitBox, options: nil)
        self.physicsBody = SCNPhysicsBody (тип: .dynamic, shape: shape)
        self.physicsBody? .isAffectedByGravity = false

        self.physicsBody? .categoryBitMask = CollisionCategory.arBullets.rawValue
        self.physicsBody? .contactTestBitMask = CollisionCategory.logos.rawValue

        // добавляем текстуру
        let material = SCNMaterial ()
        материал.diffuse.contents = UIImage (с именем: "art.scnassets / ARKit_logo.png")
        self.geometry? .materials = [материал]
    }

    требуется инициализация? (coder aDecoder: NSCoder) {
        fatalError ("init (coder :) не реализован")
    }

}  
  class Logo: SCNNode {

    override init () {
        super.init ()

        let logo = SCNBox (ширина: 0,1, высота: 0,1, длина: 0,1, chamferRadius: 0)
        self.geometry = логотип
        let shape = SCNPhysicsShape (геометрия: логотип, параметры: ноль)

        я.PhysicsBody = SCNPhysicsBody (тип: .dynamic, shape: shape)
        self.physicsBody? .isAffectedByGravity = false

        self.physicsBody? .categoryBitMask = CollisionCategory.logos.rawValue
        self.physicsBody? .contactTestBitMask = CollisionCategory.arBullets.rawValue

        // добавляем текстуру
        let material = SCNMaterial ()
        material.diffuse.contents = UIImage (с именем: "art.scnassets / logo-mobile.png")
        self.geometry? .materials = Массив (повторение: материал, количество: 6)
    }

    требуется инициализация? (coder aDecoder: NSCoder) {
        fatalError ("init (coder :) не реализован")
    }

}  

Хочется обратить внимание на CollisionCategory.Это структура используется для определения типа объекта при контакте.

  struct CollisionCategory: OptionSet {
    пусть rawValue: Int

    static let arBullets = CollisionCategory (rawValue: 1 << 0)
    static let logos = CollisionCategory (rawValue: 1 << 1)
}  

Это стандартная тактика для определения контакта. Свойство categoryBitMask задает маску конкретного объекта, а contactTestBitMask настраивает все контакты, которые нам будут интересны и которые мы хотим получать уведомления.

Раз мы заговорили про обработку контактов, давайте посмотрим, как это выглядит в контроллере. Во viewDidLoad 900 мы уже подписались на события контактов физического мира. Осталось реализовать одну функцию.

  расширение ViewController: SCNPhysicsContactDelegate {

    func PhysicsWorld (_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact) {
        охранник пусть nodeABitMask = contact.nodeA.physicsBody? .categoryBitMask,
            пусть nodeBBitMask = контакт.nodeB.physicsBody? .categoryBitMask,
            nodeABitMask & nodeBBitMask == CollisionCategory.logos.rawValue & CollisionCategory.arBullets.rawValue else {
                    возвращение
        }

        contact.nodeB.removeFromParentNode ()
        logoCount - = 1

        if logoCount == 0 {
            DispatchQueue.main.async {
                self.stopGame ()
            }
        }

        DispatchQueue.main.asyncAfter (крайний срок: .now () + 0,5, выполнить: {
            contact.nodeA.removeFromParentNode ()
        })
    }

}  

Самое интересное - это первая проверка того, что произошло именно соударение патрона и мишени в виде куба.Она выполняется на основе битовой маски. Это очень удобно и избавляет от большого количества других проверок.

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

Две основные игровые функции - это добавление мишени и выстрел. Добавление происходит на небольшом расстоянии от экрана в той стороне, куда направлена ​​камера. Мы просто создаем уже сконфигурированный объект куба, добавляем его на сцену и настраиваем его расположение относительно камеры в пространстве.

  private func addLogo () {
        guard let currentFrame = sceneView.session.currentFrame else {
            возвращение
        }

        let logo = Logo ()
        sceneView.scene.rootNode.addChildNode (логотип)

        var translation = matrix_identity_float4x4
        translation.columns.3.z = -1
        logo.simdTransform = matrix_multiply (currentFrame.camera.transform, перевод)

        logoCount + = 1
        if logoCount == ViewController.logoMaxCount {
            начать игру()
        }
}  

При выстреле мы также создаем объект шара.Добавляем его на сцену. Но теперь нам необходимо не просто его добавить, но и придать ему ускорение. Для этого мы определяем позицию посередине экрана и придаем ускорение, приложив силу в нужном направлении.

  частная съемка функций () {
        пусть arBullet = ARBullet ()

        let (направление, положение) = cameraVector
        arBullet.position = позиция
        arBullet.physicsBody? .applyForce (direction, asImpulse: true)
        sceneView.scene.rootNode.addChildNode (arBullet)
}  

Вот так всего за пару десятков строк мы создали простую игру.

Будущее наступит в сентябре

Как видите, Apple потрудились на славу. Благодаря новому фреймворку ARKit создание приложений с дополненной реальностью - так же просто, как приложение с установленными контроллерами. При этом вам не нужно беспокоиться об красивых декорациях. Эта технология точно изменит наше представление о мобильных приложениях.

Скачайте новый Xcode 9, и создавайте приложения, которые добавляют в наш мир виртуальной магии. Будущее уже здесь.Ну или будет здесь ближе к сентябрю, после очередной презентации Apple.

Демо проект

Скачивание в репозитории Touch Instinct

.

Что такое ARKit? Дополненная реальность для каждого в iOS 11

Что такое ArKit? Недавно компания Apple объявила о создании AR-платформы в iOS 11. Для разработчиков уже специальный набор инструментов для создания приложений с дополненной реальностью.

Apple уверена, что за дополнительную реальность будущее, и работа в этом направлении уже приносит первые плоды.

ArKit представляет собой специальный набор инструментов для создания приложений с дополненной реальностью.

Чтобы дополненная реальность работа, Apple использует процессор (в новых A11 Bionic под это выделена отдельная подсистема), встроенную камеру устройства и набор датчиков для анализа окружающего пространства.

Что может ARKit?

Декорирование пространства

Благодаря этому можно будет посмотреть на то, как будет выглядеть та или иная мебель в квартире, не обязательно ехать в ИКЕА.

Автомобили

ARKit можно посмотреть, как будет выглядеть автомобиль в вашем дворе и выбрать ему цвет.

Меню в кафе / ресторанах с дополненной реальностью

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

Навигация по супермаркету

Это просто идеально! Например, таким образом не заблудишься в большом супермаркете в поисках зубной щетки.

Линейка

В жизни бывают разные ситуации.Вот, например, нужно срочно надо что-то измерить с помощью линейки, а ее под рукой нет. ARKit может выручить в данной ситуации.

Игры

Само собой игры, куда без них. Это могут быть простые вещи вроде Pac-Man на кофейном столике или что-то более серьезное вроде мультиплеерных тактических сражений. Кроме того, ARKit позволяет улучшить работу камеры уже AR-игр вроде Pokemon Go - покемоны будут не просто парить в воздухе на воздухе изображения с адекватно перемещаться по поверхностям в поле зрения.

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

.

возможности и примеры Хабр

Многие люди верят, что за дополненной реальностью - будущее. Эта виртуальная реальность погружает вас в цифровой мир, что позволяет в будущем показывать вам рекламные баннеры на домах, на транспорте и других людях, так что вы вообще не сможете отличить настоящий рекламный щит от иллюзорного.

В технологических гигантах, очевидно, понимают этот тренд. Google для своей мобильной операционки Android инструмент Project Tango, с помощью которого можно разработать на экране смартфона.Apple не отстаёт: на конференции WWDC этого года компания представила инструмент для iOS с говорящим названием ARKit. Разработчики с энтузиазмом начали экспериментировать. Появились приложения для парковки гоночных машин на стоянку, танцевальные роботов на кухне и посадки первой ступени Falcon 9 в бассейн, с поддержкой технологий получит игра Pokemon Go. Давайте использовать несколько вариантов цели для использования дополнительной реальности, включая развлечения (PornHub?), Обучение и медицинские и посмотрим на самые интересные работы.

Хирурги тренируют навыки с помощью операций на тренажёрах, чтобы пациентов не отправлять в расход. В нью-йоркском медколледже Weill Cornell есть специальная комната, новая система реальности. В тех же деревнях деревня снова и снова инстинктивно, что находится внутри черепа, что находится внутри его черепа, как в видео с джунглями в гараже. Учитывая, что для нее не нужно специальное оборудование, часть студентов может тренироваться очень часто.

Пока подобных тренажёров среди разработанных примеров нет. Зато есть образцы, позволяющие показать Солнечную. Почему день сменяется ночью, с помощью прижатого к источнику света жёлтого шара и маленького шарика.

Дополненная реальность позволяет связать любые шедевры в любом месте. Мы, конечно, и там умеем пользоваться поисковиками, и увидеть плоские изображения для нас не проблема.Скульптуры были бы интереснее, как дополненная реальность поможет разглядеть их со всех сторон. Игровая форма этого действия просвещать как можно больше людей. Технологии ведь созданы, чтобы мы становились лучше?

Если вернуться к упоминанию медицины, то ещё в 2014 году Google Glass начали использовать для помощи людям с болезнью Паркинсона. Очки дополнительной реальности напоминают о приёме лекарств, при необходимости «будят» пациента, отображают визуальные подсказки. Робот на мог бы стать подобным виртуальным помощником для детей или для взрослых.

На стыке и образования находятся работы Томаса Гарсии. Первым он представил проект по посадке лунного модуля на Луну. Позже он на заднем дворе своего дома посадил ступень Falcon 9 на морскую платформу в бассейне.

Смотрите видео со звуком.

«Страдаешь от одиночества? Устал работать самостоятельно? Ненавидишь принимать решения?
Собери совещание! » - народная мудрость. Коллегам теперь можно показать объёмные диаграммы, висящие прямо в переговорной, превратив скучную встречу в высокотехнологичное совещание из будущего.

Помните, как лет 10-12 назад можно было убивать комаров в дополненной реальности на экране Nokia 3650? Теперь у нас есть то же самое, но на iPhone, и с 8-битными инопланетянами в стиле Space Invaders из далёких 1970-х.

А как насчёт поиграть в Dead House в собственной квартире - разве не чудесная идея?

Танки или крейсеры на полу квартиры будут смотреться крайне интересно.

После просмотра следующего видео на ум пришла идея спецпроекта для какой-нибудь марки автомобиля, машинного масла или шин: гонка на ближайшей дороге, где от пользователя требуется показать максимальное мастерство в дополнительной реальности и загрузить видео.

В дополненной реальности порно тоже будет. И продажи подушек для обнимания ещё испытают потрясения, если всё сложится правильно.

Виртуальная реальность в порно уже использует, и в дополненной реальности оно будет. Производителям такого контента откроются огромные возможности, учитывая реалистичность. Рынок подушек для обнимания испытает потрясение, если все сложится правильно. Или нет - политика Apple на тему эротического контента довольно строга.

Далее на видео - два человека, играющие в баскетбол: я раза три пересмотрел, пока понял, что их обоих нет в реальности. Затем - героиня Overwatch.

Google работает с дополненной реальностью долгие годы. У нас были очки Google Glass, которые до сих пор используют для исследовательских целей, и есть Project Tango, который поддерживает несколько устройств. Для Tango нужны дополнительные датчики и совместимые процессоры, что на рынке Android, богатом на производителей, обеспечить сложно.С другой стороны, технология от Apple будет работать со всеми устройствами на iOS 11 и процессорами A9 и A10, то есть с iPhone 6S и выше и iPad 7-го поколения.

Количество устройств по сравнению с Tango получается огромным: по итогам 2016 года Apple сделала 34% активированных в США телефонов.

.

Как работает инструмент Apple ARKit, дополненная реальность в айфоне или айпаде

Своё название инструмент Apple ARKit получил в соответствии с главной функцией - предоставить
набор инструментов (Kit) разработчикам приложений, чтобы задействовать дополненную
реальность (AR). Технология Apple ARKit включена в iOS 11 - версию операционной системы для
айфонов и айпадов, которая увидела свет в 2017 году.

Что такое ARKit? Главный успех

Фактически, это готовая, унифицированная платформа для создания приложений с использованием
дополненной реальности. По этой причине многие обозревали сравнили запуск ARKit с созданием
каталог App Store. По масштабности эти два события действительно сопоставимы, и вот почему.

В отличие от прежних версий операционной системы, дополненная реальность в iOS 11 стала
полноценным инструментом, доступным каждому разработчику.Так же как в 2008 году App Store
унифицировал использование сенсорного дисплея, ARKit в 2017 году вывел на единый уровень
возможности, связанные с дополненной реальностью.

Теперь разработчикам не нужно тратить уйму времени и сил, чтобы самостоятельно «учить»
устройство на iOS анализировать окружающий мир и создавать AR в оперативной памяти.

Как создаётся дополненная реальность в iPhone и iPad

Вне зависимости от того, планируется использовать созданное приложение для развлечения или для развлечения
практических задач, инструментальные средства используются и те же:

  • устройство камеры получают визуальное изображение;
  • микрофон и некоторые другие датчики получают звук, считывают сведения о вибрациях и о других
    изменениях;
  • процессор обрабатывает поступающую информацию и согласовывает её с командой, которая
    подаются из самого приложения.

Оснащённые набором инструментов AR iPhone и iPad теперь «умеют» самостоятельно обнаруживать
горизонтальные и вертикальные поверхности, определяют источники света и тени, различать голоса и
лица и многое другое. Процессоры семейства A9 и более поздние модели в полной мере справятся с
тем, чтобы задействовать поступающую информацию и создать дополненную реальность.

Потенциал применения ARKit в приложениях и играх

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

  • свободную навигацию по картам и получение информации о мире;
  • измерения расстояний и других показателей;
  • трёхмерное рисование и моделирование;
  • симуляторы езды, полёта, других процессов;
  • развлекательные и игровые приложения, так или иначе основанные на взаимодействии с
    реальным
    миром.

Чем дальше, тем больше становится коммерческих, обучающих и игровых программ. Инструменты,
созданной командой Apple, применяются разработчиками по всему миру.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *