LINUX.ORG.RU

3D рисовалка множества шариков а-ля молекулярная динамика?

 , ,


0

2

Сабж. Нужна утилитка которая принимает массив шариков (x,y,z центра, радиус, сорт/цвет) и рисует их в 3D при помощи OpenGL. Шарики неподвижны, связей между ними нет, они не пересекаются, то есть это проще чем визуализация молекулярной динамики.

Шариков может быть много (10^6). Нужно что бы сцену можно было крутить мышью/стрелками, менять масштаб и двигать плоскости отсечения.

Она должны быть простой в установке (с минимумом зависимостей) и с примитивным текстовым входным форматом.

Если это библиотека, то нужно что бы она была простая как табуретка в использовании (три строки кода) и с питоньим интерфейсом.

Есть вообще в природе такое?;-)

★★★★

Последнее исправление: AntonI (всего исправлений: 1)

Ответ на: комментарий от thunar

Чо то pyqt тащить не очень хочется.

Неужто никто не слабал примитивную утилиту для такой задачи?

AntonI ★★★★
() автор топика
Ответ на: комментарий от Bagrov

Веб мне чужд, но про WebGL я нагуглил и задумался…

AntonI ★★★★
() автор топика
Ответ на: комментарий от thunar

Поставил аптом python-vispy, этот пример не запускается

INFO: Could not import backend "PyQt4":
No module named PyQt4
INFO: Could not import backend "PyQt5":
cannot import name QtOpenGL
INFO: Could not import backend "PySide":
No module named PySide
INFO: Could not import backend "Pyglet":
No module named pyglet
INFO: Could not import backend "Glfw":
GLFW library not found
INFO: Could not import backend "SDL2":
No module named sdl2
Traceback (most recent call last):
  File "vispy-sample.py", line 164, in <module>
    c = Canvas()
  File "vispy-sample.py", line 121, in __init__
    keys='interactive')
  File "/usr/lib/python2.7/dist-packages/vispy/app/canvas.py", line 206, in __init__
    self.set_current()
  File "/usr/lib/python2.7/dist-packages/vispy/app/canvas.py", line 406, in set_current
    self._backend._vispy_set_current()
  File "/usr/lib/python2.7/dist-packages/vispy/app/backends/_wx.py", line 294, in _vispy_set_current
    self.SetCurrent(self._gl_context)
  File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/glcanvas.py", line 140, in SetCurrent
    return _glcanvas.GLCanvas_SetCurrent(*args)
wx._core.PyAssertionError: C++ assertion "IsShown()" failed at ../src/common/glcmn.cpp(59) in SetCurrent(): can't make hidden GL canvas current

Главное что pyqt5 у меня стоит. Пойду спать.

AntonI ★★★★
() автор топика
Ответ на: комментарий от AntonI

На 2.7 даже не пробовал, на тройке у меня работает.

thunar ★★★★★
()
Ответ на: комментарий от AntonI

Чо то pyqt тащить не очень хочется.

вот это правильно

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от happycorsair

Там очень сложно ставить что либо, даже аптом.

Поэтому webgl кажется таким привлекательным

AntonI ★★★★
() автор топика
Ответ на: комментарий от monk

VTK там уже развернут, но я бы не назвал его простым. Это все чудовищно избыточно

AntonI ★★★★
() автор топика

А может проще использовать какой-то Godot engine? Он и представляет из себя один файл, и всё что вы хотите сделать можно довольно легко, и CSG плоскости отсечения там есть.

OpenMind ★★★★
()
Ответ на: комментарий от OpenMind

Может быть, но я никогда с ним не работал. А мне бы хотелось найти решение которое потребовало бы от меня написания нескольких строчек кода и все.

AntonI ★★★★
() автор топика
Последнее исправление: AntonI (всего исправлений: 1)
Ответ на: комментарий от AntonI

Там и будет несколько строчек кода. Оно очень простое и похоже на питон.

OpenMind ★★★★
()

Open Scene Graph

Биндинг - PyOSG (не знаю, насколько он живой сейчас)

eagleivg ★★★★★
()

У меня есть схожая задачка - интерактивно в 2D отобразить 10^5 статических векторов. В 3D там перейти будет просто, миллион объектов тоже потянет, формат поменять несложно, питоний интерфейс тоже прикрутить можно (приложение на D). Мне будет не сложно помочь, если интересно.

yetanother ★★
()
Ответ на: комментарий от yetanother

Ок. Я сейчас немного придавлен заявкой на грант, давайте глянем на след неделе что получается.

Коллеги пока мутят vtk

AntonI ★★★★
() автор топика
Ответ на: комментарий от AntonI

Я тоже к нему присматривался. Но помимо того, что он монструозный, мне нужно работать с временными сериями, а авторы vtk признались, что он с ними не очень хорошо работает и вроде как собирались переписывать его для их поддержки, пришлось писать свой велосипед.

yetanother ★★
()
Ответ на: комментарий от yetanother

У меня есть схожая задачка - интерактивно в 2D отобразить 10^5 статических векторов.

Пару лет назад надо было где-то до нескольких сотен тысяч отрезков с целочисленными координатами (в составе ломаных линий) изобразить так, чтобы можно было подвигать/помасштабировать. Данные из самодельного текстового формата. Подумал, а не попробовать ли быстренько на HTML Canvas 2D с vanilla JavaScript прототип сделать. Производительности оказалось достаточно. Дописывать вторую версию на си с GTK3 и cairo так пока и не понадобилось, т.к. разница в скорости на глаз не заметна.

gag ★★★★★
()

Шариков может быть много (10^6)

с примитивным текстовым входным форматом

Я правильно понимаю, что «принимает массив шариков (x,y,z центра, радиус, сорт/цвет)», не через argv, а через std::cin всё же?

Есть вообще в природе такое?;-)

Могу написать ^-^

robus ★★★★★
()
Последнее исправление: robus (всего исправлений: 1)
Ответ на: комментарий от robus

не через argv, а через std::cin всё же?

Скорее читает из файла. Или, ели это библиотека, получает массив структур.

Могу написать ^-^

Я тоже могу, но мне лень/некогда;-(

AntonI ★★★★
() автор топика
Ответ на: комментарий от gag

Так если работает, зачем еще что-то делать.

У меня задача посложнее, мне нужно не просто вывести вектора, но и при необходимости исследовать дополнительные характеристики конкретного вектора в виде popup менюшки плюс сводная характеристика всех объектов в отдельном окне. Поэтому я все еще продолжаю (в фоновом режиме, очень фоновом) работать над этой утилитой.

yetanother ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.