• Рендерим облака на мобильных девайсах

    • Tutorial
    3 года назад художник спросил меня:
    — Слушай, а можно в нашу мобильную игру добавить красивые облачка?
    — Нет, это абсолютно невозможно, у нас постоянно вращается камера, так что билборды будут смотреться очень фальшиво даже если на них добавить карты нормалей, а другие способы…
    *художник погружается в летаргический сон*

    Для меня нет большего удовольствия, чем выяснять, что я был неправ.



    Про фотореалистичный рендеринг облаков написано много статей, но если хочется рисовать облака на смартфоне, приходится придумывать кучу всяких хаков, упрощений и допущений.
    Под катом подробное описание рендеринга облаков на мобильных и много html5 гифок.
    Поехали!
  • Оптимизируем Boid'ов на Unity

    • Tutorial


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

    Это вторая часть статьи, посвящённая различным хитростям оптимизации Unity и C#, которые увеличивают производительность алгоритма из первой части в пару десятков раз.
    Хитрости под катом
  • Boid'ы, птички и Unity3D

    • Tutorial


    Вторая часть: Оптимизируем Boid'ов на Unity

    Задумывались ли вы когда-нибудь о то, почему птицы летая большими стаями никогда не сталкиваются и не коллапсируют в огромный галдящий перьевой ком? Хм, если подумать, это было бы круто. В любом случае, однажды в 1986 нашёлся человек по имени Крейг Рейнольдс, который решил создать простую модель поведения птиц в стаях и назвал её Boids. В модели у каждого боида есть три базовых правила: Separation, Alignment и Cohesion. Первое заключается в избегании столкновения с соседями, второе заставляет лететь примерно в ту же сторону что и соседи, а третье говорит не летать в одиночку и держаться группы. Эти простые правила позволяют создать правдоподобные стаи птиц, рыб и другой живности, чем и пользуются в кино и игровой индустрии.

    В статье я расскажу как можно реализовать эту модель на практике. Для разработки я использую Unity и C#, но большинство вещей верны для других движков и языков. В этом туториале я не разжёвываю основы работы с Unity, подразумевается, что вы знаете эффект комбинации Ctrl+Shift+N на сцене, умеете работать с инспектором, дублировать и двигать объекты. Если нет, то советую начать с этой статьи. Или можете просто посмотреть на картинки.
    Прошу-с проследовать под кат, только после вас!
  • Создание ИИ методом «глокой куздры». Интеллектуальная одиссея

      Захотелось мне написать разговаривающую программу. Очень захотелось, позарез.

      Конечно, мне далеко до профессиональных программистов, и лингвистом я тоже не являюсь, но системное мышление имеется, и чувство языка на месте. Тем более что тематикой ИИ давно интересуюсь, даже пару-тройку постов накатал в свое время. Отчего не реализовать познания в программном коде? Ну и попробовал, насколько смог.

      Знакомьтесь, Ваня Разумный.


      Ниже находится описание проблем, возникших передо мной на этом хоженом-перехоженом пути, и способов их преодоления.

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

      Внимание, материал объемный.
      Читать дальше →
    • Фетиш LaTeX (или Не пишите в LaTeX! Он только для вёрстки)

      • Перевод
      Сейчас то время года, когда студенты выбирают себе классы для обучающих навыков. Один из навыков, который будет поощряться, — обучение LaTeX. Другие могут придти к использованию LaTeX по другим причинам: кто-то хочет сверстать книгу; кто-то слышал, что LaTeX может иметь отношение к журналу Digital Humanities; ну и так далее. Я написал это эссе в качестве предварительного введения в LaTeX. Оно не научит вас использовать редактор (я не имею квалификации для этого!), но я попытаюсь популярно объяснить тем, кто ещё не использует LaTeX, для чего именно он нужен. Это поможет им понять, стоит ли LaTeX усилий на его изучение (не говоря уже о том, чтобы просто заставить его работать). Почему такое большое эссе? Потому что многие из евангелистов превратили LaTeX в фетиш и распространяют дезинформацию о его истинных достоинствах. Хочу прояснить ситуацию.

      1. Что такое LaTeX?


      По словам официального сайта, LaTeX — это «высококачественная система набора и вёрстки» и «стандарт де-факто для обмена и публикации научных документов». С этим никто не спорит.
      Читать дальше →
    • Сравнение Word и LaTeX по удобству и эффективности

        На кафедре психологии, экспериментальной психологии и когнитивных наук университета Гиссена (Германия) провели сравнительное исследование текстовых редакторов LaTeX и Microsoft Word по удобству и эффективности при подготовке документов (научных статей).

        В рамках исследования 40 учёных из разных научных дисциплин готовили статьи в Microsoft Word или LaTeX. Тестовая статья включала в себя блоки непрерывного текста, текст с таблицами и подзаголовками, а также сложный текст с математическими выражениями.

        Исследование выявило, что пользователи LaTeX работают медленнее, чем пользователи Microsoft Word, набирают меньше текста за то же время, допускают больше опечаток, орфографических и грамматических ошибок, а также ошибок форматирования. По большинству параметров даже эксперты по LaTeX показывают худшую производительность, чем новички в Word.

        С другой стороны, пользователи LaTeX чаще сообщали об удовольствии от использования программного обеспечения, чем пользователи Word. Кроме того, LaTeX показал лучший результат в наборе текста с формулами.
        Читать дальше →
      • WaveNet: новая модель для генерации человеческой речи и музыки

        • Перевод
        Наша облачная платформа Voximplant — это не только телефонные и видео звонки. Это еще и набор «батареек», которые мы постоянно улучшаем и расширяем. Одна из самых популярных функций: возможность синтезировать речь, просто вызвав JavaScript метод say во время звонка. Разрабатывать свой синтезатор речи — на самая лучшая идея, мы все-таки специализируемся на телеком бэкенде, написанном на плюсах и способном обрабатывать тысячи одновременных звонков и снабжать каждый из них JavaScript логикой в реальном времени. Мы используем решения партнеров и внимательно следим за всем новым, что появляется в индустрии. Хочется через несколько лет отойти от мема «Железная Женщина» :) Статья, адаптированный перевод которой мы сделали за эти выходные, рассказывает про WaveNet, модель для генерации звука (звуковых волн). В ней мы рассмотрим как WaveNet может генерировать речь, которая похожа на голос любого человека, а также звучать гораздо натуральнее любых существующих Text-to-Speech систем, улучшив качество более чем на 50%.

        Мы также продемонстрируем, что та же самая сеть может использоваться для создания других звуков, включая музыку, и покажем несколько автоматически сгенерированных примеров музыкальных композиций (пианино).
        Очень много интересного
      • Уязвимость в Telegram позволяет скомпрометировать секретные чаты

        Публикация к юбилею Telegram


        В секретных чатах Telegram используется «сквозное шифрование», и что? End to end encryption Telegram слабо защищает переписку пользователей. Простой пример: злоумышленник достал приватный ключ.pgp Алисы, естественно, чтобы расшифровать сообщение, зашифрованное для Алисы необходим пароль от этого ключа, который невозможно сбрутить, придерживаясь современной доктрины парольной защиты. В Telegram end to end encryption на Android — это становится возможно с вероятностью 100%. Обход двухфакторной аутентификации, восстановление пин-кода и угон секретных чатов в Telegram об этой уязвимости и будет статья.
        Читать дальше →
      • Программирование для PlayStation 2: CD(DVD)-ROM Library — часть первая

          image

          1. Прошу прощения, что долго не писал.
          2. Готов PS2 SDK.

          Я хотел не упускать CD(DVD)-ROM Library, поэтому ссылки и гайд по установке PS2 SDK вы найдете в конце второй части этой статьи.
          Тема достаточно сложная. Также буду благодарен, если кто-нибудь перельет на другой не платный хостинг PS2 SDK.
          PS2 SDK доступен тут. Narod.ru.
          Магнет (ссылка нормально не вставляется благодаря хабра-парсеру): magnet:?xt=urn:btih:F6114E45C5E392E6D213F2547C466FADB5DA5A13&dn=sce.zip&tr=udp%3a//tracker.openbittorrent.com%3a80/announce
          Еще одна ссылка. Спасибо Konstantinus и ahmpro

          Читать дальше →
        • Теория игр: Введение

          image

          Что это такое, и с чем его едят.


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

          Узнать больше
        • Немного о клеточных автоматах


            На хабре уже много-много-много раз писали про игру «Жизнь». Совсем недавно была удивительная статья Жизнь на плоскости Лобачевского. Но игра «Жизнь» является частным случаем т. н. клеточных автоматов. Существует много других клеточных автоматов совсем не похожих на игру «Жизнь», но тем не менее очень интересных. Про некоторые из них и хочется рассказать здесь.

            Начнём с того, что рассмотрим ряд клеток, в которых, кроме одной, находятся нули:

            ... 0  1  0  0  0  0  0  0 ...

            Рассмотри следующее правило, заменяем число в клетке на сумму этого числа и соседа слева. Получим следующую серию состояний:

            ... 0  1  0  0  0  0  0  0 ...
            ... 0  1  1  0  0  0  0  0 ...
            ... 0  1  2  1  0  0  0  0 ...
            ... 0  1  3  3  1  0  0  0 ...
            ... 0  1  4  6  4  1  0  0 ...
            ... 0  1  5 10 10  5  1  0 ...
            ... 0  1  6 15 20 15  6  1 ...
            

            Не сложно увидеть, что это — треугольник Паскаля. А теперь вместо обычного сложения будем использовать сложение по модулю два. Известно (и даже недавно рассказывалось в хабрастатье Треугольник Серпинского и треугольник Паскаля), что получится дискретный аналог треугольника Серпинского:

            ... 0  1  0  0  0  0  0  0 ...
            ... 0  1  1  0  0  0  0  0 ...
            ... 0  1  0  1  0  0  0  0 ...
            ... 0  1  1  1  1  0  0  0 ...
            ... 0  1  0  0  0  1  0  0 ...
            ... 0  1  1  0  0  1  1  0 ...
            ... 0  1  0  1  0  1  0  1 ...
            

            Интересно? Читаем дальше!
            Читать дальше →
          • Простейшие клеточные автоматы и их практическое применение

              Этот мир просто охренеть какой сложный, каждый день поражаюсь.

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

              И знаете, что удивительно? Этот подход замечательно работает. Ну, почти всегда. По крайней мере, ничего лучше мы до сих пор не придумали.

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

              image

              Да, я о клеточных автоматах, а именно — об их подмножестве, простейших клеточных автоматах (Elementary cellular automaton). В этой статье я поведаю, что это такое, какие они бывают, какими свойствами обладают, а также отвечу на главный, на мой взгляд, и совершенно правильный вопрос, который часто несправедливо игнорируется в подобных статьях. Звучит он так: А это всё вообще зачем?

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

              Я искренне надеюсь, что после прочтения статьи вы сами захотите поиграться с ними, и на этот случай у меня припасен собранный из JS и палок генератор.
              Хватит воды, давай к сути
            • Айтрекинг — лучший детектор лжи

                Если человек может научиться частично контролировать свою мимику (по крайней мере крупные движения лицевыми мышцами) и «хитрить» с применением языка тела, то движения глаз гораздо сложнее поддаются сознательному контролю. В одном из экспериментов участникам предложили воспроизвести траекторию их взгляда с помощью курсора на экране — и даже при такой четкой постановке задачи испытуемые не осознавали 42-55% движений своих глаз (Marti et al., 2014).

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

                image
                Читать дальше →
                • +13
                • 9,1k
                • 9
              • Ошибки новичка Unity, испытанные на собственной шкуре

                  Привет, Хабр. Это снова я, Илья Кудинов, QA-инженер из компании Badoo. Но сегодня я расскажу не о тестировании (этим я уже занимался в понедельник), а о геймдеве. Нет, этим мы в Badoo не занимаемся, разрабатывать компьютерные игры — моё хобби.

                  Профессионалы индустрии, не судите строго. Все советы в этой статье адресованы начинающим разработчикам, решившим попробовать свои силы в Unity. Многие советы можно отнести к разработке в целом, но я постараюсь добавить в них Unity-специфику. Если вы можете посоветовать что-то лучше, чем предлагаю я — пишите в комментариях, буду обновлять статью.

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

                  А в 2014 году я начал изучать Unity и наконец-то НА САМОМ ДЕЛЕ начал делать игры. Однако вот беда: я никогда не работал программистом. У меня не было опыта настоящей корпоративной разработки (до этого я всё делал “на коленке”, и, кроме меня, в моём коде никто бы не разобрался). Я умел программировать, но я не умел делать это хорошо. Все мои знания Unity и C# ограничивались скудными ещё на тот момент официальными туториалами. А мой любимый способ познавать мир — делать ошибки и учиться на них. И я наделал их предостаточно.

                  Сегодня я расскажу о некоторых из них и покажу, как их избежать (ах, если бы я знал всё это три года назад!)

                  Для того чтобы понять все используемые в материале термины, достаточно предварительно пройти один-два официальных туториала Unity. Ну, и иметь хоть какое-то представление о программировании.
                  Читать дальше →
                • Смотря на код с закрытыми глазами

                  От переводчика

                  Эта статья — перевод блогозаписи Флориана Бейджерса, слепого программиста из Нидерландов.
                  Перевод любительский, поэтому прошу указывать на ошибки и критиковать.
                  Я не нашёл корректного перевода слова accessibility, поэтому перевёл его как «доступность». Если есть вариант получше — предложите, пожалуйста.
                  Антон Туманов предложил «адаптированность», за что ему большое спасибо.
                  Как заметил в комментарии pepelsbey, «доступность» является корректным переводом, вернул её обратно.
                  Почему я сделал перевод? Я наткнулся на опрос на Quora.com «Как программируют слабовидящие программисты?». Ответы людей меня впечатлили, а блогозапись Флориана показалась наилучшим вариантом для введения в этот важный вопрос.

                  Я — программист. А ещё я слеп. Слеп, как крот, как говорится. Таков я от рождения.

                  Когда я говорю об этом своим товарищам, то те из них, у кого никогда не было проблем со зрением, обычно задают один из трёх вопросов:

                  • Как же ты тогда можешь читать то, что я пишу?
                  • Ого. А как ты тогда можешь кодить?
                  • Или — самый популярный вопрос — А ты видишь сны?

                  Мне задают эти вопросы снова и снова. Поэтому в этой блогозаписи я хочу на них ответить. Я попытаюсь нарисовать картинку для тех из вас, кто интересуется доступностью и тем, как слепые люди пользуются компьютером, кодят и выполняют другие работы в 21 веке.
                  Читать дальше
                • Для проверки уравнений Эйнштейна необходимо пнуть чёрную дыру

                  • Перевод

                  Две команды исследователей значительно продвинулись к доказательству гипотезы устойчивости чёрных дыр, важнейшей математической проверке Общей теории относительности Эйнштейна.




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

                  Эйнштейн подробно расписал эту важную идею в нескольких уравнениях, называемых "уравнениями Эйнштейна" (или уравнениями гравитационного поля), формирующих ядро его ОТО. Эту теорию подтвердили все экспериментальные проверки, которым она подвергалась в следующее столетие.
                  Читать дальше →
                  • +12
                  • 13,5k
                  • 8
                • Что не так с Windows 8

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



                    Начну я с недостатков, потому что так проще — все проблемы новой Windows имеют в корне одно слово: Metro. Намерения дизайнеров Microsoft читаются ясно: скрестить коня и трепетную лань мобильный metro-интерфейс относительно небольшим экраном и крупными, ориентированными на пальцы, плитками-иконками с традиционным интерфейсом десктопных Windows.
                    Читать дальше →
                  • Что не так с редизайном Хабрахабра

                      Это случилось: Хабр получил новый дизайн в стиле остальных ТМ-продуктов.



                      Вообще-то я люблю перемены, и редизайн привычных вещей вызывает в первую очередь оптимизм. Это как перестановка мебели в квартире: обстановочку освежать надо. Но помимо приятного чувства новизны некоторые изменения вызывают вопросы. Понятно, что Хабр уже не торт и мы всегда будем помнить его тёплое ламповое старое лого, но я хочу поговорить про то, что можно оценить вполне объективно — про юзабилити нового хабрадизайна.
                      Читать дальше →