#postgis #blender #wkt #polyhedra
#postgis #блендер #wkt #многогранники
Вопрос:
Допустим, у меня есть куб или более сложный замкнутый триангулированный объект в Blender, как я смогу сохранить это в postgis?
Postgis сохраняет 3D-геометрию с помощью общеизвестного текста (wkt) в виде многогранника или tin. Есть ли какой-либо способ получить объект blender в postgis?
Ответ №1:
Вы считываете данные blenders и создаете инструкции insert для postgresql. Поскольку blender содержит интерпретатор python, вы можете запустить скрипт python в blender, который отправляет данные в postgresql.
Первым шагом является установка модуля python postgresql, такого как psycopg, который можно использовать в blender. Для этого есть несколько вариантов, включая добавление пути к sys.path
.
Как только вы сможете запустить скрипт python в blender, который может взаимодействовать с сервером postgresql, прочитайте данные сетки blenders для генерации инструкций insert.
pg_insert = 'INSERT INTO mytable (v_loc) VALUES ('
for v in obj.data.vertices:
pg_insert = 'POINT({} {} {}),'.format(v.co.x, v.co.y, v.co.z)
pg_insert = ');'
Комментарии:
1. Я понимаю, что вы там сделали, но это приведет к сохранению вершин, что приятно, но не многогранника, который я искал. У меня есть список вершин и список треугольников (граней) в python, но это не многогранник.
2. @GaryNobles хотя язык sql упрощен, вы можете взять список вершин и полигонов и использовать его для определения
POLYHEDRALSURFACE
данных, которые хранятся в одном поле. Поскольку многогранник — это целостный объект из нескольких полигонов, вы бы использовали весь список полигонов для создания данных поверхности. Каждый элемент полигона в blender имеет список индексов вершин —v_idx = obj.data.polygons[f].vertices[v] v_loc = obj.data.vertices[v_idx].co
.