сохранение геометрии в postgis из blender

#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 .