Pico Developer
264 subscribers
13 photos
1 video
28 links
Канал с информацией и интегрированной болталкой про разработку под Pico VR
Download Telegram
По умолчанию в 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
This media is not supported in your browser
VIEW IN TELEGRAM
Hand Tracking и ужасы мутированной Pico 5.4

Работал с этим долго, и вот благодаря этому обнаружилось что
:
Модификация 5.4 для поддержки нового SDK 2.3.0 - вещь действительно нестабильная, ему явно не хватает компонентов будущих обновлений. Это видно в управлении руками.
1. В SDK 2.3.0 - OpenXR полная реализация. Т.е. достаточно работать с XR Hands внутри Unity. (Но PXR_Manager необходим)
2. Нативный Pico Hand Tracking работает некорректно в SDK 2.3.0 для 5.4 с модификацией на библиотеку, в виду перехода на OpenXR элементы, но что странно - XR Hands OpenXR работает лучше, хотя mesh генерирует отвратно. Причина - отсутствия обнаружения трех костей. Он начинает выворачивать mesh. Нативный - выворачивает mesh еще сильнее.
3. Начиная с 5.7 и выше нет никаких проблем, не удивительно - SDK 2.3.0 официально с 5.7
4. В SDK 2.2.0 работает только нативная реализация, XR Hands не поддерживается. Но, нативная работает вполне корректно. Что уже решает вопрос и с Unity 2022 под Pico 5.4, своим лого, и с Hand Tracking.
Базовая информация по использованию Hand Tracking в Unity

Если у вас 5.7 и выше:
- Заходим в Package Manager - Unity Registry, и добавляем XR Hands в проект
- Экспортируем в проект Hand Visualizer (это пример, его можно увидеть во вкладке XR Hands внутри Package Manager)
- На сцене разместите PXR_Manager, включите там Hand Tracking
- Разместите prefab Left\Right Hand Tracking в XR Origin рядом с главной камерой.
...все.

Если у вас ниже - используем SDK ниже, и нативный способ.
- Переходим к пакетам (Packages) и ищем PICO Integration
(там, если что, есть и prefab нашего контроллера с полным перехватом управления и индикацией зарядки)
- В Prefabs есть Hands Left\Right, перетаскиваем схожим образом с OpenXR - в XRRig рядом с камерой.
- На сцене разместите PXR_Manager, включите там Hand Tracking
...все.

Заранее отвечу про "физические" руки. Дело в том что mesh - динамический, нельзя просто задать Mesh Collider. Есть ухищрения и даже реализации, но самый простой способ - создание в костях упрощенные 3д объекты с коллайдером и физикой. Можно скрыть их видимость и в целом терпимо ;)
Pico Developer pinned «Приветствую вас на канале посвященном разработке VR приложений под устройства Pico. Ссылка на чат У самого автора есть Pico 4, а потому вещаю пока что от своего опыта, но в будущем, если будут иные участники, информация будет обновляться и касательно иных…»
Появилась возможность и для Pico 3 использовать самый последний SDK.
(под прошивку 5.4.0)

Ссылка на APK файл (нужно только установить на шлем)
В чате уже проверили работоспособность, огромное спасибо за это Komandor 15

Пока что без OpenXR фикса
(да и ставится под сомнение вообще данный фикс, если честно. Это можно увидеть на примере трекинга рук)

У нас умудрились поставить OpenXR fix Pico 4 на Pico 3, лишь с этим появилась полная работоспособность... Но помечу, что OpenXR fix под Pico 3 не был еще предоставлен группой PP Stuff, потому, на свой страх и риск.
Пока разбирались что вообще происходит с Pico 3 при OpenSDK fix в PP Stuff...

В тестовом виде, релизнули и OpenXR fix под Pico 3 (Прошивка 5.4.0)
Ссылка на скачивание
Ссылка на скачивание в ТГ

Установка через компьютер, аналогично и для Pico 4
Антивирус ругается, Python довольно некрасиво взаимодействует с adb для установки необходимых компонентов в шлем.

Удалите предыдущий OpenXR fix, перед тем как ставить этот!!! (если ставили, конечно)
На фоне скандалов по поводу требования доплачивать разработчикам движка за каждую установку приложения, сделанного в Unity, весьма забавно продолжать постигать его дальше. (Godot меж тем все ближе...)

Мы уже знаем как обращаться к контроллерам, чтобы закрыть тему с ними, остается лишь познать прелести в-В-вибрРрации!
Пользуемся документацией SDK.
В отличии от Input Manager, тут все делается уже через код, т.к. обращаемся к Pico SDK

Первое что нужно в коде - пометить что используете данный SDK. Если SDK уже в проекте, то достаточно в начале кода подписать
using Unity.XR.PXR;

Существует 2 варианта вибраций - (не) буферный. не-буферный - базовый (Pico 4&3 поддерживает) (буферный - только Pico 4) Вот пример (SDK 2.1.4):
PXR_Input.SendHapticImpulse(PXR_Input.VibrateType.RightController, 0.5f, 500, 100);
- Создает ивент вибрации на правый контроллер с средней силой (0.5f), на 500мс, с частотой 100Гц

Значения силы варьируются от 0 до 1 (float данные)
Время задается в мс (1 сек = 1000 мс)
Частоту, которую могут выдать контроллеры - от 50 до 500Гц (по заверению Pico), однако я не рекомендую идти дальше 300, ибо выше контроллеры напоминают пищалку, нежели контроллеры с вибрацией.
Крайне приятно когда есть примеры, какие значения подходят под какие ситуации. Оставлю это также тут.
И вновь, на фоне уже извинений Unity по поводу всего его скандала, а также с дополнительным подарком в виде включении в Personal версию движка (т.е. бесплатной) функцию смены Splash экрана (начальная заставка), мы продолжаем постигать в-В-вибрРрацию!

Теперь мы говорим про буферный режим вибрации.
Как указано из документации, он поддерживается только на Pico 4, и представляет из себя более сложную систему, которая направлена на более интересные тактильные ощущения. Особенность - взаимодействие с аудио-файлами\шаблонами PHF.

С PHF файлами не так интересно, шаблон есть в документации. Если кратко, то также как и с не буферным вариантом, только задаете более детально как и что в какое время.

А вот с аудио... ;)
Пример:
1. Сначала нужно задать AudioClip:
[SerializeField] private AudioClip audioVibration;
2. Нам потребуется некая переменная, которая будет использоваться как ссылка к нашей вибрации. Что там - нам особо не важно, это уникальный ID для обращении к вибрации.
int vibration_SourceID = 404;
3. Создаем буферную вибрацию:
PXR_Input.SendHapticBuffer(PXR_Input.VibrateType.BothController, audioVibration, PXR_Input.ChannelFlip.No, ref vibration_SourceID, PXR_Input.CacheType.CacheAndVibrate);
Посылаем в буфер вибраций нашу аудиодорожку, на оба контроллера, без инверсии правого и левого канала, с заданной ссылкой vibration_SourceID, и говорим сохранить и запустить вибрацию (CacheAndVibrate).
4. Если у нас, например, PXR_Input.CacheType.CacheNoVibrate, или если мы хотим поставить на паузу или остановить
Мы не можем как к AudioClip просто взять и обратится к объекту и остановить... но мы же не просто так оставляли ссылку)
PXR_Input.PauseHapticBuffer(vibration_SourceID); // ставим на паузу нашу аудиодорожку\вибрацию
PXR_Input.ResumeHapticBuffer(vibration_SourceID); // возобновляем
PXR_Input.StopHapticBuffer(vibration_SourceID); // останавливаем.

На этом с вибрацией вроде все... ну, только если еще обсудить использование OpenXR возможностей делать вибрацию... но это в другой раз.
Ну и... да, опять скажу про чат.

У нас тут хештеги появились... #ищукомпаньона. Заходите в наш чат, и ищите по данному хештегу людей, или сами оставляйте запись... собирайтесь, творите!)

Люди потихоньку что-то творят, и это то, в чем смысл данного места - подталкивать к изучению нашего любимого шлема, и в работе с VR. Мы все - не эксперты, такие же новички, так что бояться идти на контакт точно не надо. Вместе изучать - веселее!)
Коллаж на фоне - кадры проектов различных людей в чате...
Да простят меня эти люди, что я без спроса их контент заюзал, аминь

Ссылка на чат
Pico, совместно с Intel стартанула 2023 Pico Dev Jam. Для тех кто хочет испытать свои силы, ну или посмотреть уровень участвующих там, рекомендую к изучению.

Доступен Jam для EMEA регионов (РФ включена), для Азии и США.

За первое место обещают $8.000, 2-ое - $3.000, 3-ье - $1.500, 4-ое - $500, и 5-ое - $300 соответственно.
Также, есть награды в определенных категориях:
- Best Game App (игровой) - $1.000
- Best Non-Game App (не игровой) - $1.000
- Best Hand Tracking (приложение, что использует трекинг рук) - $600
- Best MR Design (насколько удачно приложение в смешанной реальности?) - $600

Особенность данного Jam - данный Jam не обязательно предполагает готовый проект. Под данный Jam в требованиях указан и простой диз. док (Design Doc), так что... это весьма любопытно.

Оставлю вам также критерии данного Jam:
- Насколько ваш проект подходит под тему данного Jam (Переосмысление XR: За гранью воображения - к инновациям) (20 баллов)
- Насколько ваш проект\идея оригинальна (30 баллов)
- Техническое исполнение (есть особенность, в случае если ваш проект - диз. док. Подробнее тут) (30 очков)
- Насколько вы хорошо показали свой проект (10 очков)
- Насколько проект полезен (10 очков)
- Как хорошо вы интегрировали все модули Pico (20 очков)

Дата проведения:
Регистрация уже открыта, и продлится она до 10 ноября.
Сдача проектов открывается с 2 октября. Дедлайн - 10 ноября
С 13 по 30 ноября судейство, и в районе 10 декабря - результаты данного Jam.

Более подробно по времени смотрите на сайте Jam'a.
Огромное спасибо за новость Lokus Kus
🔥4👍21
Небольшое дополнение:

Если зайти в правила данного Jam'a можно увидеть небольшое расхождение по участвующим странам.

Где-то указан как EMEA, а где-то более ограниченный список стран участников. Чему верить - хз ;)
UPD: да, вариант с жестким ограничением стран - истинный, варианта с РФ там нет.

Ориентируемся в вариантах, во время регистрации.

Логично предположить, что активен Jam там, где официально есть шлем (а он есть в США?)