Построение "сложного" цветового градиента?

Рылся в своих университетских материалах и нашел одну свою старую статью. Изначально задача заключалась в том, чтобы имея карту рельефа (Украины) в изолиниях, построить 3д модель рельефа. Она трансформировалась в построение сеточной функции F(xi,yj) на сетке N*M, где (xi,yj) — узлы сетки, а значение функции — высота рельефа в узле.


Проблем было две:

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

Вторая — сетка может быть очень мелкой, т.е. точек может быть очень много. А значит алгоритм должен быть «быстрый».


Мы тогда эту задачу решили и даже написали небольшую статью в вестник университета. Тогда же было понятно, что аналогично можно решать задачу построения гладкого цветового градиента на сложной области (с множеством «константных» пятен и «карманов» сложной формы).
53704e1dc2.jpg


А теперь вопрос (просто интересно стало): реализуется ли подобная задача в современных графических пакетах (в photoshop, по-моему, только градиент по паттерну)? Есть ли подобное в библиотеках работы с canvas?
  • Вопрос задан
  • 3795 просмотров
Пригласить эксперта
Ответы на вопрос 5
@MikhailEdoshin
В иллюстраторе можно делать бленды между двумя кривыми (т. е. переводить за заданное количество шагов одну в другую), но он хорошо справляется только с простыми случаями, лучше всего — когда в кривых одинаковое количество точек; в сложных случаях качество неприемлемое. Кроме того там есть такие mesh'и, но я затруднюсь словами описать как они работают :) Не так, как у вас, однозначно. И да, это все векторное. Насчет фотошопа или других растровых редакторов я такого не слышал, правда, я давно уже не работал в этой области.

Штука полезная, для карт особенно. Как-то раз рисовал bump map для карты по изолиниям вручную; довольно скучная работа. Но и без карт мягкие градиенты между произвольными пятнами, на мой взгляд, очень ценная штука; подумайте о патенте.

А образца работы алгоритма нет? Вот хоть на вашем же примере.
Ответ написан
flom
@flom Автор вопроса
Написал небольшое консольное приложение, которое разбирает входящий BMP с цетовыми «источниками» и делает новый BMP с разных видов градиентными заливками.



Ответ написан
Комментировать
lsdima
@lsdima
Если у вас полигональная сетка — используйте полигональное затенение. Если нужно цветовое кодирование, используйте вместо сдвига яркости — сдвиг оттенка. При затенение по Гуро будет быстро и гладко даже на маленьком количестве полигонов.

Гляньте еще замечательный блог американского картографа, как раз связано с визуализацией: indiemaps.com/
Ответ написан
lashtal
@lashtal
Я думаю, это стандартная функция многих 3д/cad/… пакетов, у автодеска в частности много продуктов, которые так могут. Вот еще страница где много софта для конвертации ECD/point clouds в сетку: www.vterrain.org/Elevation/contour.html

фотошоп, люстра и остальные 2д редакторы так не умеют, это вообще исключительно в 3д же имеет смысл… Т.е. я теоретически могу представить потребность в таких градиентах в 2д, но в этих редких случаях проще отскриншотить вид сверху в 3д программе =)
Ответ написан
Sannis
@Sannis
А можно попросить ссылку на статьи? :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы