Генерация видео или изображений геометрических объектов из данных - PullRequest
1 голос
/ 01 мая 2010

Я работаю над проектом курса, чтобы предсказать скорость и положение планет Солнечной системы (и других объектов). Было бы здорово, если бы я мог визуализировать данные прогнозируемых объектов, если бы можно было генерировать трехмерные изображения, если в видео это было удивительно. Знаете ли вы какую-либо библиотеку, которая позволяет мне использовать эти данные для создания изображения или видео? (Мне все равно, на каком языке)

Данные:
- шаг имитации (шаг временной шкалы для видео)
- позиции объектов
- радиус и / или цвета объектов

Заранее спасибо, любые предложения приветствуются.

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

Есть несколько подходов, которые я использовал (все через Python) для этого типа визуализации:

VPython очень прост в освоении, и вы сможете получить динамическую 3D-визуализацию планет, вращающихся вокруг Солнца за считанные минуты. Также есть материалы, помогающие снимать фильмы, но я ими не пользовался.

Можно также просто использовать OpenGL напрямую, например, с помощью PyOpenGL в окне wxPython или, например, PyGlet . Этот подход немного более прост, чем VPython, и, вероятно, займет больше времени, и я знаю, что делать фильмы можно только через скриншоты и т. Д.

VTK - очень впечатляющая библиотека трехмерной визуализации, но ее гораздо сложнее освоить. VTK, как и все остальные, будет выполнять динамическую визуализацию «из коробки», и это единственный модуль, который имеет встроенный модуль для создания изображений и фильмов. Это, однако, гораздо более сложная библиотека, но если вы хотите, чтобы планеты, вращающиеся вокруг звезды, с контурным графиком газового облака, в разгар ионной бури в векторном поле, ВТК может это сделать. Также есть MayaVi , который делает VTK немного более доступным и интерактивным.

1 голос
/ 03 мая 2010

У меня есть очень грубая идея, которая может быть полезной в качестве отправной точки, хотя для того, чтобы выглядеть должным образом профессионально, нужно было бы немного доработать. Дают ли ваши данные положение каждой планеты в космосе в данный момент времени? Если это так, вы можете:

1) Проецируйте ваши данные о местоположении в двухмерное пространство, если они изначально были трехмерными (что позволяет использовать двумерные методы для представления данных, которые по-прежнему выглядят так, как будто они отображаются в трехмерном виде на экране)

2) Результатом должна стать серия двумерных матриц, хранящих местоположение ваших планет. Пусть матричные элементы будут 1, если они соответствуют местоположению планеты, и пусть они будут 0 в противном случае. (Если бы вы строили матрицу, она выглядела бы как горсть белых точек на черном фоне.)

3) Используйте морфологическое расширение, чтобы взять каждую точку положения и установить значения их соседей равными 1 вместо 0, чтобы при построении графика вы получили набор белых объектов в форме диска, центрированных по точкам из шага ( 2).

4) Используйте программу для записи каждой матрицы из (3) в файл изображения и поместите их в общую папку.

5) Во время выполнения используйте другую программу, чтобы импортировать каждое изображение из папки по одному, отображая их на экране в том же окне рисунка. Результатом должно быть то, что каждое изображение, представляющее планеты в момент времени t, заменяет изображение для времени (t-1). Это должно выглядеть оптически, как если бы в этом окне воспроизводился видеофайл.

Конечным результатом будет демонстрация фильма с белыми кругами на орбите на черном фоне. Это было бы полезно?

...