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

Хабраразум подскажи…

Чулан
Я знаю, тут не любят такие неинформативные топики. Он будет прятаться за забором персонального блога.

Пытаюсь какое-то время найти информацию по Shape Grammars и их реализацию. Это в продолжение поста про L-Systems. Есть задача процедурного параметрического моделирования двумерных и трехмерных объектов, в частности космических кораблей. Знаете, такие огромные штуковины с кучей мелких деталей из фильмов, которые в вакууме летают с таким звуком «пш-ш-ш-ш-ш-ш-ш»? И взрываются там же так красиво «бдыщ-щ-щ-щ». Они идеальные кандидаты для процедурного моделирования. Например, вот такие картинки удалось нарыть.

Первая, вторая, третья.

Интересует как теория, так и практика.

Из теории было найдено не так много, в основном некие тезисы и научные работы в коротеньких PDFках.

По практике, народ генерирует города: один, два. Или вот довольно простая реализация практически того, что мне нужно.

Пока что рассматриваю создание плагина к Houdini на Python под свои нужды.

Любая информация будет полезна.

P.S. про рандомное увеличение деталей, как например есть плагин для макса, я знаю и пробовал. К сожалению вылетело из головы название. Делит полигоны на части, extrude их на разную высоту и так далее. Нужно контролируемая правилами генерация.
Всего голосов 23: ↑15 и ↓8 +7
Просмотры410
Комментарии 25

Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 1. Oil Rush

Блог компании UNIGINEРабота с 3D-графикой
Игра Oil Rush


В данной статье, состоящей из двух частей, речь пойдёт об использовании возможностей процедурных генераторов при создании контента для компьютерной игры Oil Rush и бенчмарка Valley (выйдет в феврале), разработанных на нашем собственном движке Unigine.
Читать дальше →
Всего голосов 239: ↑238 и ↓1 +237
Просмотры103.6K
Комментарии 41

Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 2. Valley Benchmark

Блог компании UNIGINEРабота с 3D-графикой
Бенчмарк Valley


Это вторая и заключительная часть статьи, посвященной процедурным методам производства контента для 3D приложений. Первую часть Вы можете найти здесь.

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

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

В этот раз речь пойдёт о том, какими средствами и приёмами мы пользовались при создании бенчмарка Valley, чтобы в максимально сжатые сроки произвести большое количество фотореалистичного контента.
Читать дальше →
Всего голосов 133: ↑133 и ↓0 +133
Просмотры72.7K
Комментарии 53

Процедурная генерация планов помещений

Разработка игрАлгоритмыUnity

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

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

В этой статье я расскажу о том, как я реализовал на Unity3d один простой метод генерации, который приводит к хорошим результатам и легко модифицируется. С картинками и исходниками.
Читать дальше →
Всего голосов 99: ↑97 и ↓2 +95
Просмотры67.3K
Комментарии 29

Процедурная генерация трёхмерных моделей

Разработка игрАлгоритмыUnity


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

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

На примере движка Unity и C# я покажу как можно работать с моделями и превращать текст в графику. Большинство приводимого кода легко портируется на другие фреймфорки и языки.

Треугольник


Начнём с простейшей формы — треугольника. В Unity и во многих других движках используется популярный способ описания моделей: с помощью массивов вершин, треугольников и нормалей. Дополнительно для текстурирования используются uv-координаты вершин. Для работы с моделями есть класс Mesh, в котором для каждого набора данных имеется отдельный массив. В Mesh.vertices хранятся координаты вершин, в Mesh.triangles — индексы вершин группами по три. А в Mesh.normals и Mesh.uv лежат векторы нормалей и координаты uv-карт, индексы которых должны совпадать с индексами соответствующих вершин, т. е. порядок в массивах должен быть одинаковым. Покажу на примере, чтобы было понятнее.
Читать дальше →
Всего голосов 35: ↑26 и ↓9 +17
Просмотры64.4K
Комментарии 7

Процедурный генератор хрущёвок

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

На самом деле, у хрущёвок существует несколько десятков модификаций, но некая основа, сущность хрущёвки всё равно прослеживается.

В общем, недолго думая, я сел и написал генератор хрущёвок на C# под Unity3d. Под катом описание работы алгоритма и размышления на тему uv-карт, сабмешей и шейдеров.
Читать дальше →
Всего голосов 271: ↑264 и ↓7 +257
Просмотры105.9K
Комментарии 89

Автоматический генератор квестов

Разработка игр
Из песочницы
Привет, Хабр!

Хочу рассказать о генераторе квестов, который я делаю для своей браузерной ZPG.



Несмотря на то, что вопрос автоматической генерации заданий в RPG достаточно древний, общедоступных работающих версий таких генераторов почти нет (скорее совсем нет), если не считать совсем примитивных вариантов. Работ по этой теме тоже не много, хотя, если активно гуглить, кое-что можно откопать. Поэтому надеюсь, что этот текст (и сам генератор, ссылка на репозиторий есть в конце статьи) будет полезен.
Читать дальше →
Всего голосов 48: ↑47 и ↓1 +46
Просмотры37.5K
Комментарии 5

Школьная геометрия и Unity3D

Блог компании «Кельник»Unity
В предыдущей статье мы рассказали о «Планоплане», нашем онлайн-планировщике и дизайнере квартир. С небольшим отрывом в опросе победила тема о школьной геометрии в «Планоплане» и Unity3D, о чём с удовольствием и рассказываем.

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


Какая такая школьная геометрия?
Всего голосов 17: ↑14 и ↓3 +11
Просмотры21.2K
Комментарии 3

Процедурная генерация текстур планет на основе алгоритма Diamond-Square, часть 1

ПрограммированиеРазработка игрАлгоритмыC#Unity
Tutorial
image

Доброго времени суток. Как со мной бывает, как только я разобрался в каком-то сложном для себя вопросе, я сразу хочу рассказать всем решение. Поэтому решил написать серию из двух статей по такой интересной теме, как процедурная генерация. А конкретнее, я буду рассказывать про генерацию текстур планет. В этот раз я подготовился основательнее и постараюсь сделать материал качественнее, чем в моем предыдущем посте «Простая система событий в Unity» (кстати, спасибо всем за ответные посты). Прежде чем продолжить, хочу обратить ваше внимание на несколько моментов:

1) Этот генератор не претендует на реалистичность, и писал я его для того, чтобы сгенерировать уникальные текстуры для сотни маленьких шариков, которые занимают 10% экрана и к тому же прикрыты облаками.
2) Чисто технический момент: я пишу на C# под Unity3d, так что думать о том, как выводить в изображение с приемлимой скоростью вам придется самим, для каждого языка и платформы свои способы.

Читать дальше →
Всего голосов 34: ↑31 и ↓3 +28
Просмотры38.9K
Комментарии 21

Генерация текстур планет с помощью алгоритма Fault Formation

Open sourcePythonПрограммированиеРазработка игрАлгоритмы

Возможно, кто-то помнит замечательную олдскульную космическую игру Star Control 2. В свое время меня поразила огромная звездная карта с неизведанными планетами, которые предстояло исследовать на фоне разворачивающейся глобальной катастрофы. С тех пор как авторами были опубликованы исходные коды, игра была портирована под новым именем The Ur-Quan Masters на большинство современных платформ.

Покопавшись в исходниках, я обнаружил простой алгоритм, генерирующий текстуры планет, и написал программу на Python, позволяющую генерировать аналогичные текстуры.
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Просмотры16.6K
Комментарии 12

Процедурно генерируемые карты мира на Unity C#, часть 1

Разработка игрАлгоритмыC#Unity
Перевод
Tutorial
image

В этом цикле статей мы научимся создавать процедурно генерируемые карты мира с помощью Unity и C#. Цикл будет состоять из четырех статей.
Читать дальше →
Всего голосов 27: ↑24 и ↓3 +21
Просмотры53K
Комментарии 6

Процедурно генерируемые карты мира на Unity C#, часть 2

Разработка игрАлгоритмыC#Unity
Перевод
Tutorial
image

Это вторая статья из цикла о процедурно генерируемых с помощью Unity и C# картах мира. Цикл будет состоять из четырех статей.
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Просмотры18.9K
Комментарии 4

Процедурно генерируемые карты мира на Unity C#, часть 3

Разработка игрАлгоритмыC#Unity
Перевод
Tutorial
image

Это третья статья из цикла о процедурно генерируемых с помощью Unity и C# картах мира. Цикл будет состоять из четырех статей.
Читать дальше →
Всего голосов 35: ↑34 и ↓1 +33
Просмотры16.9K
Комментарии 1

Процедурно генерируемые карты мира на Unity C#, часть 4 (трафик)

Разработка игрАлгоритмыC#Unity
Перевод
Tutorial
image

Это последняя статья из цикла о процедурно генерируемых с помощью Unity и C# картах мира. Осторожно, под катом 7 МБ картинок.
Читать дальше →
Всего голосов 31: ↑29 и ↓2 +27
Просмотры25.8K
Комментарии 10

Процедурная генерация уровней для игр-головоломок

Разработка игрАлгоритмы
Перевод


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

Здорово было бы найти способ заставить компьютер сэкономить вам время и решить проблемы, о которых я сказал выше… И именно тут на помощь приходит процедурная генерация!
Читать дальше →
Всего голосов 44: ↑41 и ↓3 +38
Просмотры30.1K
Комментарии 14

Реверс-инжиниринг процедурной генерации в No Man's Sky

Разработка игрРеверс-инжиниринг
Перевод


No Man’s Sky — это игра про исследование космоса, в которой используется технология процедурной генерации игрового окружения и ресурсов (текстур, моделей, рельефа и т.д.). Я был в восторге, когда объявили о её разработке в 2013 году, не только из-за самой игры, но в основном из-за возможности изучить игровые файлы и узнать, как она работает. После выпуска игра получила самые противоречивые отзывы, но мне всё равно интересно, что же происходит у неё внутри.

Если вы установите игру, то увидите, что по объёму она очень невелика, и это действительно так. Основная причина этого в том, что игра работает с очень ограниченным набором ресурсов и с помощью процедурной генерации создаёт на их основе буквально сотни вариантов. Я сосредоточусь на контенте, связанном с 3D-моделями игры, потому что для меня они всегда наиболее интересны. Статья будет разделена на три основные категории: геометрия, текстуры и анимации.
Читать дальше →
Всего голосов 92: ↑91 и ↓1 +90
Просмотры39.6K
Комментарии 33

NaNoGenMo: как компьютеры пишут новеллы

ПрограммированиеАлгоритмыNatural Language Processing
Из песочницы

Ноябрь считается месяцем литературного творчества. Каждый год в интернете проходит мероприятие NaNoWriMo (National Novel Writing Month). Участники должны до конца месяца написать новеллу длиной не менее 50000 слов. За 17 лет в нем поучаствовали больше 20000 человек.


В 2013 году у программистов появилось аналогичное соревнование — NaNoGenMo (National Novel Generation Month). Задача NaNoGenMo — написать программу, которая сгенерирует новеллу длиной 50000 слов или больше. При этом требования к новелле довольно слабые — подойдет любой текст достаточной длины. Как вы увидите, это может быть сборник рассказов, пьеса, кулинарная книга, словарь или туристический путеводитель. На самом деле, произведение не обязано даже быть текстовым.


image

Графическая новелла «Сгенерированный детектив»

Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Просмотры9.8K
Комментарии 5

Процедурная растительность на OpenGL и GLSL

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



Повествование будет вестись на примере небольшой демки, которая генерирует сцену как на картинке выше. Мы пройдём увлекательное путешествие от подготовки данных на CPU до записи значений цвета на выход фрагментного шейдера.
Читать дальше →
Всего голосов 52: ↑51 и ↓1 +50
Просмотры22K
Комментарии 17

Вплетение нарратива в процедурные миры

Разработка игр
Перевод
image

Уже в течение трёх лет я веду блог разработки моего нового roguelike-проекта. Истории игры в нём уделено довольно мало обсуждений, что отражает её малую информативную роль и важность в процессе разработки альфа-версии. На самом деле за посредственной и избитой научно-фантастической историей 7DRL, изложенной в версии для гейм-джема, последовал перезапуск проекта в 2013 году, и первое растягивание сроков разработки произошло только из-за воплощения уникальной детализированной истории. Всё, происходившее позже, тем или иным образом служит для поддержки нарратива.

Теперь, когда эта часть мира Cogmind оформилась и близка к завершению, я хотел бы исследовать новую территорию, и порассуждать о том, как и зачем интегрировать элементы истории в жанр, традиционно небогатый на сюжет.
Читать дальше →
Всего голосов 32: ↑32 и ↓0 +32
Просмотры14.6K
Комментарии 23

Важно то, что внутри: о процедурной генерации органов

Разработка игр
Перевод
image

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

Когда я начинаю участвовать в геймджемах, то вхожу в режим «максимального ускорения», который обычно заканчивается ужасными понедельниками на работе после бессонных ночей. Чем старше становлюсь, тем сложнее для меня набраться энтузиазма для участия. К счастью, PROCJAM очень расслабленный, что идеально мне подходит. Кроме того, читерство там совершенно не запрещено, поэтому я мог, например, вернуть из небытия мой генератор органов, над которым я работал несколько месяцев назад для Bestiarium и создать свой прототип на его основе.
Читать дальше →
Всего голосов 33: ↑30 и ↓3 +27
Просмотры9.9K
Комментарии 2