Render.ru

Вопрос для профи - карта высот

Seminarist

Активный участник
Рейтинг
5
#1
По роду деятельности столкнулся с вопросом: как сделать карту высот.
Чтоб было понятно: 1 - модель, -> 2 - карта высот, -> 3 - барельеф (то что получаем в материале).
Решение есть в виде Stereographic Suite и плагина для Blendera/Maxa, но: 1 - хочется получить результат в Realsoft "без посредников" :), 2 - приходится увеличивать количество полигонов на порядки (т.е. дальнейшее редактирование становится невозможным).
Я уверен, что с помощью Post Image Effects это в один клик делается, но слабое знание VSL ставит меня тупик. Кроме рентгеновского изображения ничего не получается :).
Кто знает помогите, плз. Очень надо.
 

Вложения

__yra

Активный участник
Рейтинг
10
#2
Выкладываю тестовую сцену, карту высот и видео. В качестве примера куб (6 граней) в режиме сабдивной поверхности. http://us.ua/1384158/
 

Seminarist

Активный участник
Рейтинг
5
#3
Плохо объяснил...
Про Colormap написано в мануале, там все понятно.
Есть моделька (рисунок 1). Нужно получить карту высот (картинку 2) при рендере этой модельки в виде растрового изображения в черно белых тонах для того, чтобы этот растр вставить в другую программу, которая на станке мне вырежет по этому ратстру барельеф, например, из латуни (рисунок 3).
Поэтому я и говорил про постобработку. Не могу разобраться, какие каналы на входе и выходе должны быть. Хотя бы примерчик маленький, там разберусь...
Спасибо.
 

__yra

Активный участник
Рейтинг
10
#4
Тут есть нюанс, по сути дела ты хочешь получить дистанцию от каждой видимой точки поверхности модели до камеры. Но для барельефа это не лучший вариант потому, что например ствол танка явно должен выходить за плоскость барельефа и тогда это скорее будет скульптура. Мне кажется. что для барельефа удобнее использовать изображение полученное при рендеринге обычного АО. Для сравнения картинки с визуализацией первого варианта (дистанции от поверхности до камеры) и вариант с АО. http://us.ua/1384718/ тут сцена с шейдером для 1 варианта.
 

Вложения

Seminarist

Активный участник
Рейтинг
5
#5
На первый взгляд, да, вариант с АО выглядит привлекательнее - границы более четкие, видно больше элементов, но... программа считает иначе :) Я взял твои картинки, и вот что получилось. 1 - hm, 2 - ao. Это если посмотреть рыбине снизу в брюхо :) Разница очевидна. Но на поверхности рельефа растр с АО несомненно выигрывает. Так, что буду комбинировать.

Блин!... файл не могу открыть - программа вылетает. У меня стоит v.6 х 64, можно ли как-нибудь адаптировать файлик.

СПАСИБО!
 

Вложения

Seminarist

Активный участник
Рейтинг
5
#7
Еще раз ОГОМНОЕ СПАСИБО. То, что надо. От ЧПУ-шников низкий поклон.
И если не затруднит, за что каждый node отвечает, а то я как мартышка и очко: тыркаю параметры - картинка меняется. Хотелось бы, чтобы этот процесс осознанным был, т.к., если рендерить с ракурса и с перспективой нужный эффект улетучивается, и необходимо что-то где-то подкрутить и в какую сторону непонятно.
Спасибо.
 

__yra

Активный участник
Рейтинг
10
#8
Создаётся глобальная переменная - FLOAT Var115 типа (Float)
В шейдере поверхности:
1п. - в переменную копируется значение дистанции от поверхности до камеры Var115=Copy(Distance);
2п. - учитывая, что средняя величина дистанции значительно больше чем величина дельты между максимальной и минимальной дистанцией (яркий пример дельта дистанции на чешуе) следующие 2 действия просто растягивают дельту, как именно это исполнить это уже на вкус конкретного пользователя;
3п. - далее Var115=Curve(Var115) кривая инвертирует значение и немного его корректирует по диапазону;
4п. - после этого в шейдере финальной обработки копирую значение из "обработанной" переменной в канал яркости.

Для точного отображения результата значение Flashlight камеры устанавливаю в 0, то есть убираю подсветку сцены по умолчанию.

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

Вроде всё описал :)
 

Seminarist

Активный участник
Рейтинг
5
#9
Парадокс: когда читаешь разжёванное и смотришь на картинку - вроде всё понятно, а как начинаешь сам лепить, то оказывается руки-то произрастают совсем из непривычного (или неприличного) места :)))
Ещё раз спасибо.
 

__yra

Активный участник
Рейтинг
10
#10
Вопрос оказался интересным :) и поэтому я на выходных ещё немножко покопался.... Результат тут http://us.ua/1386900/
Идея в том, что бы выставлять модель в 1,5 единиц дистанции от камеры (параметр Focus в свойствах камеры), таким образом что бы дельта дистанции всегда была меньше 1.
Тогда используя оператор modulo by 1 отсекаем бесполезную целую часть значения Distance и уже работаем только с ней.
Для примера специально взял модель сильно разнесённую в пространстве.
 

Вложения

Максим Илюхин 128942

Пользователь сайта
Рейтинг
2
#11
Подскажите ,а данный шейдер для макса подходит? Тоже ищу способ получения карты высот, устраивает с расстоянием до камеры. Как его установить?
 

__yra

Активный участник
Рейтинг
10
#12
Этот шейдер написан в редакторе визуального программирования материалов самого пакета Realsoft 3D, и сохранён в его же формате, поэтому буквально загрузить его в другой 3D пакет нельзя. Но сам принцип вполне универсальный.
 

__yra

Активный участник
Рейтинг
10
#14
Обрати внимание на значение Flashlight, это внешний свет, выставь его в 0
 

__yra

Активный участник
Рейтинг
10
#15
Можешь вместо модели подставить болванку похожую по форме и размерам и выложи сцену. (камеру не забудь)
 

__yra

Активный участник
Рейтинг
10
#18
Нужно было модель поставить как раз на расстояние указанное в Focus. Пробуй.
http://us.ua/1389799/
 

Вложения

Seminarist

Активный участник
Рейтинг
5
#19
Чего-то я не соображу как это технически делается.
Есть моделька, я создаю камеру, включаю трекинг, выбираю нужный ракурс и .... начинаю тупо зажав shift+ctrl мышой "ловить момент". И что-то мне подсказывает, что это ни фига не правильно. Я понимаю, можно задать расстояние между объектами, тогда 1,5 (значение фокуса) это какие единицы? Метры?
 

__yra

Активный участник
Рейтинг
10
#20
Я делаю так: выставляю модель под нужным углом, потом создаю камеру (по умолчанию создаваемая камера всегда совпадает с текущим просмотровым окном), захожу в свойства камеры и выставляю нужное значение, переключаюсь на вид с боку, что бы увидеть взаимоположение модели и камеры, если не совпадает с фокусом камеры я придвигаю или отодвигаю камеру за направляющую Z(синего цвета) она совпадает с осью камеры, перехожу в окно вида из камеры и включаю "таргет", а после этого зуммирую камеру до нужного вида.
 
Сверху