VRChat OSC
VRChat OSC соединяет vrOS с VRChat по OSC. Отправляйте сообщения в чатбокс с панели на запястье, наблюдайте, как параметры аватара меняются вживую, управляйте внутриигровой камерой и позвольте VRChat самому найти vrOS.
Оно поставляется вместе с vrOS и разрешено заранее, как любое штатное расширение. О модели согласия и о том, как её отозвать, см. Как работают расширения.
Оно работает без VR. Чатбокс работает и при закрытом SteamVR.
Обнаружение
Заголовок раздела «Обнаружение»vrOS анонсирует себя как службу OSCQuery через mDNS и отдаёт небольшое дерево OSCQuery с описанием того, что он слушает. VRChat находит его, читает анонсированный порт и начинает отправку. Вам нигде не нужно вводить порт.
Это даёт две вещи:
- vrOS слушает порт, назначенный системой, а не фиксированный, поэтому он не может столкнуться с собственным приёмником VRChat.
- vrOS знает, действительно ли VRChat на месте. Он опрашивает найденную службу и следит за входящим трафиком. Один пропущенный опрос никогда не переключает состояние, но закрытие VRChat именно обнаруживается, а не предполагается.
Анонсирование включено по умолчанию. Выключите его в настройках расширения, если предпочитаете сами направить VRChat на vrOS.
Настройки
Заголовок раздела «Настройки»| Настройка | По умолчанию | Что это |
|---|---|---|
| Цель отправки | 127.0.0.1:9000 |
Куда vrOS отправляет OSC. Порт приёма VRChat по умолчанию. |
| Адрес приёма | 127.0.0.1:0 |
Где vrOS принимает. Порт 0 означает, что его выбирает система, а OSCQuery анонсирует выбранный. |
| Анонсировать (OSCQuery/mDNS) | Вкл. | Объявлять через mDNS и отвечать на запросы OSCQuery. |
| Префиксы контактов | Пусто | Разделённые запятыми префиксы параметров, которые нужно выдавать как события контактов. |
Чатбокс
Заголовок раздела «Чатбокс»Чатбокс существует на двух поверхностях с общим состоянием: вызываемая панель-оверлей и страница ЧАТ на вкладке Даша. Печатать можно в любой из них. Привяжите панель-оверлей к запястью — после перезапуска она вернётся на то же запястье.
На панели есть текстовое поле, ОТПРАВИТЬ и три переключателя:
- НАБОР показывает внутриигровой индикатор набора, пока вы печатаете. Он снимается, когда вы отправляете сообщение, когда вы очищаете поле и когда фокус уходит с панели.
- ЗВУК определяет, играет ли сообщение звук уведомления VRChat при получении.
- ЛАЙВ отправляет частичный текст по мере набора, а не только по ОТПРАВИТЬ.
Чатбокс VRChat принимает 144 символа. Более длинный текст обрезается по границе символа, и панель об этом сообщает.
Ограничение частоты
Заголовок раздела «Ограничение частоты»vrOS ставит в очередь, а не заваливает. Короткая серия уходит сразу, затем отправка выходит на ровный ритм. Отдельные сообщения становятся в очередь по порядку. В режиме ЛАЙВ новый частичный текст заменяет ожидающий, а не копится, поэтому доходит именно то, что вы напечатали последним.
Если очередь переполняется, панель об этом сообщает. Потерянные отправки подсчитываются и показываются, никогда не молча.
Вкладка в Даше
Заголовок раздела «Вкладка в Даше»Четыре страницы, и в нижней части каждой — строка произвольной отправки.
| Страница | Что на ней |
|---|---|
| ЧАТ | Чатбокс, с общим состоянием с панелью-оверлеем |
| ПАРАМЕТРЫ | Живые параметры аватара: имя, тип и текущее значение, плюс загруженный аватар |
| КАМЕРА | Режим, действия съёмки, документированные переключатели и ползунки |
| ТРЕКЕРЫ | Отправка трекеров и переключатель её частоты |
Строка произвольной отправки принимает адрес и значение — для всего, что страницы не покрывают.
ПАРАМЕТРЫ — это живой вид, а не журнал. Страница обновляется, пока она на экране, и перестаёт получать обновления, когда её нет, хотя расширение в любом случае продолжает узнавать значения, поэтому страница верна в тот же момент, как вы её открыли.
Режим камеры идёт от 0 до 6: Выкл, Фото, Стрим, Эмодзи, Мультислой, Печать, Дрон. Ползунки (масштаб, фокусное расстояние, диафрагма, оттенок и остальные) ограничиваются документированными диапазонами VRChat, прежде чем что-либо уйдёт в сеть.
Что оно отправляет и принимает
Заголовок раздела «Что оно отправляет и принимает»| Поверхность | Направление | Примечания |
|---|---|---|
| Ввод в чатбокс и набор | Наружу | С ограничением частоты, как выше |
| Параметры аватара | Внутрь и наружу | Включая строковые и многоаргументные параметры |
| Смена аватара | Внутрь и наружу | И отправка, и уведомление о том, что ваш аватар загрузился |
/input/* |
Наружу | 9 осей как float, ограниченные до -1..1, 20 кнопок как int 0 или 1 |
/usercamera/* |
Наружу | Режим, действия, переключатели и ползунки |
| Трекеры 1-8 и голова, положение и поворот | Наружу | Ровный ритм, и только пока функция включена |
| Параметры контактов и хаптики | Внутрь | Настроенные вами префиксы приходят как события |
Входящие адреса, которым ничего не соответствует, подсчитываются, а не отбрасываются молча, поэтому опечатка в префиксе видна, а не загадочна.
Отслеживания взгляда здесь намеренно нет
Заголовок раздела «Отслеживания взгляда здесь намеренно нет»Это расширение не отправляет отслеживание взгляда в VRChat. Это работа VRCFaceTracking, и дублирование только мешало бы ей.
Там, где сам vrOS принимает взгляд по OSC, это отдельный приёмник внутри композитора vrOS, намеренно не это расширение. Сырые данные взгляда никогда не проходят через API расширений и никогда не попадают на шину событий. Расширения получают события фокуса и подтверждения, а не поток взгляда, и даже для них нужна отдельно выданная возможность.
Чего здесь тоже нет
Заголовок раздела «Чего здесь тоже нет»Веб-API VRChat, его websocket, разбор журналов и JSON аватаров — всё это намеренно вне области этого расширения. Оно занимается механикой OSC и ничем больше. Именно разделение этих двух вещей не дало коду OSC в vrOS 1 обрасти зависимостью от каждой функции VRChat, которая случайно оказалась рядом.
Если VRChat не видит vrOS
Заголовок раздела «Если VRChat не видит vrOS»- Проверьте строку состояния расширения. В ней написано, найден ли VRChat.
- Убедитесь, что OSC включён в самом VRChat. vrOS не может включить его за вас.
- Если анонсирование выключено, у VRChat нет способа обнаружить порт, который слушает vrOS. Включите его обратно или задайте порт отправки VRChat самостоятельно.
Подробнее в разделе Устранение неполадок.