Автор Тема: Создание трехмерной карты по картинке  (Прочитано 4120 раз)

Оффлайн romkas27

  • Житель
Всем привет. Никто не сталкивался с такой задачей - построить по цифровой матрице высот (разноцветной картинке) трехмерную карту?
Проще говоря, поднять изображение так, чтобы каждому цвету соответствовала своя высота экструдирования?
В модификаторе displacement есть такая функция, но там только RGB to XYZ делает, то есть каждый цвет по своей оси, а нужно чтобы зелёный - минимум, красный - максимум, и желательно по оттенкам чтобы тоже работал.

Оффлайн Samovar

  • Житель
Re: Создание трехмерной карты по картинке
« Ответ #1 : 20 Август 2018, 13:35:07 »
Переведи красные и зелёные цвета (каналы R и G) в оттенки серого... скомпонуй затем в изображение с высоким цветовым разрешением... и наложи на мелкую полигональную сетку как карту Displacement
Тоже самое можно сделать узлами...

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Создание трехмерной карты по картинке
« Ответ #2 : 20 Август 2018, 13:36:59 »
... можно сначала конвертировать цветовую карту в карту высот - у тебя есть правило соответствия RGB - высоте? было бы уместным использовать функцию зависимости высоты от R и G (если B не используется)? ...
... как только такое правило будет получено, можно будет в Cycles соотрудить конвертор и потом уже использовать полученную карту высот для displace модификатора ...

Оффлайн Samovar

  • Житель
Re: Создание трехмерной карты по картинке
« Ответ #3 : 20 Август 2018, 13:53:12 »
Проверил... присутствует и синяя компонента в изображении...
А какое правило нужно? Чем краснее - тем выше, чем синее - тем ниже :)
Цитировать
В модификаторе displacement есть такая функция, но там только RGB to XYZ делает
Это не то.. это для карт смещения по вектору на базе RGB->XYZ: http://wiki.polycount.com/wiki/Vector_displacement_map
Вот в чём разница:

Тебе надо просто конвертировать три канала цвета в градации серого и сложить их в одну картинку, через три градиента...
Допустим так:
синий канал - это линейный градиент серого в диапазоне 0-0,33
зеленый канал - это линейный градиент серого в диапазоне 0,34-0,66
красный канал - это линейный градиент серого в диапазоне 0,67-1
затем всё это барахло складываешь вместе :)  ...
...и получаешь изображение в тонах серого от 0 до 1

Пример сделать, или сам?
« Последнее редактирование: 20 Август 2018, 14:31:20 от Samovar »

Оффлайн romkas27

  • Житель
Re: Создание трехмерной карты по картинке
« Ответ #4 : 21 Август 2018, 15:44:11 »
Я сегодня уже сделал через цветокоррекцию в фотошопе, затем просто через модификатор Displacement. Smooth применил, наложил сверху спутниковый снимок в качестве текстуры, и карта готова. Позже выложу подробно с картинами. Но хотелось бы конечно выслушать альтернативные варианты.
Что касается высот. Нельзя конвертировать RGB в BW просто так. Объясняю почему. Тёмно-зелёный цвет соответствует дну реки (условно назовём отметкой ниже уровня моря), чем светлее зелёный, тем выше приближается высота к суше. Потом идёт жёлтый и самый высокий - красный цвет. Так вот если просто перевести в чёрно-белый, то соответственно на выходе будем иметь два вида тёмных участков - один корректный для высоких, другой - некорректный - для самых низин. Поэтому и делал через коррекцию интенсивности цветовых каналов в фотошопе в разделе adjustment - black&white. Потом сохранил preset для этих настроек и теперь любую матрицу можно взять и за минуту подготовить текстуру для модификатора displacement в blender.
Но всё же интересно как вы это предлагаете сделать  :)

Оффлайн Samovar

  • Житель
Re: Создание трехмерной карты по картинке
« Ответ #5 : 21 Август 2018, 16:34:05 »
Вначале сам выложи результат, если считаешь, что разобрался. Картинку, которая вышла, и бленд-файл.
Цитировать
Что касается высот. Нельзя конвертировать RGB в BW просто так. Объясняю почему. Тёмно-зелёный цвет соответствует дну реки (условно назовём отметкой ниже уровня моря), чем светлее зелёный, тем выше приближается высота к суше. Потом идёт жёлтый и самый высокий - красный цвет. Так вот если просто перевести в чёрно-белый, то ...
А я тебе о чём писал? Может быть перечитаешь, и постараешься врубиться?

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Создание трехмерной карты по картинке
« Ответ #6 : 21 Август 2018, 20:48:21 »
во вложении карта, которая у меня получилась при конвертации в cycles, а по ссылке сам файл с примером https://yadi.sk/d/C5jOPcIV3aSKnX

там два объекта - Plane для конвертации и Plane.001 для для модификатора Displace
схема конвертации очень простая от узла Image выход color расщепляется узлам Separate HSV на компоненты, а компонента H конвертируется в высоту по формуле Высота = 1-H*2

Оффлайн Samovar

  • Житель
Re: Создание трехмерной карты по картинке
« Ответ #7 : 22 Август 2018, 05:02:20 »
Вот, Николай Николаев, ещё больше упростил процесс. Круто, однако!
Только Cycles, тут вообще не причём...

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

Оффлайн romkas27

  • Житель
Re: Создание трехмерной карты по картинке
« Ответ #8 : 27 Август 2018, 13:34:18 »
Вначале сам выложи результат, если считаешь, что разобрался. Картинку, которая вышла, и бленд-файл.
Цитировать
Что касается высот. Нельзя конвертировать RGB в BW просто так. Объясняю почему. Тёмно-зелёный цвет соответствует дну реки (условно назовём отметкой ниже уровня моря), чем светлее зелёный, тем выше приближается высота к суше. Потом идёт жёлтый и самый высокий - красный цвет. Так вот если просто перевести в чёрно-белый, то ...
А я тебе о чём писал? Может быть перечитаешь, и постараешься врубиться?
Понятия не имею о чём ты писал. Какие-то градиенты, сложения этого всего вместе. Где всё это делать? В редакторе нодов?
Зачем мне во что-то сложное вникать, когда есть варианты намного проще?))

Оффлайн romkas27

  • Житель
Re: Создание трехмерной карты по картинке
« Ответ #9 : 27 Август 2018, 13:36:34 »
во вложении карта, которая у меня получилась при конвертации в cycles, а по ссылке сам файл с примером https://yadi.sk/d/C5jOPcIV3aSKnX

там два объекта - Plane для конвертации и Plane.001 для для модификатора Displace
схема конвертации очень простая от узла Image выход color расщепляется узлам Separate HSV на компоненты, а компонента H конвертируется в высоту по формуле Высота = 1-H*2

Спасибо большое. Оказывается и без фотошопа можно было обойтись. Не слишком силён в нодах пока ещё))

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Создание трехмерной карты по картинке
« Ответ #10 : 31 Август 2018, 01:53:49 »
... если речь идёт только о визуализации и не требуется построение честной полисетки, то можно воспользоваться фичей True Displacement
http://blender-3d.ru/forum/index.php/topic,2009.msg28306.html#msg28306 ...

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

файл с примером https://yadi.sk/d/gq6kWg8H3aiMDc

https://content-6.foto.my.mail.ru/mail/unixinfo/906/b-988.png

настройки для true displacement https://blender.stackexchange.com/questions/50440/getting-experimental-true-displacement-to-work

ещё по теме
Material Displacement: https://docs.blender.org/manual/en/dev/render/cycles/materials/displacement.html
Vector Displacement: https://docs.blender.org/manual/en/dev/render/cycles/nodes/types/vector/vector_displacement.html
Adaptive Subdivision: https://docs.blender.org/manual/en/dev/render/cycles/settings/objects/adaptive_subsurf.html
« Последнее редактирование: 31 Август 2018, 02:17:09 от Николай Николаев »

Оффлайн romkas27

  • Житель
Re: Создание трехмерной карты по картинке
« Ответ #11 : 03 Сентябрь 2018, 02:39:06 »
Вот то, что нужно. Ещё раз большое спасибо  8)

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 64
Автор: LEXA ANЭGROWND
blender.png
Скачано: 74
Автор: ipv2007
4.png
Скачано: 96
Автор: hiroyukiss
2.png
Скачано: 119
Автор: hiroyukiss

Скачано: 109
Автор: Dilifa12