Войти
ПрограммированиеФорумГрафика

Ночная морская поверхность в псевдографике (2 стр)

Страницы: 1 2
#15
(Правка: 8:11) 8:01, 16 апр. 2019

Dmitry_Milk
у Форда мне распределение больше понравилось

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

std::string palette = ".,-—+*oO8BЖ";
ещё прикольный способ получить более богатую палитру для конкретного шрифта — заполнить одну половину экрана одним случайным символом, вторую — другим, и вручную определить, какой из них визуально ярче. далее можно написать программу, которая тебе будет выдавать пары символов для оценки, а ты выполняешь роль компаратора для qsort'а, чтобы отсортировать по субъективной яркости произвольный набор символов. симбиоз человека и машины!

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

таким образом можно просто отрендерить простую рейтрейсерную воду со скроллящейся нормалмапой и френелем, а результат просто перевести в ASCII.


#16
9:37, 16 апр. 2019

Suslik
> теоретически можно пойти дальше и подбирать символ, растр которого наиболее
> похож на целый фрагмент изображения

Тут надо аккуратно - в разных шрифтах средние положения символов в знакоместе могут отличаться. Я уже накололся, когда делал мерцающие звезды - на семерке с растровыми шрифтами красиво, запустил на ноуте с десяткой - звезды заскакали (* по высоте стал отличаться от +)

Suslik
> для отображения яркости в символы может использоваться такая палитра
Тоже надо учитывать, что применение такого способа "в лоб" даст дофига артефактов, если только не монолизу распечатывать на ЕС :) Так что разбавка шумом амплитудой хотя бы в одну градацию.

Ну а вообще мне надо уложиться в как можно более компактный код, да и моя картинка в динамике с накатывающими волнами нравится все же больше, чем у FordPerfect. Так что все же я остановлюсь на своем варианте :)

#17
14:51, 16 апр. 2019

Dmitry_Milk
Плюсики - хороши. Заруливают и '*' и '_'.

Страницы: 1 2
ПрограммированиеФорумГрафика