• Увеличь это! Современное увеличение разрешения


      Я уже перестал вздрагивать и удивляться, когда звонит телефон и в трубке раздается жесткий уверенный голос: «Вас беспокоит капитан такой-то (майор такой-то), вы можете ответить на пару вопросов?» Почему бы не поговорить с родной полицией…

      Вопросы всегда одни и те же. «У нас есть видео с подозреваемым, пожалуйста, помогите восстановить лицо»… «Помогите увеличить номер с видеорегистратора»… «Здесь не видно рук человека, пожалуйста, помогите увеличить»… И так далее в том же духе.

      Чтобы было понятно о чем речь — вот реальный пример присланного сильно сжатого видео, где просят восстановить размытое лицо (размер которого эквивалентен примерно 8 пикселям):


      И ладно бы только русские дяди Степы беспокоили, пишут и западные Пинкертоны.
      Читать дальше →
    • Яндекс! Спасибо за Uber

        Привет, Хабр! В этой статье хотелось бы рассмотреть поглощение Яндексом службы такси Uber с точки зрения обычного пользователя, который немного понимает в программировании и не любит грязный маркетинг.
        Читать дальше →
      • Введение в программирование: простой 3D-шутер с нуля за выходные, часть 2

        • Tutorial
        Продолжаем разговор про 3Д шутер за выходные. Если что, то напоминаю, что это вторая половина:


        Как я и говорил, я всеми силами поддерживаю желание в студентах делать что-то своими руками. В частности, когда я читаю курс лекций по введению в программирование, то в качестве практических занятий я оставляю им практически полную свободу. Ограничений только два: язык программирования (С++) и тема проекта, это должна быть видеоигра. Вот пример одной из сотен игр, которые сделали мои студенты-первокурсники:


        К сожалению, большинство студентов выбирает простые игры типа 2Д платформеров. Я пишу эту статью для того, чтобы показать, что создание иллюзии трёхмерного мира ничуть не сложнее клонирования марио броз.
        Читать дальше →
      • Введение в программирование: простой 3D-шутер с нуля за выходные, часть 1

        • Tutorial
        Этот текст предназначен для тех, кто только осваивает программирование. Основная идея в том, чтобы показать этап за этапом, как можно самостоятельно сделать игру à la Wolfenstein 3D. Внимание, я совершенно не собираюсь соревноваться с Кармаком, он гений и его код прекрасен. Я же целюсь совсем в другое место: я использую огромную вычислительную мощность современных компьютеров для того, чтобы студенты могли создавать забавные проекты за несколько дней, не погрязая в дебрях оптимизации. Я специально пишу медленный код, так как он существенно короче и просто понятнее. Кармак пишет 0x5f3759df, я же пишу 1/sqrt(x). Мы преследуем разные цели.

        Я убеждён, что хороший программист получается только из того, кто кодит дома в своё удовольствие, а не только просиживает штаны на парах в университете. В нашем университете программистов учат на бесконечной череде всяких библиотечных каталогов и прочей скукоте. Брр. Моя цель — показать примеры проектов, которые интересно программировать. Это замкнутый круг: если интересно делать проект, то человек проводит над ним немало времени, набирается опыта, и видит вокруг ещё больше интересного (оно же стало доступнее!), и снова погружается в новый проект. Это называется проектное обучение, вокруг сплошной профит.

        Простыня получилась длинная, поэтому я разбил текст на две части:


        Выполнение кода из моего репозитория выглядит вот так:


        Это не законченная игра, но только заготовка для студентов. Пример законченной игры, написанной двумя первокурсниками, смотрите во второй части.
        Читать дальше →
      • Модуль подводного ультразвукового дальномера

        image

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

        Пока дайвинг-компьютер ожидает своего часа, нам пришла в голову мысль: а что если дальномер выделить в отдельный проект? Поскольку у нас возникли сложности с поиском подходящего модуля подводного дальномера, наверняка ещё кто-нибудь сталкивался с подобными трудностями поиска.
        Читать дальше →
      • Как отказаться от ненужных рассылок с помощью одной кнопки. Опыт команды Яндекс.Почты

          Согласно нашим исследования, не менее 20% пользователей страдают от большого числа непрочитанных писем. Львиная доля этих писем — регулярные рассылки. Большая часть из них никогда не будет открыта и прочитана — они лежат мёртвым грузом и отвлекают от полезных писем. Для решения этой проблемы придумано множество способов, но ни один из них нельзя назвать полноценным.

          Меня зовут Илья Воробьёв, и я расскажу читателям Хабра историю возникновения альтернативного решения — возможности управлять рассылками и гарантированно отписаться от любой, не покидая интерфейс Яндекс.Почты.



          Читать дальше →
        • Искусственный интеллект Horizon Zero Dawn

          • Перевод
          Horizon Zero Dawn находится в списке одних из лучших эксклюзивов для Playstation 4. В роли охотницы Элой игроки путешествуют по постапокалиптическим ландшафтам будущего, чтобы раскрыть тайны её прошлого и узнать о причинах разрушения мира. Упадок человечества привёл к расцвету «машин» — роботов разных форм и размеров, свободно живущих повсюду. Эти животные-роботы умны, скоординированы и смертельно опасны: чтобы выжить, нужно быстро думать, чтобы уничтожить их — тщательно готовиться и планировать.


          В этой части статьи я расскажу о геймплее и системах принятия решений, которые делают этих существ живыми и обеспечивают основы игрового процесса. Я буду говорить не только о том, как они принимают решения о разных действиях (собирание ресурсов, охота, выживание), но и как координируются в обширном мире, индивидуально и в группах. Кроме того, я расскажу о том, как игра создаёт экосистему машин, которая сбалансирована и управляема на всех территориях и во всех областях нового мира.

          Предупреждение: в статье присутствуют спойлеры сюжета Horizon Zero Dawn.
          Читать дальше →
        • Искусственный интеллект Horizon Zero Dawn: индивидуальное поведение

          • Перевод
          В первой части исследования ИИ Horizon Zero Dawn я рассказал, как игра создаёт стада управляемых искусственным интеллектом животных-машин. Для этого требуется сложная система иерархии агентов, в которой каждая машина может принимать решения о том, как вести себя, пользуясь планировщиком сети иерархических задач, а групповые агенты совместно назначают машинам роли и обязанности как частям стада. Всё это является частью системы под названием «The Collective», которая поддерживает экосистему всех машин в мире, когда пользователь находится в игре.


          В этой заключительной статье мы подробнее рассмотрим системы, которые отдельные машины могут использовать как часть своего базового поведения. В них включены системы сенсоров, навигация для наземных и летающих машин, а также тесная связь ИИ-поведений с системами анимаций, обеспечивающая каждой машине опасное, но в то же время реалистичное поведение.
          Читать дальше →
        • Внутри Quake: всегда рассматривайте альтернативы

          • Перевод
          image

          Программист Майкл Абраш, в середине 90-х приглашённый Джоном Кармаком для работы над движком первого Quake, написал в процессе разработки серию статей. Это вторая колонка из данной серии. Перевод первой находится здесь.

          Должен признаться: меня достал классический рок. В последний раз я с радостью слушал что-нибудь из Cars или Boston довольно давно, около 20 лет назад. Кроме того, меня никогда особо не привлекали Боб Сигер и Queen, не говоря уже об Элвисе, так что здесь мало что изменилось. Но я понимал, что нечто изменилось, когда мне хотелось переключить радио, услышав Allman Brothers, или Steely Dan, или Pink Floyd, или, господи, прости, Beatles (но только на таких вещах, как «Hello Goodbye» и «I’ll Cry Instead», а не «Ticket to Ride» или «A Day in the Life»; я ещё не зашёл настолько далеко). Долго искать причины этого не пришлось; я слушал одни и те же песни четверть века, и просто от них устал.

          Я рассказываю это всё таким образом потому, что когда мы с моей дочерью однажды вечером ехали из кафе, в машине впервые была включена радиостанция «Альтернативы нет».

          Мы говорим о десятилетней девочке, росшей на постоянной диете из старых хитов. Ей нравятся мелодии, легко запоминающиеся песни и хорошие певцы. Ничего из этого не найдёшь, слушая станцию про альтернативный рок. Поэтому неудивительно, что когда я включил радио, она первым делом сказала «Фу!»

          Но вот что меня удивило: послушав какое-то время, она сказала: «Знаешь, папа, а на это на самом деле интересно».

          Это не только намекнуло мне о том, какая музыка будет грохотать по всему дому, когда она станет тинейджером. Её быстрое принятие альтернативного рока (по сравнению с моим длящимся десяток лет увлечением музыкой собственной юности) напомнило мне кое о чём, что легко забывается, когда становишься старше и образ жизни становится устоявшимся. Это напомнило мне, что необходимо сохранять открытость сознания и быть готовым — более того, стремиться — пробовать новые вещи.
          Читать дальше →
          • +30
          • 14,6k
          • 4
        • Создаём голосовое приложение на примере Google Assistant

            Каждый пятый житель США владеет умной колонкой, а это 47 000 000 человек. Помощник может создать напоминание, список дел, будильник, таймер, прочитать новости, включить музыку, подкаст, заказать доставку, купить билеты в кино и вызвать такси. Все это «навыки» или «skills» помощников. Еще их называют голосовыми приложениями. Для Alexa и Google Assistant таких приложений на 2018 год разработано 70 000.

            В 2017 году Starbucks запустил функцию по заказу кофе домой для Amazon Alexa. Кроме того, что выросли заказы на доставку, об этом написали все возможные СМИ, создав классный PR. Примеру Starbucks последовали Uber, Domino’s, MacDonald’s, и даже у стирального порошка Tide появился свой skill для Alexa.

            Как у Starbucks, голосовое приложение выполняет одну-две функции: заказывает кофе, ставит будильник или вызывает курьера. Чтобы спроектировать нечто подобное, не обязательно быть межконтинентальной корпорацией. Идея, проектирование, тестирование, разработка и релиз похожи на аналогичные этапы в мире мобильной разработки, но с особенностями для голоса. Подробно о процессе рассказал Павел Гвай: от идеи до публикации, с примерами реальной игры, с историческими вставками и разбором мира голосовой разработки.


            Читать дальше →
            • +27
            • 2,5k
            • 1
          • Особенности подходов к дизайну в реальном производственном секторе

              Когда ты делаешь дизайн для цифровых продуктов, которыми будут пользоваться люди, чьи привычки и паттерны использования ты можешь предугадать, это не так сложно. Ты почти всегда знаешь, что человек по ту сторону будет держать смартфон вот так, доставать до элементов и контролов большим пальцем вот так, и прочее, прочее, прочее. К примеру, в B2C есть определенный набор инструментов, помогающих дизайнеру в исследованиях. Есть и общепринятый набор правил, по которым ты собираешь обратную связь, нащупываешь возможные проблематики, выдвигаешь гипотезы и прочее. Например, вот довольно понятный и удобный фреймворк:

              • определить задачу клиента;
              • сформировать свои гипотезы;
              • продумать метрики;
              • определить контекст использования, CJM, прочее;
              • продумать решение и его валидацию.

              Для людей, привычных к дизайну продуктов, которыми пользуются миллионы пользователей по всему миру, этот фреймворк знаком (в том или ином виде).


              Когда продакты думают, что точно знают, чего хочет пользователь

              Но все это претерпевает довольно неслабые изменения, когда ты начинаешь делать дизайн на предприятии. Начнем хотя бы с того, что клиентов как таковых у нас нет — у нас есть пользователи. И штука в том, что мы находимся очень близко к пользователям. Не в плане, что вот есть аккаунт, и мы можем просмотреть подробную инфу о нем, привычные заказы и модель поведения, нет. Мы знаем, что конкретно вот этот пользователь — это Саня, который вчера при тебе залезал на 20-метровую вышку, чтобы с помощью твоего приложения записать данные в журнал обходов. И что ежедневные задачи у Саши довольно сложные и нетривиальные.

              Меня зовут Лев, я ведущий дизайнер функции «Цифровые технологии» в СИБУРе, и я расскажу вам о том, как работается дизайнерам приложений и интерфейсов в условиях, когда часть твоих пользователей — это коллектив обходчиков на производственной площадке в Тобольске, которые используют твое приложение немного не в тех условиях, в которых ты это приложение сделал.
              Читать дальше →
            • Dropbox Paper: как оставаться бодрячком

              • Перевод
              Как мне и моей команде всё время быть на драйве?

              image

              Если Вы когда-либо работали в небольшой команде с ограниченными ресурсами, то, скорее всего, знакомы с этим ощущением драйва. Некий зуд, что заставляет двигаться вперёд, когда нечто изо всех сил тащит назад. Необычайно сильный прилив мотивации, который ощущаешь, когда тебе говорят, что ты недостаточно хорош.

              Снова и снова я замечал, какие чудеса начинают происходить, когда ты сталкиваешься с этим ощущением драйва. Но как сохранить этот дух драйва, если команда становится всё больше и больше?

              Несколько месяцев назад я присоединился к команде Dropbox Paper. К тому времени команда уже выросла до довольно больших размеров. Я до сих пор помню свою первую встречу с командой и мысль о том, что нас, возможно, хватит, чтобы заполнить целый кинотеатр. (Думаю, я уже мечтал о собраниях на открытом воздухе).

              На сегодняшний день, я проработал здесь уже несколько месяцев, и я заметил кое-что: даже когда наша команда растёт, у нас как-то получается сохранять этот дух драйва, присущий небольшим командам. Я не знаю, получается ли это случайно или по плану, но у меня есть несколько теорий относительно того, как мы остаемся на драйве.
              Читать дальше →
              • +24
              • 3,9k
              • 1
            • 2D-тени на Signed Distance Fields

              • Перевод
              Теперь, когда мы знаем основы комбинирования функций расстояний со знаком, можно использовать их для создания крутых вещей. В этом туториале мы применим их для рендеринга мягких двухмерных теней. Если вы пока не читали моих предыдущих туториалов о полях расстояний со знаком (signed distance fields, SDF), то крайне рекомендую их изучить, начав с туториала о создании простых фигур.


              [В GIF возникли дополнительные артефакты при пересжатии.]
              Читать дальше →
              • +22
              • 2,4k
              • 3
            • СПДС GraphiCS 2019 и nanoCAD СПДС 10. Работа с IFC из Revit

              • Tutorial
              Autodesk Revit (далее – Revit) является одной из программ, осуществляющей автоматизированное проектирование в технологии информационного моделирования зданий (BIM). Вместе с тем, основным результатом проектирования являются плоские чертежи, для оформления которых используются СПДС GraphiCS 2019 и nanoCAD СПДС 10 (далее – СПДС). Совместная работа СПДС и Revit является предметом обсуждения данной статьи.
              Читать дальше →
            • Динамическая локальная экспозиция

              • Перевод
              Привет, Хабр! Представляю вашему вниманию перевод статьи «Dynamic Local Exposure» автора John Chapman.

              image

              В данной статье я представлю пару идей о динамической локальной экспозиции в HDR рендеринге. У Барта Вронски уже есть отличная статья на эту тему и я очень рекомендую ее прочитать прямо сейчас, если вы еще этого не сделали; идеи здесь, в большей степени, основаны на его статье. В конце я включил несколько других замечательных ссылок.

              Low/High Dynamic Range


              В старые добрые времена (1990-е) игры рендерились непосредственно в отображаемом LDR (узкий динамический диапазон) формате (гамма пространство, 8 бит). Это было просто и дешево, но, с другой стороны, значительно мешало созданию действительно фотореалистичной картинки.

              В настоящее время, особенно с появлением PBR (physically-based rendering), игры рендерятся с гигантским динамическим диапазоном в линейном пространстве с более высокой точностью. С таким движением к фотореализму приходит реальная проблема: как мы можем отобразить HDR изображение в LDR?
              Читать дальше →
              • +21
              • 1,7k
              • 3
            • Вокруг беты за 260 дней: как мы учились прислушиваться к пользователям

                Все знают: догфудить собственный продукт (ну, есть корм своей собаки – разрабатывать продукт, который сам же используешь) – это правильный во всех отношениях принцип. Работая над конструктором чатботов Aimylogic, мы в Just AI прекрасно представляли, каким он должен быть, но поначалу не догфудили – наши NLU-инженеры обычно сразу пишут код. И поэтому решили пойти по пути lean startup: выкатить бету, собрать ранний фидбэк от пользователей и писать Aimylogic по-живому. Рассказываем, как мы вместе с пользователями шли от беты к релизу.


                Читать дальше →
                • +20
                • 1,5k
                • 1
              • SMAA: улучшенное субпиксельное морфологическое сглаживание

                • Перевод

                Данная статья основана на журнале Хорхе Хименеса, Хосе Эчеварриа, Тиаго Соуса и Диего Гутьерреса.

                Их демо реализации SMAA можно посмотреть здесь (файл .exe). На моём GTX 960 2GB оно работает вполне нормально.

                Старые способы сглаживания (антиалиасинга)


                Долгие годы стандартами для реализации сглаживания были методы MSAA (Multisampling Antialiasing) и SSAA (Supersampling Antialiasing). На самом деле, они и по-прежнему обеспечивают наивысшее качество среди всех современных методов сглаживания. Как мы знаем, алиасинг возникает из-за нехватки сэмплов, как на пространственном (ломаные линии), так и на временном уровне (мерцание), обычно рядом с гранями и областями изображения с высоким/низким контрастом. Для борьбы с ним у нас имеются два способа, которые когда-то были единственными решениями: Supersampling и Multisampling. При суперсэмплинге мы увеличиваем изображение, а затем снижаем его дискретизацию до нужного разрешения. Этот принцип отлично работает, потому что распространяется на все аспекты проблемы. При мультисемплинге используется похожее решение. В этом методе каждый сэмпл дублируется на основание определённого коэффициента. При современных больших разрешениях для этого требуются достаточно мощные графические карты. Поэтому нам нужны новые методы сглаживания, как на пространственном, так и на временном уровнях. Все эти методы используют в своей работе один алгоритм — распознавание краёв. Но они выполняют и другие операции.
                Читать дальше →
                • +18
                • 1,9k
                • 3
              • Эффекты фильтров SVG. Часть 2. Контурный текст при помощи feMorphology

                • Перевод

                Предлагаемая серия статей "Эффекты фильтрации SVG" Sara Soueidan, внештатного разработчика UI/UX интерфейса и автора многих технических статей, проживающей в Ливане, посвящена работе фильтров SVG и состоит из следующих статей:


                Эффекты фильтрации SVG


                1. Эффекты фильтрации SVG. Часть 1. SVG фильтры 101.
                2. Эффекты фильтрации SVG. Часть 2. контурный текст при помощи feMorphology
                3. Эффекты фильтрации SVG. Часть 3. Эффект постеризации изображения при помощи feComponentTransfer.


                Во второй части серии об SVG-фильтрах Sara Soueidan знакомит нас с фильтром feMorphology и приводит несколько примеров его использования для создания интересных эффектов.


                Читать дальше →
                • +18
                • 2,5k
                • 4
              • Пространственные манипуляции в 2D с помощью Signed Distance Fields

                • Перевод
                При работе с полигональными ассетами можно отрисовывать только по одному объекту за раз (если не учитывать такие приёмы, как batching и instancing), но если использовать поля расстояний со знаком (signed distance fields, SDF), то мы не этим не ограничены. Если две позиции имеют одинаковую координату, то функции расстояний со знаком возвратят одинаковое значение, и за одно вычисление мы можем получить несколько фигур. Чтобы понять, как преобразовывать пространство, используемое для генерации полей расстояний со знаком, я рекомендую разобраться, как создавать фигуры с помощью функций расстояний со знаком и комбинировать sdf-фигуры.

                Читать дальше →
              • Как создавали Spore: интервью с разработчиками

                • Перевод
                image

                7 сентября 2008 года Maxis выпустила одну из самых амбициозных игр своего времени — Spore.

                Однопользовательская «игра в бога» в песочнице была поначалу воспринята со смесью одобрения и критики: многие фанаты были расстроены тем, что она не соответствовала ожиданиям, данным в демо-версиях из доклада Уилла Райта на GDC 2005 и различных показов на E3. Но со временем её признали проектом, ставшим пионером процедурной генерации, который даже спустя десять лет имеет активную базу игроков.

                В процессе разработки команда Maxis разрослась от идеи в голове Уилла Райта до более 100 разработчиков; каждый дизайнер, касавшийся отдельных аспектов Spore, знал, что это нечто потрясающее. Даже если первоначальной концепции придётся в течение работы измениться.

                «Когда я впервые говорил с ним, он хотел, чтобы эта игра была об уравнении Дрейка. О невероятности нашей вселенной», — рассказывает мне по Skype ведущий дизайнер Крис Тротье. «Он хотел, чтобы игроки прошли все эти этапы огромных неудач, чтобы они поняли, насколько невероятно то, что мы появились. Довольно быстро он отказался от этой идеи, но она даёт понять, насколько масштабной задумывалась игра с самого начала».

                Десять лет спустя участники проекта Spore хотят рассказать о сложностях, важных моментах и опыте разработки столь влиятельной игры. В статье представлены цитаты из интервью, проведённых по отдельности с ведущим дизайнером Крис Тротье, техническим художником Кейт Комптон, ведущим дизайнером Стоуном Либранде, инженером ПО Дейвом Кулибой, ведущим инженером геймплея Дэном Московицем и помощником продюсера Гийомом Пьером. (К сожалению, Уилл Райт от нас ускользает...)
                Читать дальше →
                • +15
                • 6,2k
                • 8

              Самое читаемое