Перейти к содержанию

jonyrh

Участники
  • Постов

    58
  • Зарегистрирован

  • Посещение

  • Победитель дней

    10

Активность репутации

  1. Лайк (плюс в репу)
    jonyrh отреагировал в Varset за запись в блоге, Как я пишу утилиты   
    Меня несколько раз спрашивали.. Ты типа все время говоришь, что не разработчик, "но, черт возьми, Холмс, как?!" (с)
    Сейчас расскажу. 
     
    Возьмем для примера тулзу по проверке скачивания обновлений, которую делаю в настоящий момент. По свежим мозгам, так сказать.
    Идея написать отдельную программу или функцию для Кваса появилась после того, как выяснил, с какого именно адреса скачиваются обновления. Всегда с одного и того же.
    Но от идеи до хотя бы слегка рабочего прототипа - как до горизонта....
    Начинаю думать. Адрес у меня есть, его надо проверять. А чем? Вполне подходят wget или curl.
    Wget у меня в составе пакета вспомогательных утилит к Квасу, так что... Хотя, проверку надо же делать на шлеме, значит нужен wget под Android.

    Поиски удались и нашелся порт этой замечательной утилиты для Android. Теперь другая задача - как его запустить?
    На шлеме, разумеется... Что-ж, придется слегка влезть в Линукс. Не то, чтобы я этого жаждал... но кто меня спрашивает?
    Только вот чтобы запустить wget, сначала надо скопировать его в шлем, и также скрипт для запуска и т.д. А скрипт, конечно же башевский, sh, в которых совсем ни бум-бум. Ой-ё... зачем я в это ввязался.
    Ладно, в Гугле пока не банят, уже хорошо. Итак, делаем wget запускаемым через chmod +x, а копируем через adb с компа, мы же утилиту на компе запускать будем, вот пусть она и трудится батником.

    Стало быть, ваяем на cmd процедурку, которая отправит на шлем все что нужно, в том числе скрипт, который будет запускать wget с нужными параметрами.
    Пишем, проверяем. Не работает конечно же. Чего ему надо? А, сертификат. И где я его возьму?... Изучаем ман к wget. О, есть параметр --no-check-certificate, отлично. Опять проверяем. Ура, работает! Всего со второго раза. Где-то подвох, не иначе.... И даже errorlevel от wget можно использовать, просто подарок! Шикарно, errorlevel 8 - битый линк,
    errorlevel 4 - нет файла, errorlevel 134 - HTTPS 200 OK, то что надо. Ох, не к добру это. Пробуем, все хорошо как-будто. Ладно, куча текста с информацией, которую выдает нам wget, не нужна совершенно, отключаем ее параметром -q, то бишь quite. Смотрим на результат. Перестало работать. Да ё-моё... Какого лешего?... 
    ...ломание головы ... Не, ну это даже не подвох, это подстава. Почему, если нет ошибок, errorlevel без параметра q - 134, а с параметром - 0?... Главное, зачем?
     
    Ладно, восьмая кружка кофе очень даже способствует. Заработало. Пока что.
    Блин, а параметры-то меняются... ссылка, которую будет проверять wget, разная, их несколько. Значит нужен цикл. Цикл на sh, вы спятили? Точнее, я спятил.
    Впрочем, пока еще не, а значит цикл создаем на cmd, который будет запускать подпрограмму отправки всех файлов на шлем, выполнять только что отправленный скрипт, затем удалять этот скрипт и закидывать такой же, но с другими параметрами, после чего выполнять его снова. А это значит, что скрипт придется формировать на ходу, в том же цикле, до отправки на шлем.

    Гуд, такое уже проходил, не проблема. Итак, проверяем прототип. Хм, работает. И даже показывает, что все ссылки доступны...  Вообще все. КАК - ВСЕ?!.. А ну-ка проверим ссылку https://occccuuuuuulluuuussssses.com. Errorlevel - 0, все супер, сайт доступен. Что за?..... Нихрена не понимаю.
    .... два часа беганий по потолку кипящим чайником с паром из ушей ....
    Епрст! Это же цикл, а давай попробуем setlocal enabledelayedexpansion. Завелось. Ура! Теперь надо понять, что с этим делать. В том смысле, что мы и без этой программки значем, что нифига недоступно и все такое. Или доступно, но это тоже сразу видно. Значит - не ура? Ну знаете....
     
    :_CheckUpdatesAccess echo off set linkUpdates=https://securecdn.oculus.com/binaries/download/?id= set toolname=wget set shscriptname=wgt.sh @adb push %toolname% /data/local/tmp/ 1>nul @adb shell chmod +x /data/local/tmp/%toolname% for /f "tokens=*" %%a in (on.txt) do ( @echo /data/local/tmp/wget -q --no-check-certificate --spider %linkUpdates%%%a >%shscriptname% @adb shell rm /data/local/tmp/%shscriptname%  1>nul 2>nul @adb push %shscriptname% /data/local/tmp/ 1>nul @adb shell dos2unix /data/local/tmp/%shscriptname% @adb shell sh /data/local/tmp/%shscriptname% if !errorlevel!==0 call :_CheckUpdatesAccessGood && exit /b ) echo   ============================================================ echo   ^|  +++  Обновления недостпны, переключаем DNS сервер  +++  ^| echo   ============================================================ echo. echo   ------ del /q %shscriptname% exit /b
    Семнадцатая кружка кофе как бальзам. В голове слегка прояснилось.... "список DNS....". Гениально!
    Но придется внедрять еще один цикл. А предыдущий делать вложенным. Так.... Работаем. Рукава я и не рассучивал. Цикл по смене ДНС у меня уже есть, чуть подшаманить и готово.
     
    :_dnschangeonly @setlocal enableextensions enabledelayedexpansion @if not exist %cd%\dnslist.txt call :_createfile adb shell settings put global private_dns_mode hostname @for /f "tokens=1,2 delims= " %%a in (%cd%\dnslist.txt) do ( set dnsnumber=%%a set dnsname=%%b adb shell settings put global private_dns_specifier !dnsname! @echo. @echo  --------------------------------------------------------------- @echo   = Включен DNS сервер:  [ !dnsname! ] @echo  ---  @echo    Осталось серверов:    [ !dnsnumber! ]  @echo  --------------------------------------------------------------- @echo. @echo  = Wi-Fi шлема настраивается на новый сервер, ожидание 5 секунд... adb shell "svc wifi disable" timeout 2 >nul adb shell "svc wifi enable" timeout 5 /NOBREAK >nul call :_CheckIPaddress call :_CheckUpdatesAccess @echo. call :_dnscontinues )
    Ого, даже работает, перебирает чего-то там себе. Но глючно перебирает. Серверы обновлений недоступны при любом DNS. Такого просто быть не может, я не хочу чтоб так было. Зря что-ли впаял в Квас пачку DNS серверов, аж 81 штуку?!.. Ну уж нет. Думаю.... опять думаю... еще думаю. Может задержку надо поставить, секунд пять, вдруг не успевает переключиться на другой DNS.... упс, не помогло. 
    О, а ведь можно надеть шлем посмотреть что там и как. И я даже знаю, как прям на него отправить ссылку в браузер. Ссылка открыывается. А прога пишет - недоступен. Явно какое-то противоречие. А сейчас-то чего ему не так?... Ладно, запустим Квас, посмотрим, он меня никогда не подводил, может и на этот раз.... ой, а где айпишник шлема? Почему прочерки вместо него? Возможно требуется рестартануть вайфай после смены DNS?... Но я на Квасе тестировал смену и перебор DNS, и без рестарта работало. Ок, хуже не будет.
    Мда, хуже не стало, но и лучше тоже. Что-ж, раз пошла такая пьянка, влепим еще одну задержку после рестарта, традиционные пять секунд.
     
    Тридцать шестая... или это уже сорок третья?.. кружка кофе и третья пачка Хитса немного отодвигают в сторону мысли на тему "я идиот и бестолочь, дебил и бездарь, в дворниках самое место". Гуд, у нас есть отличная команда echo, вот пусть и покажет, что там с айпишником. Ага, пока есть. Хм, а теперь пропал. А как же рестарт вайфая? Очень странно.
    Пробуем снова.... нет айпишника, вот прям совсем нету, причем сразу..... Надеваю шлем....
    (Слово удалено системой), да он спит!!!! Точнее, спал. Я тут весь потолок истоптал, а шлем дрыхнет в самый ответственный момент. И вырубает вайфай, разумеется. Что-ж, уже проще, будем бороться с ним
    кнопкой Питание. Вот уж от нее он никуда не денется, мертвого разбудит.
    Работает, но... Жмакать кнопку Питание конечно не запрещается сколько угодно раз, но хорошо бы только в моменты чрезвычайной необходимости, когда шлем подносит руку или чего у него там к рубильнику вайфая. 
     
    И вот тут засада... С этой проблемой боролся долго и безуспешно, но сейчас немного другая ситуация. Может прокатит?...
    Да где же она, эта команда... Среди сотен тестовых батников и стольких же текстовых файлов найти... о, вот она, даже каталог Power есть, с батником нужным.
    Так, пробуем, добавим ветвление на эту команду, когда вайфай потухнет, а также поставим маячок echo, который покажет, когда она сработала и запускаем.
    Ух ты! Вау!... Оно работает. Даже не верится, вот ведь. 
     
    Остался сущий пустяк: прогнать программу раз пятьдесят на обоих шлемах, написать русские буковки множества сообщений, какой сервер проверяется, доступны обновления или нет, и так далее. Убрать все лишнее, проверить все подпрограммы и их вызовы, на нужном ли они месте, еще раз прогнать раз двадцать. Сбпрсить шлемы до заводских, прогнать на первоначальной настройке. Словом, процентов 70% от написания и отладки непосредственно кода.
     
    Всё просто, не правда ли?
     
    p.s. Не стал расписывать здесь разные дополнительные моменты поиска решений: можно ли вообще что-то запустить на шлеме, а если так, из какого каталога, какие adb команды отключают и включают вайфай, а также пробуждают шлем от спячки, как прописать DNS в шлем через тот же adb и так далее... Это я нашел ранее.
    p.p.s Полагаю, тут многовато непонятных терминов, уж простите мне это, но без них никак не обойтись.
     
     
  2. Лайк (плюс в репу)
    jonyrh отреагировал в Varset за запись в блоге, Субъективные заметки и краткий обзор Meta Quest 3   
    Что-же, пришел и мой черед добавить пару слов в бездонную копилку мнений о Meta Quest 3.
    Примерно полтора года года все виарщики мира затаив дыхание следили за крохами утекающей информации о Q3, мол, если Q2 получился таким недорогим, но в то же время очень продвинутым и первосортным, то каким же сногсшибательным должен стать Quest 3?!...
    Спойлер: чуда не случилось. Вышел очень качественный и технологичный шлем, но, как я уже писал, будем честны: это еще одна экспериментальная модель.
    Насмотревшись первых обзоров, ожидал... даже не знаю, чего именно. Некоего шедевра?... Повторения вау-эффекта? Однако искусственно созданный ажиотаж имеет одну неприятную особенность - не всецело оправданные ожидания.
    Впрочем, подчеркну еще раз - Meta Quest 3 получился великолепным, не поймите меня неправильно.
    Но, хватит лирики, давайте просто поделюсь собственным мнением о нем, и постараюсь сделать это подробно и объективно, хоть в заголовке и сказано иное. Также хочу отметить, что я ни разу не эксперт в VR, это мой второй шлем.
    После Quest 2 шлем кажется немного игрушечным из-за его размера и дизайна: большая маска и довольно тонкая передняя часть. Про боковые регулировочные кнопки на маске не рассказал только ленивый, разве что отмечу, что их не обязательно ставить одинаково. Зачем это может быть нужно? Вот, скажем, мне показалось (возможно из-за свойств периферического зрения), что с левой стороны на границе яркость падает чуть больше, чем с правой; поставил левую сторону чуть ближе, и все стало как надо.
    Подушка (прокладка) на маске в этот раз тряпичная, на ощупь довольно мягкая, а на лице жестковата. К тому же - синтетика, что, в принципе, разумно из соображений гигиены и долговечности, но те, кто в детстве терпеть не мог шерстяные вещи, будут не очень рады. Для них у меня хорошая новость: если где-то дома без дела валяется силиконовая накладка от Quest 2, то ее можно использовать, подходит идеально.

    С нижней стороны имеется колесо, регулирующее IPD, примерно от 58 до 70. Оно чуть люфтит влево-право, это нормально, у всех так. А поскольку практически по всей площади панкейковых линз изображение четкое (в отличие от линз Френеля), фактически оно настраивает FOV (угол обзора), индивидуальный для каждого, т.к. многие носят очки. А не фактически - настраивайте очень тщательно, ищите положение, наиболее комфортное для глаз и делайте перерывы.
    В целом же, шлем не для очкариков, как ни странно. Точнее, не очень удобно лезть в него с очками. Хотя, казалось бы - это не Френель, не нужно настраивать свитспот, но по факту очки могут перекашивать шлем и сползать на нос или на лоб, и в итоге глаза будут болеть, так что не переусердствуйте.
    Небольшой совет очкарикам - не гонитесь за шириной FOV. Пусть он будет на 5-10 градусов меньше, зато легче глазам.  И еще немного о FOV - продолжается ломание копий на эту тему, но многие забывают учитывать одну маленькую деталь: у каждого свой IPD. К примеру, у меня он 60, и если я раздвигаю линзы пошире, то начинаю видеть внутренние края линз, т.н. центральные дуги. (специально не пишу про бинокулярный оверлап, иначе многим будет непонятно, о речь). А, стало быть, при установке IPD шлема на 60 FOV будет меньше , чем при установке IPD на 70.
    Эта модель шлема поставляется без очковой вставки, как предыдущая, но с боковыми кнопочками, регулирующими расстояние морды до линз. Отчего-то все пишут и рассказывают про расстояние от глаз до линз, но глаза же не выдвигаются сами по себе, а перемещаются вместе с лицом. Нос, кстати, тоже входит в комплект перемещения.
    Что же касается искаженийпо краям линз, которые наблюдаются на многих фотографиях и видео - их не следует принимать в расчет, это оптические искажения при съемке с некоторого расстояния. Вот фото линз, сделанное с расстояния примерно 30см:

    Выглядит ужасно, не правда ли?
    А это фото уже поближе к линзам:

    Сильно лучше, согласитесь?
    А здесь почти вплотную к линзам:

    И вот уже никаких искажений по краям.
    Панкейки менее выпуклые, чем Френель и шансы их поцарапать меньше, но все-же они есть, так что будьте аккуратнее. Для душевного спокойствия можно приколхозить защитные упоры, на которые будут ложиться очки, если сильно приблизятся к линзам, и эти упоры не дадут стеклам очков задеть линзы. Смастерить упоры можно из чего угодно, пара кусочков картона, один конец засунуть в щель маски, другой свернуть трубочкой и разместить между маской и линзой, два упора, с обеих сторон. Выглядеть будет крайне неэстетично, но вам шашечки или ехать?

    Поверхность линз отливает желтым цветом, впрочем, все зависит от освещения, поэтому может быть синий, зеленый, фиолетовый. В крапинку. 
    У меня есть предположение, что это не что иное, как защитное покрытие от попадания прямых солнечных лучей. Наверняка видели когда-нибудь на зданиях такие желтоватые зеркальные окна?.. Вот, очень похоже, не так ли? Но вряд ли, вероятнее всего это однослойное покрытие для просветления линз. Линзовый дзен.
    Покрутили колесико, пощелкали боковыми кнопками, надеваем, но не включаем. Сначала надо настроить страп, если его можно так назвать. Словом, тот ремешок, который удерживает шлем на голове. Попробуйте несколько раз затянуть и ослабить, прочувствуйте как сидит, подвигайте немного по лицу, настройте наиболее комфортный прижим и натяг ремешка. Если у вас остался от шлема Quest 2 т.н. затыльник, то его можно приспособить и комфорт значительно увиличится:


    Затем включайте шлем. Защитные пленки из контроллеров вы же вытащили?
    Через несколько секунд в шлеме появится ваша цветная и не очень четкая комната и начнется первичная настройка.
    Подробно на ней останавливаться не стану, ибо к тому времени, как выйдет эта статья, мануалов по первичной настройке шлема будет множество.
    Четкость у шлема изумительная по всей площади видимого дисплея, и даже мелкий текст в браузере легко читается. Не нужно, как на Френелях, постоянно мотать головой вверх-вниз-влево-вправо, подгоняя текст в свитспот, и прижимать подбородок к груди, чтобы прочесть субтитры тоже не нужно, достаточно немного скосить глаза в любую сторону и прочитать все что там написано. Пожалуй, эту особенность шлема вполне можно считать вау-эффектом. Но глазам все-же требуется привыкнуть, а значит регулярно давать им отдых. Впрочем, помнится, с Quest 2 было точно так же.
    На тот же эффект претендует еще одна модернизация шлема - цветная сквозная камера. На одном из форумов народ не очень хорошо отзывался об этой функции: много шумов даже при хорошем освещении, а при плохм сквозной режим практически бесполезен; все плывет волнами и так далее. Обзорщики же очень расхваливали этот режим, вынужден с ними согласиться.
    А недовольным скажу так: ребята, вы немного того-этого, слегка заелись... Вот в Quest 2 сквозной режим - чистое баловство, зомбей по черно-белой квартире гонять, а в этом шлеме очень даже полезная вещь. С монитора все хорошо читается даже в полной темноте. Текст, конечно же, расплывается, но если нужно что-то запустить на ПК, например, связать Airlink, запустить Quac и посмотреть температуру или загрузку процессора, найти отложенные контроллеры, срочно глянуть почту и т.д, не снимая шлем - да запросто! Дважды тюкнул по шлему или один раз по панели - и вот оно, видно все, что нужно. Однако же, как и в предыдущей модели шлема, сквозная камера не работает, если отключена защитная зона. Где тут связь и с какой целью это делается - загадка для меня. Через API в том же Unity вполне можно включать дополненную/расширенную/смешанную реальность вне зависимости от статуса защитной зоны.
    Следующий в списке вау-эффектов конечно же новый мощный процессор, позволяющий поднять уровень графики нативных игр до практически PCVR. Я не преувеличиваю. Ну разве что слегка.
    После установки разрешение дисплея на недостижимую (без фризов и статтеров) для процессора Quest 2 величину 3380 x 3072, многие игры преобразуются самым удивительным образом. 
    Вот только небольшой список игр, которые я проверил, разница с Querst 2 ошеломительная:
    Red Matter 1/2
    The 7th guest
    Doom 3
    The Room VR
    Resident Evil
    Arizona Sunshine
    IEYTD 1/2/3
    Blair Witch
    Качество графики улучшается настолько, что хочется переиграть кучу старых игр.
    ...что я и делаю, вместо того чтобы писать эту статью...
    И даже игра 7th guest выглядит так, что в нее можно вполне комфортно играть, хотя на Quest 2 я писал о ней:
    Медленное ползание - это еще пол-беды. Поиграл в нативку с полчаса, глаза сломал напрочь. Там не просто мыло... к некоторому количеству мыла я привычен, как очкарик, но ЭТО что-то совсем уж невозможное. Дошел до шара в Dinner комнате, поглазел на другие, открывшиеся и плюнул.
    Цвета... можно сказать, что их нет. Так, иногда появляются. Замысел с блеклостью понятен, но не настолько же убого! Как если бы контрастность убрать совсем, а яркость выкрутить на полную. Получаются очень серые потемки, в которые постоянно непроизвольно вглядываешься и глаза сильно напрягаются.
    От VertigoGames я такого совершенно не ожидал.
    Словом, нативку не стоит запускать вообще, а если хочется прочувствовать атмосферу, лучше поиграть в старый-добрый Wraith The Oblivion - Afterlife
    Смотрите сами:

    А еще лучше посмотрите на это, особенно на нижние колонтитулы записки:

    В Meta Quest 3 был экспериментально выставлено слегка запредельное разрешение текстур - 4506 x 4096 и шлем вполне себе справился. 
    На мой взгляд, рынок нативных игр, несколько разочаровавший многих виарщиков, получил замечательный второй шанс. И если кто-то раздумывает, брать ли Quest 3 для нативок, то ответ тут однозначен - конечно! 
    Но... есть одно "но", как же без него. Режим 120 Гц в шлеме придется отключить, иначе через некоторое время появляется снежная буря артефактов, вероятно, из-за перегрева процессора. 
    Температура проца во время игры - 67%. Вентилятор работает и его не слышно, хотя многие утверждают обратное. Но, видимо, тут как повезет - меня и в Quest 2 вентилятор не беспокоил, не шумел даже когда работал.
    С зарядом/разрядом шлема происходят поистине аномальные вещи. И дело даже не в повышенном потреблении из-за более мощного процессора, а в алгоритмах, которые, надеюсь, будут настраиваться в прошивках.
    Предварительные замеры показывают много странных цифр. В логику укладывается только чистый заряд шлема - чем больше разряжен шлем, тем больше ток заряда.
    Мой USB тестер показал зарядный ток примерно 1.5А 5V при полном разряде шлема. Чем больше шлем заряжался, тем меньше становился ток заряда, ну прям как Quest 2 в ссамом начале, до того как ток заряда стал фиксированным - 1.375А (не у всех почему-то)
    А вот то что не укладывается в логику, так это разница  между зарядным током при питании от родного зарядника вот время игры и при питании от банки, которая спокойно может выдать до 2А. К тому же, пробовал несколько банко, результат такой же - при питании от сети ток заряда на 0.1А больше, чем при питании от банки.
    Например, зарядный ток от сети - 1.2А, от банки - 1.1А. При этом от сети шлем не разряжается во время игры, а от банки - да. Шлем может взять от банки и 1.5 и даже 2А, но не берет. От сети он тоже не берет больше полутора ампер.
    И так далее... Но повторюсь, это предварительные замеры и с ними явно что-то не так, разумеется буду проверять еще.
    Небольшое дополнение относительно заряда/разряда.
    При игре в Resident Evil 4 (PCVR) по VD шлем от банки не разряжается вообще. За полтора часа он съел ровно пол-банки (полный объем 10к mAh). При питании от кабеля ПК на том же RE4 через VD шлем съели 25% заряда за полтора часа.
    И вот так плавно мы перешли к недостаткам. В частности, контроллеры. Нет, не сами тачи, с ними-то как раз все отлично, придраться не к чему, а вот вибра в них сильно отличается от привычной в Quest 2, будто в рукоятке перекатывается и стукается о стенки тяжелый металлический шарик. Возможно, в качестве эмуляции отдачи и т.д. она такой и должна быть, но пока ощущения скорее неприятные. Впрочем, "шарик" перекатывается далеко не везде, это зависит от софта управления виброй, так что в целом она неплоха, хоть и послабже, чем у Quest 2. На сильную интенсивность вибры жаловались владельцы Q2, но ведь ее можно уменьшить в настройках шлема.
    Далее, звук. Я не сильно придирчив к встроенным динамикам смартфонов, шлемов и прочих гаджетов, но как можно было так сломать звучание? В Quest 2 с этим все достаточно неплохо, и врядли в Quest 3 динамики хуже, но чтобы добиться такого глухого, плоского, бубнящего как из бочки звука - это надо постараться.
    Я не сторонник теории заговоров, но такое впечатление, что Мета специально (программно!) ухудшила некоторые параметры, чтобы впоследствии их улучшить и гордо заявить об этом.
    Феномен "продай козу" называется. Но посмотрим как пойдет. Предполагаю, что в феврале-марте нас будут ожидать серьезные сюрпризы; возможно это будет тот самый ИИ, который обещали на презентации, а можэет и еще что-нибудь.
    Нативную поддержку флешки все еще не завезли, но многие файловые менеджеры, как и прежде, прекрасно видят флешки. И совсем хорошая новость - появился новый видеоплейер 4XVR Video Player, воспроизводящий медиа-контент в VR режиме непосредственно с флешки. Поддерживаются форматы FAT32, exFAT, NTFS.
    На этом, пожалуй, прервемся. 
    Дополнение следует.
×
×
  • Создать...

Важная информация

Правила пользования сайтом Условия использования