Comments 42
Но я не хотел, чтобы у людей возникали проблемы, которые должны были бы возникнуть, так что их стоило устранить.Не решал ли он 100 часов проблему, которая проблемой не являлась? Может, стоило спросить других? Странно.
Если игрок не движется, а только вращает камерой, то можно было бы просто отрендерить один раз сферическую панораму, а потом просто двигать окно по ней. Или я что-то упустил?
Там совершенно другой тип искажения. С дизерингом ничего общего не имеет.
Есть только полуручной инструмент Strokes Maker, который плотность штриха уменьшает/увеличивает относительно яркости подложки. И то большое достижение.
Не навязываю своё мнение.
чанки
Хотя, если бы автор не фокусировался так на дизеринге и low-res, а именно пытался сделать хороший стиплинг, то результат мог бы быть лучше.
Какие-то работы по теме: www.computer.org/csdl/mags/cg/2003/04/mcg2003040062.html — 2003, real time 3d, не знаю, есть ли что-то такое в открытом доступе и с примерами — просто первое что в гугле попалось.
community.wolfram.com/groups/-/m/t/759091 — алгоритм для статической картинки.
Правила рисования:
1. Штрих по форме. Внезапно, 3D модели знают свою форму, так что мы можем для любого ракурса реконструировать штрих по форме.
2. Линия должна быть живой — её толщина должна показывать «энергичность» движения в данном месте. «Движение» в рисовании — направление изгиба основной оси объекта, игнорируя мелкие детали. В первом приближении — изгиб центра симметрии. Чем сильнее изгиб, тем больше движение. Энергичность движения — его значимость для зрителя (художника). Машинно определить это сложно, но довольно просто разметить на 3D-модели.
3. Штрихи могут менять яркость (нажим), толщину, расстояние между ними, количество слоёв (в контексте гравюры — не больше двух).
4. Если у художника mad skill, то он может использовать штрихи для передачи характерных элементов текстуры (волос, ткани, волокон дерева).
5. При переломе формы лучше менять направление штриха. Перелом формы — это место, где резко уменьшается радиус кривизны. Вычисляется на 3д-модели в пол-пинка.
Это всё вполне в рамках машины. Даже если пренебречь «энергичностью» движения, всё остальное вычисляется. Неужели никто не пробовал?
(https://snag.gy/wMZpXL.jpg)
Показать вопросы с движением и т.д. будет много сложнее, т.к. это уже потребует настоящего рисунка.
Олег хорошо объясняет. Это видео и остальные смежные:
www.youtube.com/watch?v=BRW9rUTnSa8
Самое первое приближение из коммерческих 3D рендеров это Modo NPR Kit.
Дело в том, что проблема гравюрного NPR и правильной штриховки лежит рядышком с честным рейтрейсом поверхностей (без триангуляции). Ни в каких трешовых играх это не применяется.
А с анимацией всё будет значительно хуже — будет конкретное мельтешение штриховки, мельтешение дизеринга и мельтешение вообще всего вокруг.
А вторая — забавная штукенция.
Вообще, статья рассматривает только стабильность паттерна.
Даже если у вас будет какойнибудь способ генерироовать гравюры на основании сцены, кадры не будут волшебным образом связаны друг с другом. Ведь придется на каком-то основании выбрать какие пиксели будут штрихами, а какие — фоном, когда выбор равнозначен. Так в одном кадре стул будет раскрашен в черно-белую полоску, а в следущем в бело-черную, всё будет нещадно мерцать.
Для того чтобы избежать этого, должна быть некая текстура — паттерн с опорными точками, который хорошо бы двигать от кадра к кадру совместно с объектами сцены.
Вам не придётся выкинуть эту часть, если вы выберите (реализуете) более умный и красивый метод дизеринга.
Ну и ещё куча примеров по запросам типа «real-time hatching shader»
Там, по ссылке на оригинал статьи, можно найти и остальные статьи о напилинге игры. Из них следует что одного кода было недостаточно для достижения этого обалденного эффекта. Там ещё изрядно дизайна уровней — светильники слои сцены и всё такое. Впрочем можно код из демки наковырять. Оно же C# и Unity. Ну, или автору написать, ежели языками иноземными владеешь.
Например https://youtu.be/ElrXAHogqBM
Впрочем, как и комментаторам навык беглого гугления по картинке хотя-бы.
Игра шикарная получилась — 3d c эффектом книжной иллюстрации. Спасибо переводчику!
Эффект дизеринга в трёхмерной игре