Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Алгоритм определения попадания точки в контур на основе комплексного анализа

Алгоритмы *Математика *
Из песочницы
Привет всем Хабра людям. Хочу представить уважаемым читателям пример, когда сухая и далекая от жизни в нашем понимании высшая математика дала не плохой практический результат.

image
Читать дальше →
Всего голосов 83: ↑80 и ↓3 +77
Просмотры 118K
Комментарии 100

Начало работы с игровым движком Rungine

Разработка игр *
Из песочницы
Runner Engine (сокращенно Rungine) — это новый 2D/3D движок для создания игр и мультимедийных приложений. Он обладает гибким набором инструментов, которые способны помочь разработчику увеличить скорость разработки, но они пока находятся в доработке. В состав движка входят: Core (ядро с собственным набором утилит), GUI, Graphic2D. В данный момент Runner Engine поддерживает только DirectX9. Идет работа над поддержкой OpenGL. В дальнейшем планируется продолжить работу над поддержкой DirectX10 и DirectX11.

Поддерживаемая платформа: Windows

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

Инициализация:

Первым шагом необходимо подключить dll движка:
#include "..\..\RunnerEngine\Runner.h"
#pragma comment(lib, "../../Bin/Runner.lib")


Объявляем девайс:
RDevice rdevice;
//Для инициализации необходимо вызвать метод Create:
if(!rdevice.Create(800, 600, Mode::Windowed, API::Direct3D9)) {
   return 0;
}


Весь рабочий цикл осуществляется следующим образом:
//рисуем, пока окно не закрыто
while(rdevice.EnterMsgLoop(true)) {
   rdevice.Clear();//очищаем поверхность окна
   //начало рисования графики
   if(rdevice.BeginScene()) {
        //рисуем картинку внутри окна
        rdevice.EndScene();//конец рисования
        rdevice.Present();//отображаем все нарисованное
   }
}

Все. Инициализацией мы разобрались. Теперь можно вывести на экран картинку или нарисовать изображение.

Читать дальше →
Всего голосов 31: ↑24 и ↓7 +17
Просмотры 3.4K
Комментарии 43

Артефакты в 2D-играх — на границе текстуры

Программирование *Разработка игр *
Из песочницы
Вдохновившись статьей «У прозрачных пикселей тоже есть чувства или артефакты png'шек с прозрачностью», решил рассказать еще о некоторых проблемах, которые могут возникнуть при разработке 2D-игры.

В этой статье я хотел бы рассказать о нетривиальных проблемах, с которыми мне пришлось столкнуться при разработке 2D-игр, связанных с фильтрацией текстур.

Все эти артефакты возникают при включенной фильтрации текстур. А также масштабировании, повороте текстуры или если она имеет дробные координаты.
Читать дальше →
Всего голосов 37: ↑28 и ↓9 +19
Просмотры 6.4K
Комментарии 1

Направленное освещение и затенение в 2D-пространстве

Разработка игр *Алгоритмы *
Из песочницы

Добрый день, Хабравчане!
Хотелось бы рассказать об одном из способов отрисовки освещения и затенения в 2D-пространстве с учетом геометрии сцены. Мне очень нравится реализация освещения в Gish и Super MeatBoy, хотя в митбое его можно разглядеть только на динамичных уровнях с разрушающимися или перемещающимися платформами, а в Гише оно повсеместно. Освещение в таких играх мне кажется таким «тёплым», ламповым, что непременно хотелось нечто подобное реализовать самому. И вот, что из этого вышло.
Читать дальше →
Всего голосов 95: ↑94 и ↓1 +93
Просмотры 47K
Комментарии 39

2D система освещения для Unity3D, работающая на GPU

Разработка игр *Unity *
Из песочницы


Всем привет. Как известно, Unity3D отсутствует поддержка освещения для 2D игр. В Asset Store можно найти такую систему, но у неё есть один недостаток — она работает на CPU и потребляет весьма много ресурсов (64-4096 рейкастов за кадр на каждый источник света). Поэтому я решил сделать своё освещение, производительности которого хватило бы для мобильных устройств. Для этого вычисления были перенесены на GPU. Получилось что-то похожее свет Terraria или Starbound.
Под катом демо, описание работы и куча картинок
Всего голосов 49: ↑41 и ↓8 +33
Просмотры 33K
Комментарии 20

Создание 2D тайловой карты на QML. Часть 1

Qt *Разработка игр *
Tutorial


Первая мысль, которая меня посетила: «а что, собственно, в этом сложного?».
Ну, вроде, ничего:
• создаешь массив текстур,
• указываешь размер карты,
• пробегаешься циклом по массиву, создавая объекты.
Именно так я и поступил с самого начала…
Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Просмотры 17K
Комментарии 8

В поисках перспективных теней для roguelike

Графический дизайн *Дизайн игр *


Уважаемые Хабровчане, представляю вашему вниманию продолжение изысканий на тему поиска подходящих теней для 2D рогалика.

Данный пост является сиквелом публикации, своеобразной работой над ошибками и дальнейшее развитие идеи.
Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 3.5K
Комментарии 16

Трюк с тригонометрией

Программирование *Совершенный код *Алгоритмы *Математика *
Перевод

Скорее всего, вам известны следующие соотношения еще со школы:


$\sin(\alpha + \beta) = \sin\alpha \times \cos\beta + \cos\alpha \times \sin\beta \\ \cos(\alpha + \beta) = \cos\alpha \times \cos\beta - \sin\alpha \times \sin\beta$


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


Читать дальше →
Всего голосов 99: ↑96 и ↓3 +93
Просмотры 26K
Комментарии 28

Отложенный Alpha blending

Блог компании Playrix Разработка игр *Алгоритмы *Обработка изображений *
В этой статье я хочу поговорить о методах смешивания растеризуемой геометрии. Классические модели смешивания полупрозрачных объектов — Alpha, Additive, Multiplicative — объединяет один и тот же принцип отрисовки: последовательно рисуем один примитив за другим, смешивая получаемые на выходе фрагментного шейдера пиксели с тем, что находится в текущем буфере. Каждый новый примитив обновляет область буфера, в которую рисуется; в случае с альфа-смешиванием объекты, которые находятся выше, заслоняют ранее отрисованные. Но что если хочется что-то сделать с группой объектов, рисуемых поверх сцены, — например, обрезать их по маске или подсветить? Тут сразу в голову приходят два решения: или внести изменения в их материал (т.е. изменить шейдер, расширить набор текстур), к примеру, добавив проекцию еще одной текстуры, которая будет отвечать за маску прозрачности. Однако если у нас много разношерстных объектов, менять каждый уникальный материал неудобно и чревато ошибками. Второй вариант — нарисовать все интересующие нас объекты в отдельный полноэкранный таргет и рисовать уже его на финальную сцену. Тут мы можем сделать с его содержимым все, что захотим, но это требует выделения лишней памяти и, что самое неприятное, — переключения рендер таргетов. Это не самая «дешевая» операция на мобильных устройствах, которую будет необходимо выполнить дважды. А если захочется вот так работать с несколькими слоями?


Читать дальше →
Всего голосов 57: ↑57 и ↓0 +57
Просмотры 7.7K
Комментарии 16

Двумерная САПР DraftSight удачно дополняет системы 3D-моделирования

Блог компании DassaultSystèmes Анализ и проектирование систем *Работа с 3D-графикой *CAD/CAM *

Young Industries, Inc. — американский производитель конвейеров для сыпучих материалов с более чем семидесятилетним опытом работы на рынке промышленного оборудования. Инженеры компании постоянно ищут оптимальные методы разработки промышленного оборудования.

Большую часть проектно-конструкторских работ инженеры Young Industries выполняют в 3D, в программном комплексе SOLIDWORKS®. Но есть задачи, например корректировка чертежей из прошлых проектов, оформление отдельных листов чертежей и схем, которые быстрее и проще выполнить в 2D.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 1.5K
Комментарии 7