Pull to refresh
-4
0
Александр Горбатовский @dom3d

Разработчик 3D CAD/CAM

Send message

Распознаем простые фигуры по массиву точек

Reading time6 min
Views7.5K

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

Данный алгоритм не претендует на уникальность. Однако, я постарался детально расписать как он работает без сложной математики, за исключением, быть может свертки.

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments15

Еще одна хронология будущего в картинках с комментариями

Reading time19 min
Views10K

Приветствую моих постоянных читателей и тех, кто сюда зашел впервые.

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

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

Именно поэтому я не мог пройти мимо инфографики, найденной здесь. Статья Дэвида Алайона (David Alayon) написана в феврале 2018 года и называется «Things to come. A timeline of future technology» (Что впереди: технологическая хронология будущего). Автор сделал красивую подборку технологий, которые могут быть внедрены в течение ближайших тридцати лет, поступив при этом именно так, как я описал выше: аргументированно экстраполировав настоящее в будущее. Просто скопировать и перевести эту хронологию было бы недостаточно; вдобавок, картинка у автора вышла очень длинной. Поэтому я разберу ее на отдельные иллюстрации, охарактеризую каждую из упомянутых технологий, а также отмечу, на какие из тем этой хронологии планирую написать статьи в моем хаброблоге.

Читать далее
Total votes 36: ↑35 and ↓1+34
Comments35

Как работает рендеринг 3D-игр: текстурирование и фильтрация текстур

Reading time17 min
Views29K
image

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

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

Часть 1: обработка вершин

Часть 2: растеризация и трассировка лучей

Начнём с простого


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

Но при многослойном использовании и комбинировании с помощью сложных вычислений такие простые изображения в 3D-сцене могут создавать поразительно реалистичные изображения. Чтобы понять, как такое возможно, давайте полностью их отключим и посмотрим, как будут выглядеть объекты 3D-мира без текстур.
Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments7

Жизнь на частицах

Reading time4 min
Views64K
Всем привет! Сегодня я расскажу о своих экспериментах с системами частиц. Основной целью было нахождение простых правил, которые бы порождали интересное поведение.

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

Под катом много мегабайт гифок.

Читать дальше →
Total votes 269: ↑267 and ↓2+265
Comments67

Что такое ARCore? Всё, что вам нужно знать

Reading time3 min
Views58K

Что такое ARCore? Всё, что вам нужно знать


Дополненная реальность (англ. Augmented Reality, AR)) прошла долгий путь от концепции научной фантастики до чего-то более реалистичного. В последнее время стоимость AR-разработки резко снизилась, и сегодня она доступна даже на обычном смартфоне.


И Apple, и Google вкладывают внушительные средства в развитие дополненной реальности, о чём свидетельствует разработка ARkit (от Apple) и ARCore (от Google). Эти новаторские технологии позволили работать с AR обычным разработчикам, что было совершенно немыслимо несколько лет назад.

Читать дальше →
Total votes 14: ↑10 and ↓4+6
Comments4

256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

Reading time8 min
Views142K
Публикую очередную главу из моего курса лекций по компьютерной графике (вот тут можно читать оригинал на русском, хотя английская версия новее). На сей раз тема разговора — отрисовка сцен при помощи трассировки лучей. Как обычно, я стараюсь избегать сторонних библиотек, так как это заставляет студентов заглянуть под капот.

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

Внимание: просто рассматривать мой код, равно как и просто читать эту статью с чашкой чая в руке, смысла не имеет. Эта статья рассчитана на то, что вы возьмётесь за клавиатуру и напишете ваш собственный движок. Он наверняка будет лучше моего. Ну или просто смените язык программирования!

Итак, сегодня я покажу, как отрисовывать подобные картинки:


Читать дальше →
Total votes 241: ↑241 and ↓0+241
Comments124

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 6 из 6

Reading time6 min
Views60K

Содержание основного курса




Улучшение кода






Official translation (with a bit of polishing) is available here.




Shadow mapping


Ну вот наш краткий курс подходит к концу, задача на сегодня — научиться отрисовывать тени (внимание, просчёт полутеней — это отдельная тема):



Как всегда, код доступен на гитхабе
Читать дальше →
Total votes 68: ↑65 and ↓3+62
Comments20

Повторная децентрализация веба. На этот раз навсегда

Reading time19 min
Views49K
В последние годы веб стал сильно централизованным. Чтобы восстановить свободу и контроль над цифровыми аспектами нашей жизни, нужно понять, как мы дошли до такого состояния и как вернуться на правильный путь. В этой статье рассказана история децентрализации веба и роль Тима Бернерса-Ли в продолжающейся борьбе за свободный и открытый интернет. Проблемы и решения носят не чисто технический характер, а скорее вписываются в более масштабную социально-экономическую головоломку. Мы все вместе должны заняться её решением. Давайте вернём себе Интернет на этот навсегда, и используем весь потенциал веба, как это предусмотрено его создателем.
Читать дальше →
Total votes 67: ↑60 and ↓7+53
Comments90

Learn OpenGL. Урок 5.3 — Карты теней

Reading time19 min
Views35K

Тень — это отсутствие света. Если лучи от источника света не попадают на объект, так как поглощаются другим объектом, то первый объект находится в тени. Тени добавляют реализма к изображению и дают увидеть взаимное расположение объектов. Благодаря ним сцена приобретает "глубину". Сравните следующие изображения сцены с тенями и без:


with_shadows_and_without


Как можно заметить, тени делают намного более очевидным то, как объекты расположены друг относительно друга. Благодаря теням видно, что один из кубов висит в воздухе.


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


Один из методов — карты теней (shadow maps) — относительно простой в реализации, используется в большинстве видеоигр и даёт достойные результаты. Карты теней не так уж и трудно понять, они довольно дёшевы с точки зрения производительности и их легко улучшить до более продвинутых алгоритмов (типа теней от точечного источника света или каскадных карт теней)

Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments12

Learn OpenGL. Урок 6.1. PBR или Физически-корректный рендеринг. Теория

Reading time21 min
Views33K
OGL3

Физически-корректный рендеринг


PBR, или физически-корректный рендеринг (physically-based rendering) это набор техник визуализации, в основе которых лежит теория, довольно хорошо согласующаяся с реальной теорией распространения света. Поскольку целью PBR является физически достоверная имитация света, он выглядит гораздо более реалистичным по сравнению с использованными нами ранее моделями освещения Фонга и Блинна-Фонга. Он не только лучше выглядит, но и дает неплохое приближение к реальной физике, что позволяет нам (и в частности художникам) создавать материалы, основанные на физических свойствах поверхностей, не прибегая к дешевым трюкам дабы заставить освещение выглядеть реалистично. Главным преимуществом такого подхода является то, что создаваемые нами материалы будут выглядеть как задумано независимо от условий освещения, чего нельзя сказать о других, не PBR подходах.

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments13

Learn OpenGL. Урок 6.2 – Physically-Based Rendering. Аналитические источники света

Reading time12 min
Views12K
OGL3 В предыдущем уроке был дан обзор основам реализации физически правдоподобной модели рендеринга. В этот раз мы перейдем от теоретических выкладок к конкретной реализации рендера с участием непосредственных (аналитических) источников света: точечных, направленных или прожекторного типа.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments3

Разработка кроссплатформенных модульных приложений на C++ с библиотекой wxWidgets

Reading time31 min
Views30K

Введение



Уже долгое время не пишу статьи о разработке, хотя сам процесс написания мне очень нравится и позволяет привести мысли в порядок.

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

В этот раз речь пойдет о создании кроссплатформенных приложений с плагинами на C++ с использованием библиотеки wxWidgets. Рассматриваться будут операционные системы Windows, Linux и OS X, как наиболее популярные.

Как обычно, первая часть будет обзорной, для того, чтобы снизить порог входа для читателей. Кому-то информация из первой части покажется очевидной (особенно то, что касается инструментария), но, все же, я считаю ее необходимой, ибо для новичков информация из первой части позволит с минимальными усилиями организовать процесс разработки.
Дальше — поэтапный разбор кода тестового приложения с пояснениями.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments2

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity