Резюме.
Мне была нужна возможность быстро генерировать текстуру из карты высот. Карта высот по сути является изображением в оттенках серого. Если вы представите, что каждое значение "пикселя" представляет собой значение "z" для вершины в сетке, то сможете представить, как применяются эти значения z, и в результате вы получите сетку, преобразованную в "ландшафт".
Эта штука - всего лишь дальнейшее усовершенствование техники в OpenScad.
Хотя я демонстрирую эту технику, применяя её к тому, что выглядит как пейзаж, я также применил её и к рендерингу шрифтов. Есть несколько способов работы с шрифтами в OpenScad. Один из них - использовать "битмап" и, по сути, выполнять картографирование высоты, представляя каждый пиксель в виде куба.
Другой метод заключается в использовании информации о шрифте и использовании контуров для фактического рисования многоугольников и их линейного выдавливания () с помощью функции linear_extrude
Однако третий способ заключается в использовании инструмента для экспорта контуров шрифта в файл .dxf, а затем загрузки их оттуда с помощью команды linear_extrude.
Что вы можете сделать здесь, так это взять шрифт, сгенерировать градационные изображения каждого символа в формате, который по сути является кодом OpenScad. Затем примените эти изображения к сетке, как в случае с ландшафтом, и у вас будут экструдированные шрифты!
Замечательная вещь в этой обобщённой технике заключается в том, что вы можете использовать её для чего угодно. Эта процедура даёт вам абсолютный контроль над размером и разрешением. Так, например, используя то же базовое изображение в сером цвете, вы можете напечатать его размером 48 на 48 миллиметров с разрешением 4 граней на миллиметр. Это было бы з
Здесь представленные фотографии демонстрируют, как эта техника применяется как к ландшафту, так и к персонажам.
Есть два алгоритма, которые можно найти в файле MeshRenderer.scad:
Shell_extrude_height_map() - используется, когда информация о карте высот представлена в виде единичных значений.
Shell_extrude_color_map() - Для использования, когда информация вашей карты высот все еще в оттенках серого, но представлена в виде триплетов.
О да, и один из параметров этой рутины: solid=true.
Это означает, что, пока вы создаёте прототип, вы можете сказать 'solid=false', и он просто создаст поверхность из полигонов. Затем, когда вы закончите экспериментировать, вы можете сказать 'solid=true', и вы получите правильную твёрдую поверхность с двумя измерениями, после чего вы сможете нажать 'F6' и пойти погулять.
Я знаю, это много слов, но посмотрите на эти красивые картинки!! На рендеринг горного пейзажа с разрешением 64x64 ушло 5 часов. На 48x48 потребовалось около 1,5 часов.
ПРИМЕЧАНИЕ: Хотя я могу легко генерировать отдельные символы, используя эту технику, генерация их в массовом количестве, как показано на картинке, имеет некоторые проблемы. Структура оказывается не двумерной. Я планирую улучшить общие аспекты обработки текста позже. Однако основная техника картографирования высоты останется прежней