3D графика в ноутбуке Jupyter (ipynb)

2

Я ищу наиболее удобный способ как вставить 3D-графику в ноутбук ipython (Jupyter)? Я имею в виду простую трехмерную модель машин (в моем случае космические корабли), в основном состоящую из простых примитивов, например, таких как CAD

Что я хочу:

  • люди, которые читают блокнот, могут интерактивно вращать модель
  • Модель либо загружается из файла, либо напрямую генерируется из исходного кода Python (или другого)
  • Модель может быть легко составлена ​​из простых примитивов (линий, конусов, цилиндров, сферы ...) в коде
  • то, что не требует нестандартных и сложных в установке зависимостей, так что любой может легко запустить ноутбук на этом компьютере

Возможное решение, которое я нашел до сих пор (и проблемы):

  • Интеграция с FreeCAD IPython (просто предложение, похоже, не закончено)
  • three.js - но у меня нет опыта ни с Javascript, ни с его интеграцией в IPython , поэтому я бы предпочел какое-то решение на python
    • seen.js, кажется, именно то, что я хочу, но опять-таки это javascript
  • Plot.ly - это для визуализации данных, а не для визуализации 3D моделей
  • PyOpenGL - слишком низкий уровень, и я не уверен, насколько хорошо он работает в веб-браузере и Jupyter - я не нашел ни одного примера
  • POVray - не интерактивный, интеграция с IPython будет громоздкой (вызов внешнего рендера и загрузка получающегося изображения)
Прокоп Хапала
источник

Ответы:

2

Я бы порекомендовал использовать PyVista с itkwidgets .

Проверьте следующий пример.

import pyvista
from pyvista import examples
from itkwidgets import view
dataset = examples.load_uniform()
dataset
view(dataset, slicing_planes=True, ui_collapsed=True, shadow=False)

Это дает вам следующий результат.

введите описание изображения здесь

nicoguaro
источник
Хорошо, это швы очень хороши для трехмерных графиков данных. Но если я хочу визуализировать что-то еще - например, полигональную сетку (что-то вроде p3d.in )?
Прокоп Хапала
@ProkopHapala Это просто, поскольку использует VTK.
Никогуаро