Scenegraph/ru: Difference between revisions
No edit summary |
No edit summary |
||
Line 19: | Line 19: | ||
рисунок с сайта [http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html Inventor mentor] |
рисунок с сайта [http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html Inventor mentor] |
||
Дерево сцен openInventor описывает все части |
Дерево сцен в openInventor описывает все части трёхмерной сцены, такие как геометрия, цвета, материалы, освещение, и т.д. и организует все эти данные в удобной и четкой структуре. Все что угодно может быть сгруппировано в субструктуры, позволяя вам организовывать содержание вашей сцены тем способом, который вам нравится. Вот пример файла в формате openInventor: |
||
{{Code|code= |
{{Code|code= |
||
#Inventor V2.0 ascii |
#Inventor V2.0 ascii |
Revision as of 08:40, 11 May 2020
Введение
Геометрия которая появляется в трёхмерных видах FreeCAD, получается с помощью библиотек Coin3d. Coin3D это реализация стандарта OpenInventor. OpenCascade тоже поддерживает схожую функциональность, но при создании FreeCAD было решено не использовать встроенный в openCascade просмотрщик и скорее перейти на более производительный coin3D. Для изучения этой библиотеки рекомендуется книга Open Inventor Mentor.
OpenInventor на самом деле язык описания 3D сцены. Сцена, описанная в openInventor, затем отрисовывается OpenGL на вашем экране. Об этом заботится Coin3D, поэтому программисту не надо иметь дело со сложными вызовами OpenGL, он может просто предоставить корректный (работающий) код OpenInventor. Большим преимуществом является то, что openInventor это широко известный и хорошо задокументированный стандарт.
Одну из главных работ, которую FreeCAD делает за вас, это перевод информации о геометрии OpenCascade в формат языка OpenInventor.
OpenInventor записывает трехмерную сцену в форме древа сцен, как показано ниже:
рисунок с сайта Inventor mentor
Дерево сцен в openInventor описывает все части трёхмерной сцены, такие как геометрия, цвета, материалы, освещение, и т.д. и организует все эти данные в удобной и четкой структуре. Все что угодно может быть сгруппировано в субструктуры, позволяя вам организовывать содержание вашей сцены тем способом, который вам нравится. Вот пример файла в формате openInventor:
#Inventor V2.0 ascii
Separator {
RotationXYZ {
axis Z
angle 0
}
Transform {
translation 0 0 0.5
}
Separator {
Material {
diffuseColor 0.05 0.05 0.05
}
Transform {
rotation 1 0 0 1.5708
scaleFactor 0.2 0.5 0.2
}
Cylinder {
}
}
}
Как вы можете видеть, его структура проста. Вы используете разделители(separator) организуя ваши данные в блоки, это немного похоже на то как вы организуете ваши файлы в папках. Каждый оператор влияет на то что будет дальше, например, первые два пункта в ваншем корневом разделителе это поворот и перенос(трансляция), как они повлияют на следующий элемент, котоорый тоже является резделителем. В этом сепараторе, материал определяется, и другого преобразования. Поэтому наш цилиндр будет подвержин обеим трансормациям, то что было применено непосредственно к нем, так и то что было применено к родительскому разделителю.
Мы также обладаем множество элементов других типов , для организации нашей сцены, таких как группы, переключатели и анотации.Мы можем задать очень сложные материалы для ваших объектов, с цветом, текстурой, теневыми режимами и прозрачностью. Мы также можем задать освещение, камеры, и даже движение. Можно даже встроить кусочки сценариев в openInventor файлы, для задания более сложного поведения.
Если вы заинтересованы в получении дополнительной информации о openInventor, отпраляйтесь напрямую к самому известному руководству Inventor mentor.
В FreeCAD, как правило. не нужно напрямую взаимодействовать с древом сцен openInventor. Каждый объект в документе FreeCAD, будь то полигональная модель (mesh), форма детали, или что-нибудь ещё, автоматически преобразуется в код OpenInventor и вставляется в основное дерево сцен, которое вы видите в окне трёхмерного просмотра. Это древо сцен непрерывно обновляется, когда вы делает изменения, добавляете или удаляете объекты из документа. В самом деле каждый объект (в пространстве App) обладает поставщиком визуального отображения (соответствующий объект в пространстве Gui), ответственного за выдачу кода OpenInventor.
Но есть множество преимуществ, которые будут возможны при прямом доступе. Например, мы временно можем изменить внешний вид объекты, или мы можем добавить в сцену объекты, которые не обладают реальным представлением в документе FreeCAD, такие как геометрия построений, помощники, графические подсказки или инструменты , такие как манипуляторы или отображающаяся на экране информация.
FreeCAD обладает несколькими инструментами для просмотра и изменения openInventor кода. На пример, нижеследующий код на python отобразит openInventor представление выбранного объекта:
obj = FreeCAD.ActiveDocument.ActiveObject
viewprovider = obj.ViewObject
print viewprovider.toString()
А также мы обладаем модулем python открывает полный доступ к управлению чем угодно в Coin3D, такому как ваше дерево сцен в FreeCAD. Также читайте об этом на странице Pivy.
![](/images/thumb/9/94/User_hub.png/24px-User_hub.png)
- Начинающим
- Установка: Загрузка, Windows, Linux, Mac, Дополнительных компонентов, Docker, AppImage, Ubuntu Snap
- Базовая: О FreeCAD, Интерфейс, Навигация мыши, Методы выделения, Имя объекта, Настройки, Верстаки, Структура документа, Свойства, Помоги FreeCAD, Пожертвования
- Помощь: Учебники, Видео учебники
- Верстаки: Std Base, Arch, Assembly, CAM, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test Framework