SlideShare a Scribd company logo
1 of 41
Download to read offline
Дополненная	
реальность	в	Swift
Вадим	Дробинин	
drobinin.com
В двух словах
• Что	такое	дополненная	реальность?	
• Почему	Swift?	
• Основы	AR	
• Фреймворки	и	SDK	
• iBeacons	for	AR	
• Best	practices
Обо мне
• IT-консалтинг	(drobinin.com)	
• Конференции	(CocoaHeads	
Russia,	Mobius,	etc)	
• Хакатоны	(HackTrain	2.0,	VK	
Hackathon,	etc)	
• Lead	iOS	Developer	(tobox.com,	
swaypay.io,	scoutparking.com,	
zerion.io,	etc)	
• iBeacons	(waveroll.io)
Что такое дополненная
реальность?
Что такое дополненная реальность?
• Augmented	Reality:	
• Фрэнк	Баум	(1901)	
• Айвен	Сазерленд	(1968)	
• Джон	Ханке(2016)		
• Дополнение	сведений	об	окружающем	мире	
• Упрощение	работы	с	информацией	
• Эффект	погружения
ВиртуальностьРеальность
Дополненная	
реальность
Дополненная	
виртуальность
Почему Swift?
Почему Swift?
Основы Augmented Reality
Основы Augmented Reality
• Визуальные	системы	
• Аудио-системы	
• Аудиовизуальные	системы	
• Геопозиционные	системы	
• Оптические	системы
Основы Augmented Reality
• Визуальные	системы	
• Аудио-системы	
• Аудиовизуальные	системы	
• Геопозиционные	системы	
• Оптические	системы
Визуальные системы
• Создание	изображения	на	основе	зрительного	восприятия	
• Дополнение	визуальной	информации
Геопозиционные системы
• GPS	/	ГЛОНАСС	
• Сенсоры	(акселерометр)
Оптические системы
• Обработка	изображений	с	камер	
• Использование	маркеров
Использование маркеров
• Сравнительно	легко	определить	где	находится	пользователь	и	
куда	направлена	камера	
• Легко	определить	пропорции	и	угол	
• Легко	отслеживать	перемещение	и	поворот	камеры	
• Низкая	степень	интерактивности
Виды маркеров
Альтернативные подходы
• Сенсоры	
• Геолокация	
• Распознание	изображений	
• Комбинированные	методы
Фреймворки и SDK
Фреймворки и SDK
• ARToolKit	
• HDAugmentedReality	
• CraftAR	
• Vuforia	
• ARKit.framework	(спасибо,	Apple!)
ARKit: создаём иллюзию
ARKit: создаём иллюзию
• Visual-inertial	odometry:	
• сенсоры	+	компьютерное	зрение	=	высокая	точность	
• Отслеживание	контента:	
• hit-testing	методы	
• plane	detection
ARKit: создаём иллюзию
• ARSCNView	или	ARSKView:	
• Изображение	с	камеры	вместо	фона	
• Встраивает	2D/3D-overlay	поверх	
• Создает	иллюзию	вовлеченности	
• Своими	руками:
ARKit: создаём иллюзию
ARKit: создаём иллюзию
ARKit: создаём иллюзию
ARKit: камера и сцена
ARKit: объекты и расположение
ARKit: ARSessionConfiguration
Hit-testing
• Вы	используете	SpriteKit/SceneKit	для	работы	с	AR:

проверять,	относятся	ли	точки	к	какой-либо	поверхности,	и	если	
относятся,	получать	больше	информации	о	ней	с	помощью	
ARSCNView.hitTest	
• Иначе	искать	точки	с	помощью	ARFrame.hitTest.	
• Важно:	frame	≠	view,	поэтому	координаты	считаются	от	левого	
верхнего	угла
ARKit: Ограничения
• Процессор	A9	/	A10	
• Оптимизация:	
• Metal	
• SceneKit	
• Unity	
• Unreal	Engine	
• CoreMotion	
• Ограниченный	набор	«из	коробки»
Общие ограничения
• Точность	
• Железо	
• Безопасность
iBeacons для Augmented Reality
iBeacons для Augmented Reality
Best practices
Best practices
• Разрабатывайте	для	предсказуемых	условий	освещения	
• Пользуйтесь	методами	трекинга	для	взаимодействия	с	
пользователями	
• Используйте	plane	detection	для	более	точных	результатов	
• Не	забывайте	его	отключить!
Что делать?
• Образование	
• Игры	
• Переводы	
• Реклама
Что читать?
• Introducing	ARKit:	Augmented	Reality	for	iOS

https://developer.apple.com/videos/play/wwdc2017/602/	
• Theory	and	applications	of	marker-based	augmented	reality

Sanni	Siltanen	
• ARKit.framework

https://developer.apple.com/documentation/arkit	
• Mobile	Security	Guide:	how	to	start

http://drobinin.com/#/portfolio/mobile-security-guide-protect-
yourself-and-your-users/
vadim@drobinin.com
Задавайте
вопросы
@Valzevul
Узнавайте на
конференциях

More Related Content

More from Ontico

More from Ontico (20)

ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
 
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
 
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
 
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
 
Синхронизация данных из PgSQL в Tarantool / Вениамин Гвоздиков (Calltouch)
Синхронизация данных из PgSQL в Tarantool / Вениамин Гвоздиков (Calltouch)Синхронизация данных из PgSQL в Tarantool / Вениамин Гвоздиков (Calltouch)
Синхронизация данных из PgSQL в Tarantool / Вениамин Гвоздиков (Calltouch)
 
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
Хранимые процедуры в NoSQL СУБД на примере Tarantool / Денис Линник (Mail.Ru)
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
 

Дополненная реальность в Swift / Вадим Дробинин (it consulting @ drobinin.com)