Pivy/ru

Введение
Pivy - это библиотека привязок Python для Coin3D, библиотеки 3D-рендеринга, используемой в FreeCAD для отображения вещей в трёхмерный вид. При импорте в работающий интерпретатор Python Pivy позволяет напрямую взаимодействовать с любым работающим графом сцен Coin, таким, как трёхмерный вид FreeCAD, или даже создавать новые. Pivy не требуется для компиляции FreeCAD, но требуется во время выполнения при запуске основанных на Python верстаков, которые создают фигуры на экране, такие как Draft и Arch. Из-за этого Pivy обычно устанавливается при установке дистрибутива FreeCAD.

When imported in a running Python interpreter, Pivy allows us to communicate directly with any running Coin scenegraph, such as the 3D view, or even to create new ones. Pivy is not required to compile FreeCAD, but it is required at runtime when running Python-based workbenches that create shapes on screen, like Draft and Arch. Because of this, Pivy is normally installed when installing a distribution of FreeCAD.

Библиотека Coin разделена на несколько частей, собственно Coin, для управления графами сцен и привязки к различным GUI системам, таким как Windows или Qt. Если эти модули присутствуют в системе, они также доступны для Pivy. Модуль Coin всегда присутствует, и это то что мы будем использовать в любом случае, поэтому мы не должны заботится о привязках нашего трёхмерного отображения к различным интерфейсам, что уже сделано в FreeCAD. Все что вам нужно, так это сделать это:

Древо сцены
Мы видели на странице Scenegraph, как организована типичная сцена Coin. Все что появляется в трехмерный вид - это граф сцен Coin, организованный так же. У нас есть один корневой узел, и все объекты на экране его потомки.

FreeCAD обладает простым способом получит доступ к корневому узлу(вершине) древа сцена 3D вида:

Это вернет корневой узел:

Мы сразу же можем просмотреть потомков, нашей сцены:

Некоторые из этих узлов, такие как ноды или, также могут обладать потомками. Полный список доступных объектов Сoin можно найти в официальной документации Сoin.

Давайте, сейчас, попробуем добавить что-нибудь в наше древо сцены. Мы добавим милейший красный куб:

Теперь попробуем следующее:

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

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

Чтобы переместить наш куб, мы можем теперь сделать:

Наконец удалим что-нибудь, введя:

Обратные вызовы
Функция обратного вызова это система, позволяет библиотекам вроде нашей библиотеки Coin, возвращать вызов, то есть возможность вызова определенных функций с вашего запущенного объекта Python. Таким образом Coin может сообщить вам, что на сцене произошло конкретное событие. Coin может наблюдать за множеством различных вещей, таких как положение курсора, нажатия клавиши мыши, нажатые клавиши клавиатуры, и многое другое.

FreeCAD способен легко использовать такие функции обратного вызова:

Функция обратного вызова, должна быть инициализирована объектом, потому что объект должен по прежнему работать, когда случатся обратные вызовы. Смотри также полный список возможных событий и их параметров, или официальную документацию Coin.

Документация
К сожалению, Pivy не обладает собственной документацией. Однако, так как это оболочка библиотекиCoin, вы можете читать справку по C++. В этом случает Вам нужно лишь переводить стиль наименования классов C++ в стиль Python.

В C++:

В Pivy:


 * Coin3D homepage.
 * Pivy homepage.
 * Coin3D wiki, at GitHub.
 * Coin3D wiki documentation, at GitHub.
 * Coin3D Documentation, latest automatically generated Doxygen documentation.
 * (Open)Inventor Mentor - recommended.

Older
These links provide reference documentation for Coin v3.x. The differences with v4.x are minimal, so they may still be useful.


 * Coin3D Documentation, at BitBucket.
 * Coin3D Documentation, at University of Colorado.
 * Open Inventor Reference Documentation, by MeVisLab.