Pico Developer
264 subscribers
13 photos
1 video
28 links
Канал с информацией и интегрированной болталкой про разработку под Pico VR
Download Telegram
Channel created
Приветствую вас на канале посвященном разработке VR приложений под устройства Pico.

Ссылка на чат

У самого автора есть Pico 4, а потому вещаю пока что от своего опыта, но в будущем, если будут иные участники, информация будет обновляться и касательно иных девайсов семейства Pico и не только.
👍3
1) Я хочу делать приложения под Pico, с чего начать?
Сайт с SDK (инструментариями под разработку шлема) Pico. Платформы, образно говоря, три: Unity, Unreal Engine, и Native (т.е. голый SDK, который интегрируется уже в различные инструментарии). Важно сказать: Если вы хотите делать VR игры, вы должны уметь делать 3Д игры, т.е. уметь разрабатывать без VR. В начале я пока буду говорить про Unity, ибо имею дело с ним.

Но важно пометить что если вы делаете не VR приложение, то никто вам не мешает писать приложение в Android Studio. Шлем Pico 4 на платформе Android, и спокойно принимает обычные android приложения.

2) Разная версия SDK рассчитана под определенные версии прошивки.
На примере Unity. В логах обновления указаны под какие версии прошивок те или иные SDK. К сожалению сайт предлагает только последние версии, из-за чего если вы сидите на какой-то конкретно старой прошивке, могут возникнуть трудности. Но переживать не стоит, есть решения, о них позже.
👍3
Архив Pico Unity SDK

2.1.4 (Для ПО 5.4 и выше)
2.1.5 (Для ПО 5.5 и выше)
2.2.0 (Для ПО 5.6 и выше)
2.3.0 (Для ПО 5.7 и выше)
OpenXR SDK Preview (Для ПО 5.7 и выше)
OpenXR SDK 1.2 (Для ПО 5.8 и выше)
2.4.0 (Для ПО 5.8 и выше)

SDK добавляется через Package Manager (Не забудьте распаковать куда-нибудь).

Базовые настройки для проекта следующие:
- в качестве примера можно взять стандартный VR Template, который предлагается при создании проекта.
- после того как SDK интегрирован, важно внести правки в Project Settings -> Player -> Android:
1) Pico работает только с Vulkan API, поэтому во вкладке Other Settings отключаем Auto Graphics API и оставляем там только Vulkan
2) ниже не забываем задать название android-пакету (com.xx.yy)
3) Minimum API Level = 29 (Android 10)

Начиная с 2.1.5 можно задать свое лого заставку при запуске.

Далее, не забываем в Project Settings -> XR Plug-in Management во вкладке Android проставить в качестве XR провайдера PICO (и галочку Initialize XR on Startup тоже, если не стояла)
👍5
Возможные проблемы при разработке под Pico Unity

- После того как сделал билд, и установил в шлеме, проект не грузится\вылетает при запуске
О: Вы используете корректный SDK? Если вы используете последний SDK, а прошивка у вас старая, то вы не выполняете требование по ПО для SDK, он не находит нужные для работы библиотеки в шлеме и вылетает (вы можете убедится в этом, если выполните logcat через adb (это логирование для поиска ошибок)). Аналогично и про последнюю версию Unity, если SDK устаревший а Unity последний, то также возникнут проблемы (более новый OpenXR в Unity 2022, для 2.1.4 последний Unity - 2021 LTS)

- При билде возникают ошибки...
Обозначу некоторые, с которыми я столкнулся
1) Ошибка Gradle, в описании, помимо несовместимости с R5 в будущих версиях, где-то указано что есть проблема с чтением debug-ключа для компиляции под android. Решение - удалить в корне домашнего каталога (C://Users/ИМЯ ВАШЕГО ПОЛЬЗОВАТЕЛЯ) .android (оно скрытное, не забудьте включить отображение скрытых папок и файлов в системе). Билд пересоздаст ключ при след. запуске.
2) Ошибка Gradle, в описании говорится про ошибки доступа к Android SDK. Не уверен что это критично, ибо ошибка выше важнее, но все же. Вы можете в Preferences -> External Tools задать свой Android SDK, или отключить галочку, он может в этом случае найти сам Android SDK (если вы например ставили Android Studio)

- Голова слишком высоко в сцене!
О: В шаблоне по умолчанию задана высота головы, как выяснилось это не нужно, можно удалить у XRRig Camera Y Offset

- Предметы начинают "просвечиваться" слишком близко к голове!
О: XRRig -> Camera Offset -> Main Camera -> Clipping Planes, задайте в Near 0, он автоматом пропишет минимально допустимое значение, оно уже сделает взаимодействие комфортнее.
👍21
По умолчанию в VR Template уже настроен Input Manager, но если вы создали пустой 3D проект, то вот вам файл пресета.

А теперь объяснение что есть что. Если ссылаться на документацию Unity, то можно получить информацию о назначениях кнопок. Наиболее близко к действительности - колонка с Oculus, а именно:

1) Left\Right Primary2DAxis - левый\правый джойстик контроллеров (сама позиция)
2) trigger - "спусковой крюк" контроллеров (float, т.е. со всеми степенями зажатия)
3) grip - то что зажимает большой палец при обхвате (float)
4) primaryButton
- left - X кнопка
- right - A кнопка
secondaryButton
- left - Y кнопка
- right - B кнопка
5) primary\secondary touch - если человек сделал касание, но не нажал
6) grip\triggerButton - bool нажатие клавиши (нажата или нет, без степеней насколько сильно как в обычном варианте)
7) primary2DAxisClick - bool, нажат ли джойстик (как R3 или L3 в PS3\4\5 геймпадах, нажаты ли стики сами)
8) primary2DAxisTouch - bool, есть ли прикосновение к джойстику
9) menuButton - кнопка меню.
👍3
Еще мне известно из опыта что и к кнопке скриншота можно получить доступ, но пока это для меня тайна, что это)

Использование весьма тривиально. В коде через Input.GetAxis (если float состояние) или GetButtonDown (bool) можно получать все необходимые значения.
Пример: Input.GetAxis("XRI_Left_Primary2DAxis_Horizontal"); //Возвращает float данные о том в каком положении джойстик левого контроллера по горизонтали.
👍2
Названия для обращения (если кто-то не знал) можно получить развернув конкретную панель с необходимым параметром. Мало того, вы можете переименовать его, для более удобного обращения в коде.

(Input Manager находится в Project Settings)
👍2
Меня часто пугали аргументом что люди будут тут задавать вопросы, которые немного банальны, и человек что знает как и что просто устанет отвечать на это. Да, необходим какой-то базис в разработке. Как я говорил уже в Базовой информации по разработке, вы уже должны уметь делать 3д игры.

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

Решение
! - learn.unity.com. Да, все гениально - просто. Что может быть лучше чем учится на материале, что предлагают сами разработчики движка?)
Самый простой старт - Pathways, начиная с Unity Essentials, который я благополучно пропустил... переходя к Junior Programmer, который в начале уже берет необходимый так по мне модуль Create with Code, а потом с дополнительными умениями из Creative Core или же напрямик к VR Development... Вы в целом закроете все необходимое для свободного плавания.
👍4❤‍🔥1
Да, тут английский. Не сказать что он тяжелый, весьма базовый. Да и подкреплено это видеоматериалами действий.
Ну и... это ж бесплатно ;) Куда ж лучше, чем если бы вам впаривали очередные курсы от какой-либо компании ;)

(Не посчитайте что это реклама :D, просто это лучше чем игнорировать эту проблему, если она когда-нибудь возникнет)

Ну и напомню что у нас есть чат. Заходите, спрашивайте, делитесь творениями ;)
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Новость для тех кто на Pico 4 и на 5.4.0 прошивке!

Тут недавно в новостях (огромная благодарность PicoLAND) открыли способ использования последних SDK под устаревшую прошивку 5.4.0. Это решает проблему с использованием последней версии Unity, и последнего SDK 2.3.0. Да и в целом иметь гибрид функционала последних прошивок в 5.4.0 это довольно забавно. Проверено, так что пользуйтесь!
❤‍🔥3👍2
Возможно для кого-то не новость, но все же...

Как вы знаете, существует OpenXR, этакая попытка унифицировать множества VR устройств в одну библиотеку. Часть элементов, которые мы используем, уже являются частью OpenXR, а Pico SDK в это интегрируется... но не полностью. Тот факт что мы используем в качестве XR-провайдера PICO а не OpenXR как бы на это намекают.

Головной же болью будет то, как работать с Hand Tracking (Управление руками). У OpenXR есть своя реализация подобного управления, но... она отличается от Pico, и мало того, не подхватывается. Нужно вспоминать про "чудесный" PXR_Manager, проставлять там наличие этой фичи, и работать с PXR библиотеками... (А не нужно. Только включить в PXR Manager и можно работать в XR Hands (OpenXR реализация). Разберусь с искаженным скелетным Mesh и напишу отдельно статью)

Ранее интеграцию более плотную уже делала Pico с экспериментальным модулем OpenXR, в этом случае управление спокойно интегрировалось в Interaction Profiles внутри OpenXR, что давало куда более сильную свободу в мультиплатформе. Но его потом убрали.

Так вот, новость... ожидаем возвращение его в октябре. Саму новость не нашел, но нашел ответ на форуме от Pico.
👍71