January 24

Разбор задач Технологии дополненной реальности. НТО 24/25. Этап 2



Индивидуальные задания

Все задачи были разбиты по четырем ролям:

  • 3д-Дизайнер
  • ИИ-разработчик
  • AR-разработчик
  • Веб-разработчик

Задания для AR-разработчика и Веб-разработчика в данном блоке были объединены

Ниже представлены видео разборы и текстовые пояснения к соответствующим задачам


3д-Дизайнер: Правильная последовательность (1)

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

Material Output и шейдер в условиях задачи не предусмотрены, так как они создаются автоматически.

Видео разбор задачи 1

Ответ:4132 24153 2341

3д-Дизайнер: Облако точек (2)

Видео разбор задачи 2

Алгоритм эталонного решения.

1. С помощью питона написать скрипт, который визуализирует точки в трехмерном пространстве.

import bpy import bmesh

def create_vertices(coords): mesh = bpy.data.meshes.new("NTO_Mesh") obj = bpy.data.objects.new("NTO_Object", mesh)

bpy.context.collection.objects.link(obj) bm = bmesh.new() for coord in coords: bm.verts.new(coord)

bm.to_mesh(mesh) bm.free()

coordinates = тут список координат create_vertices(coordinates)

2. После этого открыть сохранить полученный результат в формате .ply

3. В программе MeshLab открыть данный файл, выбрать функцию Filter -> Normals, Curvatures and Orientation -> Compute normals for point set для создания ориентации вершин в пространстве. Это даст понять программе где находится внутренняя, а где внешняя часть создаваемого меша. Настройки можно оставить по умолчанию. После использования данной функции вершины с внешней стороны должны окраситься в более светлый оттенок, внутри в более темный

4. Выбрать Filter -> Remeshing, Simplification and Reconstruction -> Surface Reconstruction: Screened Poisson. Настройки можно оставить по умолчанию. Получившийся меш сохранить как один из экспортируемых форматов, предпочтительно .fbx или .obj

5. Полученный результат импортировать в приложенный файл формата .blend, использовать модификатор decimate или иным способом уменьшить количество полигонов, наложить подготовленный материал "основной"

6. Нажать Render -> Render Image и полученное изображение отправить на проверку

ИИ-разработчик: Термины больших языковых моделей (3)

  • Токен - Минимальная единица текста, с которой работает языковая модель. Это может быть слово, часть слова или даже отдельный символ.
  • Температура - Параметр модели, который контролирует степень случайности в её ответах. При низком значении модель более предсказуема, при высоком — более креативна.
  • Галлюцинации - Явление, при котором языковая модель генерирует некорректные или несуществующие данные, хотя они выглядят правдоподобно.
  • Дообучение - Процесс обновления нейросети на новых данных для улучшения её производительности или адаптации к новым задачам.
  • Размер контекста - Ограничение на количество токенов (слов, символов), которые модель может учитывать при генерации ответа. Если текст превышает этот предел, часть данных теряется.
Видео разбор задачи 3

ИИ-разработчик: Botpress. Основы(4)

Верными определениями являлись:2,4,6,7

  • Основной Workflow бота начинается с блока Start и заканчивается End
  • Каждый блок представляет собой набор определенных карточек, каждая карточка может выполнять свою функцию. Например указывать боту текст, который он будет выводить при обращению к блоку.
  • В качестве ответа от бота, можно получить не только текст, но например и изображение или геометку
  • Для того, чтобы настроить взаимодействие бота с Базой знаний, или, например, примерить на него какую-либо роль, необходимо определить соответствующего агента
Видео разбор задачи 4

ИИ-разработчик: Botpress. База знаний (5)

Верными определениями являлись:1,4,6

  • Полученный из базы знаний ответ хранится в переменной turn.KnowledgeAgent.answer.
  • При обращении к базе знаний можно указать дополнительные инструкции, например, про желаемому формату ответа.
  • Чтобы передать заданный пользователем вопрос в базу знаний, может понадобиться переменная event.preview.
Видео разбор задачи 5

ИИ-разработчик: Botpress. API (6)

Ответ: listen|fetch|GET|x-user-key|key

Видео разбор задачи 6

ИИ-разработчик: Botpress. Workflow (7)

Видео разбор задачи 7

Предполагаемый ответ: 1.аб, 2.вг, 3.д, 3*.e, 4.ж

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

AR-разработчик и веб-разработчик (задачи 8-17)

Данные задания представлены в виде теста, ниже описаны ответы к ним.

8. С какими 3D-фреймворками JavaScript интегрируется AR.js и mindAR.js?

  1. A-Frame
  2. three.js
  3. Zdog
  4. Cesium
  5. Blippar.js

9. Что такое A-Frame?

  1. Это библиотека для создания мобильных приложений.
  2. Это фреймворк для создания VR/AR-сцен с использованием HTML.
  3. Это инструмент для работы с 3D графикой на Python.
  4. Это приложение для редактирования видео.

10. Какие функции AR поддерживаются AR.js?

  1. Распознавание изображений
  2. Отслеживание геопозиции
  3. Распознавание лица
  4. Отслеживание мира (World Tracking)
  5. Распознавание голоса
  6. Сегментация неба

11. Какие функции AR поддерживаются и MindAR.js?

  1. Распознавание изображений
  2. Отслеживание геопозиции
  3. Распознавание лица
  4. Отслеживание мира (World Tracking)
  5. Распознавание голоса
  6. Сегментация неба

12. Какой формат 3д моделей предпочтителен (поддерживается по умолчанию) для WebAR?

Ответ: GLB \ glb \ Glb \ GLTF \ glTF \ gltf

13. Какие характеристики должны быть у маркера, чтобы обеспечить наивысшее качество отслеживания?

  1. Много разнообразных деталей
  2. Высокий контраст изображения
  3. Повторяющиеся узоры
  4. Избыточное пустое пространство
  5. Разные цветовые схемы для набора маркеров, состоящего из одинаковых изображений (одного изображения)
  6. Изображения низкого разрешения

14. Как загрузить модель на сцену в aframe?

  1. <a-model src="url(path/to/model.gltf)"></a-model>
  2. <a-entity gltf-model="url(path/to/model.gltf)"></a-entity>
  3. <a-box gltf-model="url(path/to/model.gltf)"></a-box>
  4. <a-object model="url(path/to/model.gltf)"></a-object>

15. Ниже представлен шаблон для создания и регистрации пользовательского aframe компонента, где аргументы это {string} name - название компонента и {Object} definition - объект конфигурации компонента, который содержит методы жизненного цикла

AFRAME.registerComponent(‘component-name’, { schema: {}, init: function () {}, update: function () {}, tick: function () {}, remove: function () {}, pause: function () {}, play: function () {} });

  • schema - Определяет и описывает свойство или свойства компонента
  • init -Вызывается один раз в начале жизненного цикла компонента. Обработчик часто используется для: настройки начального состояния и переменных, привязки методов и присоединения слушателей событий.
  • update - Вызывается всякий раз, когда изменяются свойства компонента, в том числе в начале жизненного цикла компонента.  Этот обработчик часто использует this.data для изменения сущности. Также этот обработчик имеет доступ к предыдущему состоянию данных компонента через свой первый аргумент.
  • tick - Вызывается на каждом такте или кадре цикла рендеринга сцены
  • remove - Вызывается всякий раз, когда компонент отсоединяется (отключается) от a-entity. Обработчик часто используется для: удаления, отмены или очистки всех изменений компонента в сущности и для отключения всех слушателей событий.
  • pause - Вызывается, когда a-entity или a-scene останавливаются. Обработчик используется для удаления слушателей событий и исключения возможности динамического поведения.
  • play - Вызывается, когда a-entity или a-scene возобновляются. Обработчик часто используется для добавления слушателей событий

16. Какие три обязательные элемента требуются для создания базовой сцены в Three.js?

  1. Scene
  2. Light
  3. Camera
  4. WebGLRenderer
  5. Raycaster
  6. Orbit Controller

17. С помощью какого метода можно загрузить 3д модель в three.js?

Ответ: THREE.GLTFLoader \ THREE.GLTFLoader() \ GLTFLoader \ GLTFLoader()

Командная задача

Постановка задачи: AR-бот для изучения анатомии

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

Алгоритм работы AR-бота

  1. При наведении на QR-код или поверхность, на экране устройства отображается 3д-модель тела человека, с которым общается пользователь, приветствие и описание возможностей чат-бота. Дополнительно можно отображать 3д-аватар человека, а не модель, на начальном этапе
  2. Пользователь вводит вопрос в отображаемый интерфейс, например, "Что такое сердце?" и нажимает кнопку для отправки вопроса.
  3. Бот делает запрос в базу знаний и при нахождении ответа, отображает информацию пользователю на экране устройства. А так же, подсвечивает орган, о котором идет речь, на 3д-модели. Дополнительно можно реализовать анимацию органа или его детализацию.
  4. Если информация не найдена в базе знаний, то пользователю выводится информация об этом. Дополнительная реализация: можно предложить пользователю несколько вопросов на выбор, на которые бот знает ответ.

Задачу можно разбить на 4 составляющих

1. 3д моделирование

  • Создать 3д модель аватара
  • Создать модели органов: легкие, сердце, мозг, печень, желудок, кишечник
  • Для всех моделей создать материалы/наложить текстуры
  • Предусмотреть возможность просматривать органы

Количество полигонов для каждой модели должно было быть адаптировано под дополненную реальность

2. Чат-бот с базой знаний

  • Реализовать разговорного бота, который способен вести диалог на строго обозначенную тему. То есть, бот должен обладать подгружаемой базой знаний, на которой обучается
  • Разработать концепт базы знаний, и представить его в виде изображения. Пример концепта базы знаний на тему собака
  • Заготовленные ветки диалога, в котором предлагается конечному пользователю поговорить про конкретный орган или составляющую часть. Важно, чтобы бот мог отвечать на запросы написанные на естественном языке
  • Так же, бот должен сообщать остальным частям системы, про какую конкретную часть тела/детали ведется диалог

3. Интерфейс взаимодействия

  • Настроить правильный routing выходов бота и их интеграции на клиентскую сторону (настройка отображения и обеспечение корректного взаимодействия клиента и бота)
  • Для этого необходимо, решить следующие задачи:
    • Настройка передачи запроса боту
    • Написание логики клиента для отображения вывода бота (вывод ответа бота пользователю)
    • Обработка возможных ошибок в выводе бота: объявление стандартизации того, как конкретно должен бот общаться с клиентом с точки зрения объектной модели

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

  • Реализовать клиент, который позволяет коммуницировать с ИИ и отображать результаты ответов при наведении на маркер в дополненной реальности. В задачи AR-разработчика входит не только наложение оверлея на маркер, но и создание AR-интерфейса, который соединит все части работы.
    • Представим, что весь интерфейс можно разделить на два состояния: "ожидание ввода ответа" и "вывод ответа". Все, что происходит между ними должно быть описано в прошлых частях

Формат ввода:

  • UI элементы на экране, которые видно даже без наведения на маркер. UI может быть представлен в формате диалога или поисковой строки: одно поле ввода с кнопкой.
  • При наведении на маркер отображается модель человека.

Формат вывода:

  • Текстовый ответ который содержит информацию о выбранном органе. Ответ может быть представлен в формате ответного UI сообщения или в формате 3д текста на панели рядом с 3д моделью органа.
  • Визуальное выделение выбранного органа. Оно может быть выполнена произвольно, главное чтобы было понятно о каком органе идет речь. Например одним из возможных вариантов может быть следующий.
    • в режиме ввода или при неизвестной информации отображается тело человека с прозрачностью 100%
    • в режиме вывода при “подсветке” например сердца, основное тело становится полупрозрачным и в нем ясно становится видно только сердце.

Оценка 3д-моделей

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

Рекомендации для 3д-дизайнеров

Оценка чат-бота и базы знаний

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

Также, оценивалось наличие первичного сценария (чат-бот здоровается с пользователем, предлагает темы для общения), и боковой ветви сценария, когда пользователь отходит от предзаданных тем.

Оценка интерфейса взаимодействия

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

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

В botpres возможно для варианта последующей интеграции на сайт: web-chat и api. Первый вариант оценивался в малое количество баллов, так как не подразумевает дополнительной обработки запросов и настройки интерфейса

Оценка дополненной реальности

Оценивался разработанный маркер и его считываемость. И соответствие описанному сценарию:

  • При старте и отображении приветственной информации, вывод общей структуры органов в теле человека или самого человека
  • При дальнейшем взаимодействии с приложением были возможны варианты:
    • Акцент на одном конкретном органе внутри общей структуры
    • Отображение исключительно того органа о котором идет речь

А так же оценивалось кроссплатформенность решения с точки зрения расположения UI элементов на различных устройствах.